Просмотр полной версии : Атрибуты с префиксом в CSS. Совсем нельзя?
У атрибутов элементов может быть префикс
Типа
<time ip:alive>
Js нормально отрабатывает (пишет, читает) такие атрибуты
А в CSS никак
time[ip:alive] {
....
}
Никак не отрабатывает.
Аналогично querySelector('time[ip:alive]') орет матом
Никак нельзя? Или какой то особый синтаксис для этого есть?
Никак нельзя?
В селекторах двоеточие используется как разделитель, для псевдоэлементов.
Белый шум
04.01.2022, 14:31
Просто двоеточие нужно экранировать:
<head>
<style>
time[ip\:alive] {
color: green;
}
</style>
</head>
<body>
<time ip:alive>
Js нормально отрабатывает (пишет, читает) такие атрибуты
<br>А в CSS никак
</time>
<script>
console.log(document.querySelector('time[ip\\:alive]').attributes);
</script>
</body>
Вау! Здорово!
Мне попадалась такая конструкция тут
https://oreillymedia.github.io/Using_SVG/extras/ch03-namespaces.html
Но там же все больше пишут про конструкцию вида [ip|alive], которая почему то ни фига не работает.
На mdn тоже только какие то не внятные слова про | находил
https://developer.mozilla.org/ru/docs/Web/CSS/@namespace
Где на MDN об этом почитать?
https://developer.mozilla.org/en-US/docs/Web/API/Attr/prefix
Ну это опять XHTML.
Да хрен с ним. Лишь бы работало
В html с <!DOCTYPE html> работает, и хорошо.
А смысл в нем если он в html всегда null?
В чем и кто null?
voraa,
Note: Only XML supports namespaces. HTML does not. That means that the prefix of an attribute of an HTML element will always be null.
В html с <!DOCTYPE html> работает, и хорошо.
Даже если оно работает - оно может в любой момент перестать. Использовать недокументированные возможности без очень серьёзной причины - не стоит.
Ну хорошо, пускай это не префикс, а просто имя такое. Разрешенное!
Attribute names must consist of one or more characters other than the space characters, U+0000 NULL, U+0022 QUOTATION MARK ("), U+0027 APOSTROPHE ('), U+003E GREATER-THAN SIGN (>), U+002F SOLIDUS (/), and U+003D EQUALS SIGN (=) characters, the control characters, and any characters that are not defined by Unicode. In the HTML syntax, attribute names, even those for foreign elements, may be written with any mix of lower- and uppercase letters that are an ASCII case-insensitive match for the attribute's name.
https://www.w3.org/TR/2011/WD-html5-20110525/syntax.html#attributes-0
Важно было, как задать это в CSS.
Экранировка доставляет удовольствие.
Если просто в CSS так
time[ip\:alive] {
color: green;
}
В js так
document.querySelector('time[ip\\:alive]')
А в js в строке, которую потом загонять в элемент style так
const tymestyle =`
time[ip\\\\:alive] {
color: green;
}`;
Там любой атрибут (не обязательно с : ), который не предназначен для данного тега вызывает ошибку.
voraa, пробовал такие?
<p data-test='пример'></p>
пробовал такие?
Как разработчик, я тоже за стандартные атрибуты.
Но не все от меня зависит.
Заказчики уже много лет используют нестандартный атрибут href у <cite>
И ничего, живут как то.
Сейчас идет просто некоторая доработка и расширение (с упрощением) проекта. Обсуждаются разные варианты.
Дело в том, что там большая часть документов вручную переводится из Ворда или png в html.
Как они скажут, что им проще, так и будет.
Это напоминает старый принцип - зачем просто, когда можно сложно.
зачем просто, когда можно сложно.
А что сложно, что просто?
Вот то же пресловутый <time>, с которым я сюда прибежал.
Конечно нужно писать так
<time class="alive" data-href="url..."></time>
Но ктото предложил, что может быть можно и так. Так проще
<time ip:alive ip:href="url..."></time>
Ну хочется им, почему не попробовать, если они считают, что так проще.
Но ктото предложил, что может быть можно и так. Так проще
Проще - это без дальнейших проблем.
Ну хочется им, почему не попробовать, если они считают, что так проще.
Что же вы так убиваетесь?
Вы же так не убьетесь! :D
Т.ч. пусть придумают что-то позаковыристее, чтобы у браузеров вообще крышу сносило!
voraa, твоя задача убедить их что проще - по-нормальному, потому что если новый сотрудник придёт ему не придётся разбираться в магии.
Если хочется универсальности, так тоже боль-мене нормально:
<time data-alive data-href="url..."></time>
Если хочется разных префиксов, не проблема:
<time data-ip-alive data-ip-href="url..."></time>
vBulletin® v3.6.7, Copyright ©2000-2025, Jelsoft Enterprises Ltd. Перевод: zCarot