Я пытаюсь выбрать первый h1
внутри div
класса с именем detail_container
. Он работает, если h1
это первый элемент внутри этого div
, но если он идет после этого, ul
он не будет работать.
<style type="text/css">
.detail_container h1:first-child
{
color:blue;
}
</style>
</head>
<body>
<div class="detail_container">
<ul>
<li></li>
<li></li>
</ul>
<h1>First H1</h1>
<h1>Second H1</h1>
</div>
</body>
</html>
У меня создалось впечатление, что CSS, который у меня есть, выберет первый h1
независимо от того, где он находится div
. Как заставить его работать?
css
css-selectors
Человек-маффин
источник
источник
Ответы:
В
h1:first-child
средстве селектора:first-child
Контейнера здесь естьul
, и как таковой не может удовлетворитьh1:first-child
.Для
:first-of-type
вашего случая есть CSS3 :.detail_container h1:first-of-type { color: blue; }
Но из-за проблем с совместимостью браузера и многого другого лучше сначала дать
h1
класс, а затем нацелиться на этот класс:.detail_container h1.first { color: blue; }
источник
:first-of-type
селекторе.:first-of-type
. Старая ссылка неверна.:first-child
не совсем понятен, потому что вы определяете элемент, скажемh1
, как селектор CSS, а затем думаете «взять первого потомка» из всех на выбранном уровне DOM. Я столько раз использовал его неправильно ... Мы должны привыкнуть к:first-of-type
селектору и подумать о первом дочернем элементе его типа.:first-child
выбирает первыйh1
тогда и только тогда, когда это первый дочерний элемент своего родительского элемента. В вашем примереul
это первый дочерний элементdiv
.Название псевдокласса несколько вводит в заблуждение, но здесь в спецификации оно объясняется довольно четко .
:first
Селектор jQuery дает вам то, что вы ищете. Ты можешь это сделать:$('.detail_container h1:first').css("color", "blue");
источник
В этом конкретном случае вы можете использовать:
.detail_container > ul + h1{ color: blue; }
Но если вам нужен один и тот же селектор во многих случаях, у вас должен быть класс для них, как сказал BoltClock.
источник
вы также можете использовать
.detail_container h1:nth-of-type(1)
Изменив число 1 на любое другое, вы можете выбрать любой другой элемент h1.
источник
Вы можете обернуть свои
h1
теги другим тегом,div
и тогда первым будет тегfirst-child
. Для этогоdiv
даже не нужны стили. Это просто способ изолировать этих детей.<div class="h1-holder"> <h1>Title 1</h1> <h1>Title 2</h1> </div>
источник
Элемент не может напрямую наследовать от
<body>
тега. Можно попробовать поместить в<dir style="padding-left:0px;"></dir>
тег.источник