Как изменить внешний вид checkbox
04.28.2009 – Рубрика: HTML&CSS
Наверняка многие знают, что такие элементы формы как select, file, checkbox, radio не поддаются стилизации средствами CSS. Но как же быть, если нерадивый дизайнер в макете дизайна нарисовал поле checkbox в форме стилизировным под общий дизайн сайт, а заказчик на отрез не хочет принимать дизайн без формы ввода данных идентичной макету дизайна.
Вот здесь и пригодиться описанный ниже метод. Суть метода состоит в том, что элемент checkbox делается невидимым, но невидимым не простым присвоением display:none, а через свойство opacity:0 (подробней об этом свойстве можно прочитать в заметке «Создание модульного окна с прозрачной подложкой«).
Таким образом, элемент находиться на странице, остается кликабельным, но полностью прозрачный, таким образом, невидимый. А в блоке, в котором находиться checkbox задается бекграунд с картинкой, на которой изображено, как должен выглядеть измененный checkbox и при клике на checkbox скриптом у блока меняется класс стиля, чтоб поменялся бекграунд на картинку с измененным чекбоксом в другом состоянии.
/*---------- Стили классов -----------*/
input {
margin:0;padding:0;
opacity:0;
filter:progid:DXImageTransform.Microsoft.Alpha(opacity=0);
}
.checkboxOn {
background:url(f_logincheckbox_on.png) no-repeat 0 3px;
}
.checkboxOff {
background:url(f_logincheckbox_off.png) no-repeat 0 3px;
}
/*---------- Скрипт изменения класса-----------*/
function logincheckboxCheck () {
if (document.getElementById("checkbox1").checked) {
document.getElementById("checkboxDiv").className="checkboxOn";
}
else {
document.getElementById("checkboxDiv").className="checkboxOff";
}
}
/*---------- Верстка-----------*/
<div id="checkboxDiv" class="checkboxOn">
<input type="checkbox" id="checkbox1" onclick="logincheckboxCheck();" class="checkboxOn" checked="checked"/> <label for="checkbox1">Запомнить меня</label>
</div>
Пример полностью кроссбраузерный. Посмотреть реализация можно по ссылке Пример стилизации Chebox
В дополнение, стоит отметить что картинку чекбокса лучше делать спрайтом из двух картинок чтоб избежать эффекта мерцания при подргрузке картинки.
Геологические инженерные изыскания помогают выявить потенциально опасные моменты строительства, например, коррозийную активность к стали и бетону, что немаловажно при закладке фундамента.
32 Отзывов to “Как изменить внешний вид checkbox”
Оставить отзыв
Последние записи
- DATA:URL – Картинки в документе без дополнительных запросов к серверу
(Вторник, 09. 8. 2009 – 20 отзывов) - Как изменить внешний вид checkbox
(Вторник, 04. 28. 2009 – 32 отзывов) - Как сделать галерею товаров для интернет-магазина
(Пятница, 03. 13. 2009 – 7 отзывов) - Я.ру
(Воскресенье, 03. 8. 2009 – 3 отзывов)
Апрель 28, 2009 в 18:33
Спасибо за способ.
P.S. У тебя на блоге сапы кривая кодировка :Р
Апрель 28, 2009 в 22:43
В избранное
Апрель 28, 2009 в 23:21
имхо розрачность тоже js’ом ставить надо – оставить шанс посетителям с отключеным js..
Апрель 29, 2009 в 0:01
В топку юзеров с отключенным js
Апрель 29, 2009 в 0:13
в топку или нет, не важно – профи всегда найдет способ позаботиться о всех малой кровью.. это как раз тот случай..
Апрель 29, 2009 в 0:20
ну да, вспомните еще про ие5
ведь не исключено, что и его где-то юзают
Апрель 29, 2009 в 0:49
это уже просто не по теме.. если js можно заблокировать практически в любом браузере, firewall’е, проксе и т.п., (причем некоторые так делают, в офисах, напр) + разность используемых разными браузерами версий и спецификаций js + мобильные устройства – очень много «но», то ie > 6 уже просто практически никто не пользуется..
Апрель 29, 2009 в 10:52
2vdorr
Мои контакты на странице http://zodios.net/ob-avtorakh
2Bueno
Дельное замечание. Обратная совместимость конечно важна, но какой процент пользователей серфит с отключенными скриптами? К тому же, мне кажется, тот кто умышлено отключил скрипты догадывается о том что это и какие будут последствия.
Апрель 29, 2009 в 14:40
ну тут можно долго обсуждать, соглашаться, не соглашаться, считать проценты и прочее.. но думаю меньше времени займет просто вписать 2 строчки не в css, а в js и значительно улучшить совместимость.. ))
Май 11, 2009 в 0:37
Олег, сотри коммент Ausima – там ссылку этот сраный спамер припрятал.
Июнь 2, 2009 в 23:27
А что Вы скажете, еси я скажу, что все Ваши посты, не более чем выдумка?
Июнь 30, 2009 в 12:25
Что-то не получается зарегистрироваться у Вас на Блоге. Email не приходит. Проверьте пожалуйста!
Июль 23, 2009 в 21:30
Все класс конечно, но мне например понадобилось, чтобы был не один чекбокс, а три и более. Приципить скрипт ко всем чекбоксам так что бы они все работали у меня не получилось!
Может преределаете пример где чекбоксов будет несколько,а не один. Или напишите, что нужно сделать что бы это работало если на странице несколько чекбоксов.
Июль 30, 2009 в 14:05
Июль 30, 2009 в 14:09
alert(»спасибо за сатью)»);
Август 14, 2009 в 17:51
Ponravilos
Ноябрь 1, 2009 в 17:55
Спасибо большое, но не подскажете какой размер у стандартного checkbox 5х5?
Ноябрь 24, 2009 в 1:19
>>Спасибо большое, но не подскажете какой размер у стандартного checkbox 5х5?
Сделай страницу с обычным checkbox, ее скриншот и померяй
Ноябрь 24, 2009 в 13:26
Не люблю привязку к id
В этом случае можно использовать такую функцию
function checkboxCheck(el)
{
if(el.checked)
el.parentNode.className=’checkboxOn’;
else
el.parentNode.className=’checkboxOff’;
}
Запомнить меня
Март 5, 2010 в 12:44
Весьма простой и полезный метод.
Март 7, 2010 в 2:38
очень классно придумано.
Март 19, 2010 в 1:35
Почему мои комментарии не публикуются кто нибудь мне ответит ???
Май 14, 2010 в 22:39
Полезная вещь, спасибо за пример !!!
Июль 21, 2010 в 8:34
seniors rates hong kong hotels
staples center los angeles ca
singapore hotels
shasta travel trailer parts
southwest airlines online reservations
discounts for budget car rentals
discount flight tickets
discount las vegas hotel rooms
discount air tickets australia
discount boston hotel booking
top gun tom cruise clip
travel trade magazines in poland
train travel in italy
travel south america
travel boat cover
california beach hotels
biloxi mississippi hotels
canadian discount airline tickets
best western park place inn anaheim
best credit card for airline points on mileage
indianapolis airport car rental
lodging in branson missouri
las vegas nevada vacation packages
jacksonville beach hotels
land cruise vacation to alaska
audiovox aftermarket cruise control unit
american asia travel
arizona hotels for sale
auto rental software
american hawaii cruise
hotels in downtown los angeles
hotel discounts disney world
home based travel agents
hotels in san francisco
hotel in charlotte street
holiday inn sunspree panama city beach
holiday inn express tampa
hertz rent a car addresses in uk
gatwick airport car rental
government employee travel opportunities
los angeles airport parking
marathon travel shops
map of downtown chicago hotels
los angeles map
midtown sundries
free india travel pdf
grand canyon vacation packages
grand canyon vacation tours
holiday inn mission bay
french quarter discount hotels
car rental california
cervia hotel italy
car rental in uk
car rentals shannon airport
car rentals new york
double delta airline mileage credit card
disney world park tickets
dog clothes and accessories and travel accessories
discount one way car rentals
discounted cruises to hawaii
vaccinations required for travel to china
walt disney world for travel agents
vacation rentals in michigan
w hotel in san diego
venice italy 4 star hotels
rental cars in spain
rental cars new zealand
rent car in europe
royal star tour deluxe
rental cars denver co
rent a car in france
rental cars in maui
savoy hotel florence italy
royal carribean bermuda cruises
riviera hotel and casino
norwegion cruise
online discount hotel booking
one tree hill tour
new york times square hotels
new world renaissance hotel hong kong
windsor casino hotel
wyndham el conquistador hotel
wyoming travel and tourism
wedding night hotel package philadelphia wilmington
who has the best car rental rates
5 star hotels in rome
airline flight trackers
adoption travel to china
alaska cruise norwegian vancouver via
adobe village graham inn
china tours beijing xian guilin hong kong
choice hotels newcastle
cruise to the end of the world
cruise ship photo
coupons for budget car rental
cheap nyc hotels
cheap hotels downtown chicago
cheap airline ticket to las vegas
cheap hotels in singapore
cheap car rentals ft lauderdale florida
Site Map
Site Map
Site Map
Site Map
Site Map
Site Map
Site Map
Site Map
Site Map
Site Map
Site Map
Site Map
Site Map
Site Map
Site Map
Site Map
Site Map
Site Map
Site Map
Site Map
Site Map
Site Map
Site Map
Site Map
Site Map
Site Map
Site Map
Site Map
Site Map
Site Map
Site Map
Site Map
Site Map
Site Map
Site Map
Site Map
Site Map
Site Map
Site Map
Site Map
Site Map
Site Map
Site Map
Site Map
Site Map
Site Map
Site Map
Site Map
Site Map
Site Map
Site Map
Site Map
Site Map
Site Map
Site Map
Site Map
Site Map
Site Map
Site Map
Site Map
Site Map
Site Map
Site Map
Site Map
Site Map
Site Map
Site Map
Site Map
Site Map
Site Map
Site Map
Site Map
Site Map
Site Map
Site Map
Site Map
Site Map
Site Map
Site Map
Site Map
Site Map
Site Map
Site Map
Site Map
Site Map
Site Map
Site Map
Site Map
Site Map
Site Map
Site Map
Site Map
Site Map
Март 1, 2011 в 9:31
Дибилизм. Если поставить несколько чекбоксов на странице с таким способом, то при нажатии на один чекбокс меняться будут все.
Март 3, 2011 в 16:00
Ничего, что обращение идет по айдишникам элементов?.. Или Вы собрались элементов с одинаковыми айдишниками понатыкать на форму?
Март 21, 2011 в 22:48
Способ действительно очень не плохой, но только в том случае если это касается 1-2 чекбоксов, но если это скажем селкты и т.д. и не один а полный набор то на помощь как всегда приходит JQuery с плагином jqTransform, ему замены я еще не нашел, уж поверьте было дело, делал собственный select и после вопросов заказчика почему он не закрывается при любом крике и т.д. я юзайю только его и это уже готовое отличное решение с неплохой документацией;
Но повторюсь, в случае с 1-2 чекбоксами отличное решение.
Март 24, 2011 в 17:58
А можно обойти как-то:
input {
margin:0;padding:0;
opacity:0;
filter:progid:DXImageTransform.Microsoft.Alpha(opacity=0);
}
?
Выключаются все остальные элементы на странице из-за этого
А их там гора от разных модулей…. не хотелось бы для них отдельно классы прописывать…
Март 24, 2011 в 20:28
А что, прием интересный, для многих вещей такая методика подойдет
Май 12, 2011 в 10:31
To bea:
очень просто решается этот вопрос: в css удаляем
————————————————————
1)input и его настройки которые написанны в этой статье
————————————————————
2)его настройки добавляем уже в фому на сайте таким образом:
style=»margin:0;padding:0;opacity:0;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=0);»
Этот стиль будет применен конкретно к тому ЧекБоксу в которым ты прописал =)
все остальные формы метода Input не будут тронуты)
————————————————————
Ноябрь 30, 2011 в 5:37
чего раскричались? кто мешает привязываться не к ID а к классу, и использовать jQuery, передавая this?
Январь 23, 2012 в 0:56
промышленные роботы : оборудование : техника : книги : www