С учетом следующего html:
<div data-name="something">
<p>Content in 'something'</p>
<span data-someAttribute="someAttribute">Content in 'someAttribute' div.</span>
</div>
И CSS:
[data-name] {
background-color: red;
}
[data-name] [data-someAttribute] {
display: block;
background-color: #ffa;
}
Это вполне допустимо (или, по крайней мере, реализовано в Chromium 14 / Ubuntu 11.04).Я изменил использование атрибутов name
(поскольку они недопустимы для элементов div
или других элементов, не являющихся form
) и вместо этого использовал data-*
префиксные пользовательские атрибуты, которые действительны в HTML5 ихотя, возможно, они и не «допустимы» в HTML 4, они, похоже, все еще понимают эти браузеры.
JS Fiddle demo .
Стоит отметить, что вы также можетеиспользуйте атрибут = равнозначная запись, чтобы выбрать только определенные элементы на основе значения их data-*
атрибутов:
<div data-name="something">
<p>Content in data-name='something' element.</p>
<span data-someAttribute="someAttribute">Content in 'someAttribute' div.</span>
</div>
И CSS:
[data-name] {
background-color: red;
}
[data-name="something"] {
font-weight: bold;
}
[data-name] [data-someAttribute] {
background-color: #ffa;
text-decoration: underline;
font-weight: normal;
}
JS Fiddle demo.
Кроме того, если вам подходит CSS3, можно использовать запись атрибута начинается с (^=
):
[data-name] {
background-color: red;
}
[data-name^="s"] {
font-weight: bold;
}
[data-name] [data-someAttribute] {
background-color: #ffa;
text-decoration: underline;
font-weight: normal;
}
JS Fiddleдемо .
И атрибут-заканчивается-с ($=
) нотацией:
[data-name] {
background-color: red;
}
[data-name$="ing"] {
font-weight: bold;
}
[data-name] [data-someAttribute] {
background-color: #ffa;
text-decoration: underline;
font-weight: normal;
}
Ссылки: