Флажки, переключатели и выпадающие списки - PullRequest
16 голосов
/ 14 июля 2009

Как мне оформить HTML-флажки, переключатели и выпадающие списки? Или я могу?

Я бы хотел использовать изображение для флажков или радиокнопок, и то же самое для списков - стрелка раскрывающегося списка в большинстве случаев выглядит не очень хорошо.

Ответы [ 11 ]

14 голосов
/ 14 июля 2009

см. Эти 2 ссылки для плагинов jQuery для стилизации и кнопки-переключателя радио:

http://line25.com/articles/jquery-plugins-for-styling-checkbox-radio-buttons

http://www.queness.com/post/204/25-jquery-plugins-that-enhance-and-beautify-html-form-elements

9 голосов
/ 14 июля 2009

Краткий ответ: Вы не можете делать это красиво и последовательно.

Ответ, который вы, возможно, захотите услышать, в зависимости от вашей ситуации: используйте jQuery или что-то подобное, что даст вам множество плагинов на выбор.

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 1 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * '* * * * * * * * *

.
6 голосов
/ 27 декабря 2012

Вы, конечно, можете,

Кнопки

Checkboxes и Radio легко настраиваются с помощью всего лишь css (без js). Реализация (уже упомянутая KunalB выше) включает в себя скрытие ввода и использование метки (с псевдоэлементом before для пользовательского изображения) для запуска ввода

Dropdowns с другой стороны, намного сложнее , и на сегодняшний день нет 100% кросс-браузерного решения pure-css + ... (Вот мой SO ответ для выпадающих меню)

LIVE DEMO для всех 3: переключателей, флажков и выпадающих меню.

Пользовательский флажок

<div>
    <input checked="checked" id="RememberMe" name="RememberMe" type="checkbox">
    <label for="RememberMe">Remember me</label>
</div>

CSS

input[type="checkbox"] {
    display:none;
}

input[type="checkbox"] ~ label {
    display:inline;
    font-size: 18px;
}

input[type="checkbox"] ~ label:before {
    content: '';
    width: 32px;
    height: 32px;
    background: url(http://dl.dropbox.com/u/51558405/unchecked.png) no-repeat;
    display: inline-block;
    cursor: pointer;
    vertical-align: middle;
    margin-right: 3px; /*rtl*/
}

input[type="checkbox"]:checked ~ label:before {
    content: '';
    background: url(http://dl.dropbox.com/u/51558405/checked.png) no-repeat;
}

Пользовательский переключатель

<ul>
    <li>
        <input type="radio" id="radio1" name="radios" checked />
        <label for="radio1">Apples</label>
    </li>
    <li>
        <input type="radio" id="radio2" name="radios" />
        <label for="radio2">Pineapples </label>
    </li>
</ul>

CSS

input[type="radio"] {
    display:none;
}

input[type="radio"] + label {
    display:inline;
    font-size: 18px;
}

input[type="radio"] + label:before {
    content: '';
    display:inline-block;
    width: 32px;
    height: 32px;
    background: url(http://dl.dropbox.com/u/51558405/radio-checked.png) no-repeat;
    vertical-align: middle;
}

input[type="radio"]:checked + label:before {
    content: '';
    background: url(http://dl.dropbox.com/u/51558405/radio-unchecked.png) no-repeat;
}

Custom Dropdown

<!--[if !IE]> --> <div class="notIE"> <!-- <![endif]-->
<label />
<select>
    <option>Apples</option>
    <option selected>Pineapples</option>
    <option>Chocklate</option>
    <option>Pancakes</option>
</select>
<!--[if !IE]> --></div> <!-- <![endif]-->

CSS

label {
    position: relative;
    display: inline-block;
}

select {
    display: inline-block;
    padding: 4px 3px 5px 5px;
    width: 150px;
    outline: none;
    color: #74646e;
    border: 1px solid #C8BFC4;
    border-radius: 4px;
    box-shadow: inset 1px 1px 2px #ddd8dc;
    background-color: #fff;        
}

/* Select arrow styling */
.notIE label:after {
    content: '';
    width: 23px;
    height: 23px;
    position: absolute;
    display: inline-block;
    top: 4px;
    right: 4px;
    background: url(http://www.stackoverflow.com/favicon.ico) no-repeat right center white;
    pointer-events: none;
}
/*target Internet Explorer 9 and Internet Explorer 10:*/
@media screen and (min-width:0\0) { 
    .notIE label:after
    {
        display:none;
    }
}
2 голосов
/ 14 июля 2009

Вы можете стилизовать элементы формы, но трудно (невозможно?) Получить согласованный стиль для браузеров и операционных систем с чистым подходом CSS. Также потребуются некоторые скриптовые манипуляции со стилями.

Это очень хорошая статья, в которой обсуждаются варианты и проблемы: Стилизация элементов управления формы

Listamatic имеет большую коллекцию стилей списка CSS.

2 голосов
/ 14 июля 2009

Я верю, что CSS 3 позволит вам стилизовать эти элементы, но пока это невозможно напрямую.

См. Этот вопрос: Стили ввода CSS-флажка

1 голос
/ 14 июля 2009

Вы не можете поставить изображение в качестве флажка, но вы всегда можете создать свой собственный флажок: D.

Поместите скрытое поле и изображение, добавьте событие «onclick» поверх изображения. Когда срабатывает onclick, проверьте состояние скрытого поля, измените изображение в соответствии со статусом и сохраните статус флажка в скрытом поле.

Вам следует проверить наличие пользовательских библиотек JavaScript. Одна из моих привилегий - http://www.dojotoolkit.org/

1 голос
/ 14 июля 2009

У этого парня в значительной степени есть все стили, которые вы можете надеть на элементы управления формой, но он не совместим во всех браузерах. Вам придется идти на заказ. Используйте пользовательское изображение для флажка, затем измените его источник, чтобы получить версию, по которой щелкнули (и наоборот). Меню выбора может быть немного сложнее. Я надеюсь, что есть плагин jQuery, который может помочь вам!

0 голосов
/ 20 апреля 2015

Вам не нужна библиотека для того же. Вы можете сделать это самостоятельно с чистым CSS, и просто строкой javascript / jquery.

Вам не нужны никакие библиотеки для них. Вы можете поставить логику, и вы можете катиться самостоятельно. Строка javascript / jquery и все CSS.

Руководство здесь https://github.com/scazzy/CSS-FORM-UI

0 голосов
/ 26 июля 2014

Недавно я столкнулся с удивительным WTF, формами? от создателя Bootstrap Mark otto . У него отличные стили для

  • Checkbox
  • Радиокнопка
  • Выберите
  • Индикатор выполнения
  • Браузер файлов

Оформить заказ http://wtfforms.com/

0 голосов
/ 20 июля 2011

Вы могли бы найти мой пост полезным: http://kunal -b.in / 2011/07 / css-для-привлекательных-флажки-и-радио-кнопок / .

Основная идея заключается в том, чтобы скрыть элемент формы (флажок / переключатель) и стилизовать метку вместо этого с помощью CSS. Благодаря селектору: checked можно различать два состояния меток, назначая стили метке и вводу: флажок + метка, предполагая, что метка следует за флажком / переключателем в вашем HTML-коде. Использование атрибута for в коде делает метку полностью доступной, изменяя состояние связанного элемента.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...