CSS псевдоэлементы: использование attr для ссылки на атрибут другого элемента
Я хотел бы использовать псевдоэлемент:: before для вставки текста, который находится в другой области HTML-файла.
Мой HTML:
<html>
<body notetext="Note">
...
<p class="bodytext">Don't press the red button!</p>
</body>
Я могу использовать content: attr для выбора атрибута текущего элемента, но можно ли ссылаться на атрибут элемента-предка? Как вы можете, например, в XPath (//body/@notetext)
нерабочий CSS у меня есть:
p.bodytext::before {
content:attr(notetext);
}
Я использую Antennahouse Formatter для CSS Paged Media.
3 ответа
AH Formatter имеет -ah-attr-from()
функция расширения (см. https://www.antennahouse.com/product/ahf65/ahf-ext.html).
Прототип функции как для attr()
но с добавлением параметра, указывающего элемент предка:
-ah-attr-from( <from-name> , <attr-name> <type-or-unit>? [ , <fallback> ]? )
Если вы можете изменить HTML, вы можете рассмотреть возможность использования переменных CSS, например:
p.bodytext::before {
content: var(--text);
}
<body style="--text:'Note '">
<p class="bodytext">Don't press the red button!</p>
</body>
Только с помощью CSS невозможно ссылаться на содержимое других элементов. Также невозможно сослаться на родительский элемент. Я бы посоветовал вам использовать javascript и атрибуты данных для решения вашей проблемы.
Ответ Темани Афифа отличный, я бы порекомендовал его, если вам не нужна поддержка Internet Explorer. В противном случае вам понадобится css пользовательские свойства IE polyfill.