Заработок на разработке сайтов, фриланс, своя страничка в интернете, заработать в Интернете на написании сайтов, веб мастер, вебмастер, веб программист, вебпрограммист.
Заработок в Интернет. Удаленная работа на дому. Все о надомной работе.
Псевдоэлемент ::selection позволяет добавлять тень к тексту, управлять цветом фона и цветом текста, выделенного пользователем (по умолчанию: фон голубой, цвет текста белый).
Обращаю Ваше внимание на то, что псевдоэлемент ::selection был добавлен в CSS3*, поэтому необходимо использовать его с двойным двоеточием, это обусловлено тем, что в CSS3 синтаксис для псевдоэлементов был изменён (до этой спецификации псевдоэлементы указывались с одинарным двоеточием).
Для сохранения поддержки старых сайтов, браузеры продолжают распознавать версии ранее введённых псевдоэлементов (с использованием одинарного двоеточия).
Еще один нюанс в использовании этого псевдоэлемента это то, что браузер
Firefox поддерживает его только с префиксом производителя (-moz-).
::selection { /* описание псевдоэлемента для всех браузеров */
color: blue; /* устанавливаем цвет текста */
background-color: orange; /* устанавливаем цвет заднего фона */
}
::-moz-selection { /* описание псевдоэлемента для Firefox */
color: blue; /* устанавливаем цвет текста */
background-color: orange; /* устанавливаем цвет заднего фона */
}
Поддержка браузерами
CSS синтаксис:
::selection {
блок объявлений;
}
Версия CSS
Псевдоэлемент ::selection был разработан для селекторов CSS уровня 3, но был удалён до того как получил рекомендательный статус. Так, в настоящее время он не принадлежит к какой-либо спецификации и возможно будет добавлен в будущей спецификации CSS.
Пример использования
<!DOCTYPE html>
<html>
<head>
<meta charset = "UTF-8">
<title>Псевдоэлемент ::selection</title>
<style>
::selection { /* описание псевдоэлемента для всех браузеров */
color: blue; /* устанавливаем цвет текста */
background-color: orange; /* устанавливаем цвет заднего фона */
}
::-moz-selection { /* описание псевдоэлемента для Firefox */
color: blue; /* устанавливаем цвет текста */
background-color: orange; /* устанавливаем цвет заднего фона */
}
</style>
</head>
<body>
<p>Обыкновенный бегемот, или гиппопотам (лат. Hippopotamus amphibius) — млекопитающее из отряда парнокопытных, подотряда свинообразных (нежвачных), семейства бегемотовых, единственный современный вид рода Hippopotamus. Характерной особенностью бегемота является его полуводный образ жизни — большую часть времени он проводит в воде, выходя на сушу лишь ночью на несколько часов для кормёжки. Бегемот обитает только у пресной воды, хотя может изредка оказываться в море.</p>
</body>
</html>
Результат нашего примера:
Пример использования псевдоэлемента ::selection.
Рассмотрим следующий пример, который позволяет управлять не только цветом текста и задним фоном, но и текстовой тенью:
.chcg::selection {
background-color: violet;
color: white;
}
.chcg::-moz-selection {
background-color: violet;
color: white;
}
.shadow::selection {
text-shadow: 1px 1px 0 red;
}
.shadow::-moz-selection {
text-shadow: 1px 1px 0 red;
}
</style>
</head>
<body>
<p>Выделите абзац, чтобы увидеть выделение без стилей.</p>
<p class = "chcg">Выделите абзац, чтобы увидеть изменения при выделении текста.</p>
<p class = "shadow">Абзац в котором при выделении к тесту добавляется тень.</p>
<p>Эта часть абзаца не стилизована <span class = "chcg">, а к этой применяется стиль при выделении.</span></p>
</body>
</html>
CSS селекторы
::selection — Веб-технологии для разработчиков
Это экспериментальная технология Так как спецификация этой технологии ещё не стабилизировалась, смотрите таблицу совместимости по поводу использования в различных браузерах. Также заметьте, что синтаксис и поведение экспериментальной технологии может измениться в будущих версиях браузеров, вслед за изменениями спецификации.
Псевдоэлемент ::selectionпозволяет применить стили к части документа, который был выделен пользователем (например, с помощью мыши).
::selection {
background: cyan;
}
Разрешённые свойства
Только небольшое подмножество CSS-свойств может быть использовано с псевдоэлементом ::selection :
Заметим, что, в частности, свойство background-image игнорируется.
<div>Этот текст будет стилизован особым образом при выделении.</div>
<p>Также попробуйте выделить текст в этом параграфе.</p>
CSS
/* Сделаем выделенный текст золотым с красным фоном */
::-moz-selection {
color: gold;
background: red;
}
::selection {
color: gold;
background: red;
}
/* Сделаем выделенный в параграфе текст белым на синем фоне */
p::-moz-selection {
color: white;
background: blue;
}
p::selection {
color: white;
background: blue;
}
Результат
Спецификации
Примечание: Хотя псевдоэлемент ::selection присутствовал в черновиках стандарта CSS Selectors Level 3, он был убран в течение фазы Candidate Recommendation, так как его поведение было недостаточно проработано (особенно с вложенным элементами) и согласованность не была достигнута (основываясь на обсуждении в списке рассылки W3C Style). Этот псевдоэлемент был возвращён в Pseudo-Elements Level 4.
Поддержка браузерами
Update compatibility data on GitHub
Компьютеры
Мобильные
Chrome
Edge
Firefox
Internet Explorer
Opera
Safari
Android webview
Chrome для Android
Firefox для Android
Opera для Android
Safari on iOS
Samsung Internet
::selection
Chrome Полная поддержка 1
Edge Полная поддержка 12
Firefox Полная поддержка
62
Полная поддержка 62
Полная поддержка 1
С префиксом Требует вендорный префикс: -moz-
IE Полная поддержка 9
Opera Полная поддержка 9.5
Safari Полная поддержка
1.1
WebView Android Полная поддержка 37
Chrome Android Полная поддержка 18
Firefox Android Полная поддержка 62
Полная поддержка 62
Полная поддержка 4
С префиксом Требует вендорный префикс: -moz-
Opera Android Полная поддержка 14
Safari iOS Полная поддержка 1
Samsung Internet Android Полная поддержка 1.0
Легенда
Полная поддержка
Полная поддержка
Требует вендорный префикс или другое имя для использования.
Требует вендорный префикс или другое имя для использования.
Псевдоэлемент ::selection | CSS | WebReference
Псевдоэлемент ::selection применяет стиль к выделенному пользователем тексту. В правилах стилей допускается использовать следующие свойства: color, background, background-color, cursor, outline и text-shadow.
Синтаксис
Селектор::selection { ... }
Обозначения
Описание
Пример
<тип>
Указывает тип значения.
<размер>
A && B
Значения должны выводиться в указанном порядке.
<размер> && <цвет>
A | B
Указывает, что надо выбрать только одно значение из предложенных (A или B).
normal | small-caps
A || B
Каждое значение может использоваться самостоятельно или совместно с другими в произвольном порядке.
width || count
[ ]
Группирует значения.
[ crop || cross ]
*
Повторять ноль или больше раз.
[,<время>]*
+
Повторять один или больше раз.
<число>+
?
Указанный тип, слово или группа не является обязательным.
inset?
{A, B}
Повторять не менее A, но не более B раз.
<радиус>{1,4}
#
Повторять один или больше раз через запятую.
<время>#
Пример
<!DOCTYPE html>
<html>
<head>
<meta charset=»utf-8″>
<title>selection</title>
<style>
p::selection {
color: #ff0; /* Цвет текста */
background: #000; /* Цвет фона */
}
</style>
</head>
<body>
<p>При выделении этого текста он изменит свой цвет.</p>
</body>
</html>
В данном примере при выделении текста он изменяет свой цвет и фон.
Примечание
Firefox до версии 62 использует нестандартный псевдоэлемент ::-moz-selection.
Спецификация
Каждая спецификация проходит несколько стадий одобрения.
Recommendation (Рекомендация) — спецификация одобрена W3C и рекомендована как стандарт.
Candidate Recommendation (Возможная рекомендация) — группа, отвечающая за стандарт, удовлетворена, как он соответствует своим целям, но требуется помощь сообщества разработчиков по реализации стандарта.
Proposed Recommendation (Предлагаемая рекомендация) — на этом этапе документ представлен на рассмотрение Консультативного совета W3C для окончательного утверждения.
Working Draft (Рабочий проект) — более зрелая версия черновика после обсуждения и внесения поправок для рассмотрения сообществом.
Editor’s draft (Редакторский черновик) — черновая версия стандарта после внесения правок редакторами проекта.
Draft (Черновик спецификации) — первая черновая версия стандарта.
Браузеры
В таблице браузеров применяются следующие обозначения.
— свойство полностью поддерживается браузером со всеми допустимыми значениями;
— свойство браузером не воспринимается и игнорируется;
— при работе возможно появление различных ошибок, либо свойство поддерживается лишь частично, например, не все допустимые значения действуют или свойство применяется не ко всем элементам, которые указаны в спецификации.
Число указывает версию браузера, начиная с которой свойство поддерживается.
Автор и редакторы
Автор: Влад Мержевич
Последнее изменение: 20.09.2018
Редакторы: Влад Мержевич
Тег HTML выпадающий список
Тег <select> в HTML используется для создания выпадающего списка в HTML форме.
С помощью атрибута multiple можно создать список с выбором нескольких значений (список с множественным выбором).
Пункты выпадающего списка определяются с помощью тега <option>. Тег <optgroup> определяет группы пунктов внутри выпадающего списка HTML.
Выпадающий список в HTML является одним из элементов форм. Подробно о создании форм описано в статье: Все про формы и поля в HTML. Создание и работа с формами.
При отправке формы, на сервер будет отправлена переменная, в качестве названия имеющая имя списка select (значение атрибута name), содержащая значение выбранного пункта списка. Если в выбранном пункте списка <option> есть атрибут value, то значением считается его содержимое, в противном случае значением считается содержимое тега <option>.
Синтаксис
<select>элементы списка</select>
Примеры использования выпадающего списка <select> в HTML коде
Ниже представлены 4 основных варианта выпадающих списков HTML.
Добавить списку возможность множественного выбора (выбора одновременно нескольких значений) можно используя атрибут multiple. Количество одновременно выводимых на экран пунктов списка с множественным выбором регулируется с помощью атрибута size.
Атрибут name такого списка должен заканчиваться символами «[]», например, name=»cars[]».
Nissan
Toyota
BMW
Wolksvagen
Skoda
Mercedes-Benz
HTML код выпадающего списка с выбором нескольких значений
Для того, чтобы создать список select, обязательный для заполнения (<select> список, где пользователь должен обязательно выбрать значение) нужно использовать атрибут required, а также добавить внутрь списка первым пунктом <option> с пустым значением атрибута value.
Выберите значение
Синий
Зеленый
Желтый
Красный
Оранжевый
Черный
HTML код выпадающего списка обязательного для выбора (заполнения)
Логический атрибут. Если указан, при загрузке документа фокус будет переведен на список.
disabled
не указывается / disabled
Логический атрибут. Если указан, делает список неактивным.
Данные списка, отмеченного этим атрибутом, не будут переданы на сервер при отправке формы. Атрибут также отключает возможность изменения состояния списка пользователем (например, изменение выбранного пункта).
form
id формы
Указывает на форму, к которой относится список. Используется, если список <select> находится вне HTML кода формы.
Если список находится внутри тега <form>, то использовать атрибут form не нужно, список по умолчанию привязан к форме, внутри которой находится.
multiple
не указывается / multiple
Логический атрибут. Открывает возможность множественного выбора. Если указан, вместо выпадающего списка будет выведен список с возможностью выбрать несколько значений (пунктов) одновременно. Количество элементов, доступных без скроллинга регулируется атрибутом size.
name
текст
Имя списка. Используется при передаче данных формы на сервер. Значение списка будет передано в переменной, имеющей имя, указанное в этом атрибуте.
required
не указывается / required
Логический атрибут. Если указан, список будет определен как обязательный для заполнения (обязательный для выбора). Форма не будет отправлена на сервер, если в таком списке не будет выбрано ни одно значение.
Заполнение контролируется браузером. При попытке отправить форму с незаполненным обязательным списком браузеры обычно выводят на экран ошибку заполнения.
size
число
Количество пунктов списка, одновременно выводимых на экран. Для выпадающего списка используется значение 1. Это значение по умолчанию.
Если значение больше чем 1, вместо выпадающего списка будет выведен список со скроллингом.
Тег <select> также поддерживает глобальные HTML атрибуты.
— Веб-технологии для разработчиков
select
Chrome Полная поддержка Да
Полная поддержка Да
Замечания border-radius on <select> elements is ignored unless -webkit-appearance is overridden to an appropriate value.
Edge Полная поддержка 12
Firefox Полная поддержка 1
Полная поддержка 1
Замечания Historically, Firefox has allowed keyboard and mouse events to bubble up from the <option> element to the parent <select> element, although this behavior is inconsistent across many browsers. For better Web compatibility (and for technical reasons), when Firefox is in multi-process mode the <select> element is displayed as a drop-down list. The behavior is unchanged if the <select> is presented inline and it has either the multiple attribute defined or a size attribute set to more than 1. Rather than watching <option> elements for events, you should watch for change events on <select>. See bug 1090602 for details.
IE Полная поддержка Да
Opera Полная поддержка Да
Safari Полная поддержка Да
Полная поддержка Да
Замечания border-radius on <select> elements is ignored unless -webkit-appearance is overridden to an appropriate value.
WebView Android Полная поддержка Да
Полная поддержка Да
Замечания In the Browser app for Android 4.1 (and possibly later versions), there is a bug where the menu indicator triangle on the side of a <select> will not be displayed if a background, border, or border-radius style is applied to the <select>.
Замечания border-radius on <select> elements is ignored unless -webkit-appearance is overridden to an appropriate value.
Chrome Android Полная поддержка Да
Полная поддержка Да
Замечания border-radius on <select> elements is ignored unless -webkit-appearance is overridden to an appropriate value.
Firefox Android Полная поддержка 4
Полная поддержка 4
Замечания Firefox for Android, by default, sets a background-image gradient on all <select multiple> elements. This can be disabled using background-image: none.
Opera Android Полная поддержка Да
Safari iOS Полная поддержка Да
Полная поддержка Да
Замечания border-radius on <select> elements is ignored unless -webkit-appearance is overridden to an appropriate value.
Samsung Internet Android Полная поддержка Да
Полная поддержка Да
Замечания border-radius on <select> elements is ignored unless -webkit-appearance is overridden to an appropriate value.
autofocus
Chrome Полная поддержка Да
Edge Полная поддержка 12
Firefox Полная поддержка 1
IE Полная поддержка Да
Opera Полная поддержка Да
Safari Полная поддержка Да
WebView Android Полная поддержка Да
Chrome Android Полная поддержка Да
Firefox Android Полная поддержка 4
Opera Android Полная поддержка Да
Safari iOS Полная поддержка Да
Samsung Internet Android Полная поддержка Да
disabled
Chrome Полная поддержка Да
Edge Полная поддержка 12
Firefox Полная поддержка 1
IE Полная поддержка Да
Opera Полная поддержка Да
Safari Полная поддержка Да
WebView Android Полная поддержка Да
Chrome Android Полная поддержка Да
Firefox Android Полная поддержка 4
Opera Android Полная поддержка Да
Safari iOS Полная поддержка Да
Samsung Internet Android Полная поддержка Да
form
Chrome Полная поддержка Да
Edge Полная поддержка 12
Firefox Полная поддержка 1
IE Полная поддержка Да
Opera Полная поддержка Да
Safari Полная поддержка Да
WebView Android Полная поддержка Да
Chrome Android Полная поддержка Да
Firefox Android Полная поддержка 4
Opera Android Полная поддержка Да
Safari iOS Полная поддержка Да
Samsung Internet Android Полная поддержка Да
multiple
Chrome Полная поддержка Да
Edge Полная поддержка 12
Firefox Полная поддержка 1
IE Полная поддержка Да
Opera Полная поддержка Да
Safari Полная поддержка Да
WebView Android Полная поддержка Да
Chrome Android Полная поддержка Да
Firefox Android Полная поддержка 4
Opera Android Полная поддержка Да
Safari iOS Полная поддержка Да
Samsung Internet Android Полная поддержка Да
name
Chrome Полная поддержка Да
Edge Полная поддержка 12
Firefox Полная поддержка 1
IE Полная поддержка Да
Opera Полная поддержка Да
Safari Полная поддержка Да
WebView Android Полная поддержка Да
Chrome Android Полная поддержка Да
Firefox Android Полная поддержка 4
Opera Android Полная поддержка Да
Safari iOS Полная поддержка Да
Samsung Internet Android Полная поддержка Да
required
Chrome Полная поддержка Да
Edge Полная поддержка 12
Firefox Полная поддержка 4
IE Полная поддержка 10
Opera Полная поддержка Да
Safari Полная поддержка Да
WebView Android Полная поддержка Да
Chrome Android Полная поддержка Да
Firefox Android Полная поддержка 4
Opera Android Полная поддержка Да
Safari iOS Полная поддержка Да
Samsung Internet Android Полная поддержка Да
size
Chrome Полная поддержка Да
Edge Полная поддержка 12
Firefox Полная поддержка 1
IE Полная поддержка Да
Opera Полная поддержка Да
Safari Полная поддержка Да
WebView Android Полная поддержка Да
Chrome Android Полная поддержка Да
Firefox Android Полная поддержка 4
Opera Android Полная поддержка Да
Safari iOS Полная поддержка Да
Samsung Internet Android Полная поддержка Да
Стилизация Select-Option (почти) без JavaScript / Хабр
Стилизация некоторых стандартных элементов — довольно нетривиальная задача.
Разумеется, хороший специалист может стилизовать что угодно, однако всё упирается в сложность этого действия.
Для стилизации радиокнопок и чекбоксов потребуется совсем немного времени — идея стилизации label со скрытыми input не нова, и давно и повсеместно используется.
Для стилизации остального — есть JavaScript.
Сегодня я хочу рассказать Вам о том, как можно относительно просто стилизовать выпадающие списки, с минимальным кодом JavaScript (от 0 до 26 строк) и минимальной дополнительной разметкой HTML.
На днях у меня, как это часто и бывает, возникла необходимость стилизовать выпадающий список. Однако именно выпадающим списком он становился только в мобильной версии, до этого же он вёл себя как самая обычная группа радиокнопок.
И вот, когда я уже почти закончил писать очередную жуткую конструкцию, призванную заменить несчастный Select, у меня возник вопрос:
А зачем?
Обычно этот вопрос ведёт к умудрённой прокрастинации, переосмыслению жизни и т.д., но в этот раз что-то пошло не так, и я понял, что вопрос и правда был хорошим, а главное — полезным.
Небольшой ликбез:
Итак, для тех, кто в танке, а также тех, кому выпадающие списки доставили столько боли, что они решили забыть о них, как о страшном сне, я немножко (правда) напомню о том, что это такое.
Выпадающие списки состоят из 2 основных элементов:
Select — контейнер для всего списка
Option — элемент списка
Иногда используется ещё и OptGroup (группа элементов списка), но его реализация пока что остаётся на JavaScript’е.
Основной функционал выпадающего списка — отправка информации о выбранном(ых) пункте(ах) на сервер.
Для полноты картины, вот список атрибутов элементов (чтобы можно было оценить, сколько из них будут реализованы):
Мы всего-навсего меняем тип input’ов с Radio на Checkbox, и получаем практически полный аналог multiple.
Разница в том, что для множественного выбора не нужно зажимать ctrl (ну а если кто-то хочет полностью имитировать функционал — JavaScript в помощь).
Что осталось?
Select — disabled, size
Option — полностью реализовано
Ну что ж, и Select.disabled и Select.size предельно просто реализуются с помощью CSS:
Select.size — какой зададите размер, такой и будет. Необходимо будет просто добавить контейнер.
Select.disabled — для контейнера нужно добавить pointer-events: none, чтобы отменить реакцию на любые действия пользователя (наведение, клики и т.д.), ну и можно сделать его чуть прозрачным.
Итак, основной функционал есть. Чего не хватает?
Нужно также добавить автозаполнение заголовка для выпадающего меню с единственным выбором, а также возникнет проблема при сбросе формы (кнопка Reset), т.к. заголовок не сбросится. Но и это — вполне решаемо (с помощью JavaScript).
А теперь — примеры:
Немного реализации (выпадающее меню с единичным выбором):
И ещё немного (не выпадающее меню с множественным выбором): Бонус: не знаю, зачем я это сделал, но… выпадающее меню с единичным выбором и работающим на CSS сбросом заголовка:
Зачем это нужно?
В связи с тем, что судя по комментариям, не все понимают, для чего будет полезен данный код, считаю нужным дать некоторые разъяснения.
есть серьёзные ограничения стилизации. Поэтому их заменяют на простые списки:
<ul>
<li>Пункт 1</li>
<li>Пункт 2</li>
</ul>
которым с помощью JavaScript навешивают весь необходимый функционал.
Поскольку изначально списки никак не взаимодействуют с формами, из-за этого возникают проблемы.
Мало того, что необходимо реализовать весь основной функционал:
переключение пунктов и их взаимодействие
состояния (checked, disabled)
привязка к форме и отправка данных на сервер
инициализация исходных данных (автозаполнение)
сброс формы (при нажатии на кнопку «reset» список нужно вернуть в состояние при инициализации)
Фактически, если в JavaScript что-то ломается, не важно, из-за чего — скрипт не догрузился, возник баг, внесли правки — при возникновении любой проблемы выпадающий список превращается в… что-то, выглядящее как выпадающий список, но не работающее.
Вообще. Никак.
Для пользователя это будет выглядеть так: есть выпадающий список, но работать с ним нельзя.
Для сервера это будет выглядеть ещё «веселее» — пришла форма, в которой не хватает части данных. Хорошо, что такую ситуацию заранее предусмотрели при разработке… Ведь предусмотрели, правда?
Плюсы получившегося решения:
Весь основной функционал (смотри выше), кроме сброса заголовка ВСЕГДА будет работать. Даже если у человека вообще отключён JavaScript (хоть это и стало практически неактуально). Единственное, что может пойти не так — нельзя будет открыть список. Но и в этом случае отправится значение по умолчанию, плюс смену состояний — список открыт/закрыт — можно реализовать прямо в коде html (защита от проблем с файлом JS), или вообще открывать по наведению.
Данного функционала достаточно для большинства подобных списков. Да, возникнут проблемы у людей, использующих дополнительный функционал (об этом ниже). Но в случае со списком на ul — li для работы и вовсе требуется библиотека, и много что может пойти не так.
Минусы (доп. функционал, который не реализован, и добавляется JavaScript’ом / библиотеками):
Переключение с помощью tab
Управление стрелками (в стандартном select можно менять выбранный пункт кнопками вверх-вниз)
Озвучка скринридерами (для людей, у которых проблемы со зрением текст на странице озвучивается)
Не работает как нативный select на мобильных (на мобильных select довольно удобно работает сам по себе. При желании можно определять устройство и подменять на стандартный select)
Список не умеет выпадать вверх, если снизу край вьюпорта (JS сделает это)
Группировка пунктов (аналог OptGroup) (сложно, и очень редко встречается)
Как видно, ничто из вышеперечисленных минусов не является критичным для подавляющего большинства списков, и при необходимости реализуется с помощью JavaScript, а потому…
Добро пожаловать в мир, где Ваши библиотеки для стилизации Select-Option-подобных списков станут чуточку меньше, а работа с этими списками без библиотек — почти комфортной!
UPD: как оказалось, в случае с чекбоксами атрибут required работает некорректно, и его также необходимо эмулировать с помощью JavaScript (на данный момент обязательными становятся все чекбоксы, отмеченные как required, и только они)
Атрибут selected | htmlbook.ru
Internet Explorer
Chrome
Opera
Safari
Firefox
Android
iOS
4.0+
1.0+
4.0+
1.0+
1.0+
1.0+
1.0+
Спецификация
HTML:
3.2
4.01
5.0
XHTML:
1.0
1.1
Описание
Делает текущий пункт списка выделенным. Если у тега <select> добавлен атрибут multiple, то можно выделять более
одного пункта.
Не выкладывайте свой код напрямую в комментариях, он отображается некорректно.
Воспользуйтесь сервисом cssdeck.com или jsfiddle.net,
сохраните код и в комментариях дайте на него ссылку. Так и результат сразу увидят.
90000 HTML select tag 90001 90002 90003 Example 90004
90005 Create a drop-down list with four options: 90006 Choose a car: 90005 90021 element is used to create a drop-down list. 90006
90005 The 90020 90021 element define the available options in
the drop-down list. 90006
90005 90042 Tip: 90043 Always add the