Выбор элементов по атрибуту в CSS
Возможно ли выбрать элементы в CSS по их HTML5 атрибутам данных (например, data-role)?
3 ответ(ов)
Да, в современных браузерах можно выбирать атрибуты независимо от их содержимого с помощью следующих селекторов:
[data-my-attribute] {
/* Стили */
}
[anything] {
/* Стили */
}
Например, вот ссылка на код-пен: http://codepen.io/jasonm23/pen/fADnu.
Этот подход поддерживается значительной частью браузеров.
Стоит отметить, что данный метод также можно использовать в jQuery селекторах или с помощью document.querySelector.
Эти CSS селекторы используются для выбора элементов на веб-странице в зависимости от значений атрибута data-value. Вот краткий обзор каждого из них:
[data-value]: Этот селектор выбирает все элементы, у которых существует атрибутdata-value, независимо от его значения.[data-value="foo"]: Здесь мы выбираем элементы, у которых атрибутdata-valueимеет точно значениеfoo.[data-value*="foo"]: Этот селектор выбирает элементы, атрибутdata-valueкоторых содержит подстрокуfooгде-либо в своем значении.[data-value~="foo"]: Данный селектор используется для выбора элементов, у которых атрибутdata-valueимеет значениеfooв виде одного из элементов списка, разделенного пробелами.[data-value^="foo"]: Этот селектор выбирает элементы, у которых значение атрибутаdata-valueначинается сfoo.[data-value|="foo"]: Здесь мы выбираем элементы, у которых значение атрибутаdata-valueначинается сfoo, и это значение может быть частью списка, разделенного дефисами (например,foo-bar,foo).[data-value$="foo"]: Этот селектор выбирает элементы, у которых значение атрибутаdata-valueзаканчивается наfoo.
Эти селекторы позволяют довольно гибко фильтровать элементы в зависимости от значений атрибутов и могут значительно упростить работу с динамическими данными на странице.
Стоит отметить, что в CSS3 есть селекторы атрибутов для работы с подстроками:
[attribute^=value] { /* селектор: начинается с указанного значения */
/* Стили */
}
[attribute$=value] { /* селектор: заканчивается указанным значением */
/* Стили */
}
[attribute*=value] { /* селектор: содержит указанное значение */
/* Стили */
}
Эти селекторы позволяют вам выбирать элементы на основе значений их атрибутов, что делает стилизацию более гибкой. С помощью таких селекторов вы можете применить стили к элементам, даже если их атрибуты не являются полными совпадениями, а только частично соответствуют заданным условиям.
CSS: Невозможность использования селектора "сосед" (sibling selector)
Как расположить div внизу своего контейнера?
Установить фиксированную ширину столбца таблицы независимо от количества текста в ячейках?
Как сделать перенос строки с помощью CSS, не используя <br />?
Стоит ли использовать единицы px или rem в CSS? [закрыто]