Кратко
Скопированоattr
— это CSS-функция, которая умеет получать значение любого атрибута элемента, а потом использовать это значение прямо в стилях.
Пример
Скопировано<div class="element" title="На самом деле внутри нет никакого текста"></div>
<div class="element" title="На самом деле внутри нет никакого текста"></div>
div::before { content: "Элемент с классом " attr(class);}div::after { content: "Подсказка: " attr(title);}
div::before { content: "Элемент с классом " attr(class); } div::after { content: "Подсказка: " attr(title); }
Как пишется
Скопированоdiv::before { content: attr(data-title); content: attr(href);}
div::before { content: attr(data-title); content: attr(href); }
С указанием типа:
div::before { content: attr(src url); content: attr(data-count number); content: attr(data-width px);}
div::before { content: attr(src url); content: attr(data-count number); content: attr(data-width px); }
С указанием фолбэка, то есть запасного значения:
div::before { content: attr(data-count number, 0); content: attr(src url, ""); content: attr(data-width px, inherit); content: attr(data-something, "default");}
div::before { content: attr(data-count number, 0); content: attr(src url, ""); content: attr(data-width px, inherit); content: attr(data-something, "default"); }
Подсказки
Скопировано💡 Функцию attr
можно использовать в качестве значения любого CSS-свойства, однако полностью поддерживается только свойство content
. Для остальных свойств поддержка экспериментальная и может различаться от браузера к браузеру. Актуальную информацию о поддержке можно посмотреть на Can I use.
💡 Написание с указанием типа или фолбэка пока имеет статус экспериментальной технологии и не поддерживается браузерами. Но в будущем это позволит гораздо сильнее расширить область применения функции attr
. Например, мы сможем написать так:
.colored { background-image: attr(data-src url);}
.colored { background-image: attr(data-src url); }
Тут мы указали, что в качестве значения для свойства background
мы хотим использовать значение атрибута data
. При этом уточнили, что значение атрибута data
— это не просто строка, а корректный URL.
Примеры записи с указанием типа или фолбэка кажутся довольно перспективными, но, к сожалению, пока не поддерживаются ни одним из браузеров.
На практике
Скопированосоветует Скопировано
🛠 Самый распространённый случай использования функции attr
- отображение значения атрибута href
после текста ссылки при печати страницы.
<p> Подробнее о скидках и акциях можно узнать <a href="http://best-site.ru/sales">по ссылке</a></p>
<p> Подробнее о скидках и акциях можно узнать <a href="http://best-site.ru/sales">по ссылке</a> </p>
@media print { a::after { content: " [" attr(href) "]"; }}
@media print { a::after { content: " [" attr(href) "]"; } }