кастомный checkbox
Вложений: 2
дизайнер надизайнил кастомній чекбокс
(во вложении для наглядности) как это реализовать грамотно? |
torsar,
почитай http://www.xiper.net/collect/html-an...-checkbox.html |
В современных браузерах можно обойтись css:
<style> input[type="checkbox"] { display: none; } input[type="checkbox"] + label{ display: inline-block; width: 38px; height: 32px; background-image: url(http://javascript.ru/forum/attachments/xhtml-html-css/1727d1366998566-kastomnyjj-checkbox-checkbox_blue_empty-png); } input[type="checkbox"]:checked + label{ background-image: url(http://javascript.ru/forum/attachments/xhtml-html-css/1726d1366998566-kastomnyjj-checkbox-checkbox_blue_selected-png); } </style> <input type="checkbox" id="checkbox1"><label for="checkbox1"></label> Только картинки естественно спрайтом делать надо. |
Могу сказать как я у себя делал чекбоксы.
Вообщем, есть иконка галочки: ![]() И есть пустое однопиксельное-прозрачное gif изображение. Вот сам стиль для рамки checkbox'а: .checkbox {border:1px solid #626262; width:16px; height:16px; opacity:0.8; background:#303030;} .checkbox:not([alt="2"]):hover {cursor:pointer; opacity:1;} .checkbox[alt="1"], .checkbox[alt="2"] {background-image: url('ссылка на изобрежние галочки');} .checkbox[alt="2"] {opacity:0.5;} А вот уже сам код JavaScript (jQuery): $('.checkbox').click(function() { var a = $(this).attr('alt'); if(a != 2) $(this).attr('alt', a == 1 ? 0 : 1); }); Или альтернативный вариант (не jQuery): function checkBox(a) { if(a.alt != 2) a.alt = a.alt ? 0 : 1; } window.onload = function() { var a = document.getElementsByClassName('checkbox'), b; for(b=0; b<a.length; b++) a[b].onclick = function(b) { checkBox(a[b]); } } А вот так вставляем в HTML: Без галочки: <img alt="0" src="пустая картинка.gif" class="checkbox" /> С галочкой: <img alt="1" src="пустая картинка.gif" class="checkbox" /> Disabled: <img alt="2" src="пустая картинка.gif" class="checkbox" /> Вот скрин с моего сайта: ![]() Под форму наверное не подойдёт, я у себя сделал так, потому что использую всегда ajax и просто получаю значение атрибута alt. P.S.: альтернативный код JS не проверял, но работать должен. |
Железный вариант:
<div class="checkbox"> <i></i> <input id="ch0" type="checkbox" name="name" /> <label for="ch0">Лейбл для чекбокса</label> </div> .checkbox{ position:relative; } .checkbox input{ position:absolute; top:0; left:0; width: 38px; height: 32px; -moz-opacity:0 ; filter:alpha(opacity: 0); opacity: 0; -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; } .checkbox i{ display:block; width: 38px; height: 32px; position:absolute; top:0; left:0; backgroung:transparent url('/image/url/example.jpg') no-repeat 0 0; } .checkbox.checked i{ background-position:0 -32px; } .checkbox label{ position:relative; padding:0 0 0 48px; } $('.chackbox').on({ change:function(ev){ var parent = $(ev.delegateTarget); var input = $(ev.target); parent[(input.prop('checked') ? 'addClass' : 'removeClass')]('checked'); } }); |
Цитата:
Это то, с чем у людей ассоциируется однопиксельный gif :) |
Цитата:
|
danik.js,
Хз, никогда так не делаю. Ну его в пень.) |
Часовой пояс GMT +3, время: 06:45. |