Как выбрать первый абзац в div с определенным классом (CSS 2)
у меня есть <div>
содержащие много <p>
элементы и нужно применить некоторый стиль только для первого <p>
внутри каждого <div>
С конкретный класс (cnt).
обратите внимание, что этот вопрос может показаться похожим на другие на SO, но роль, которую мне нужно, должна применяться только для класса cnt
, что делает его отличным.
//I use YUI 3 Reset and Grid:
<link href="http://yui.yahooapis.com/3.4.0/build/cssfonts/fonts.css" rel="stylesheet" type="text/css" />
<link href="http://yui.yahooapis.com/3.4.0/build/cssgrids/grids.css" rel="stylesheet" type="text/css" />
<div class="cnt">
<p>Number 1</p>
<p>Number 2</p>
<p>Number 3</p>
</div>
// I'm using this class without success!"
.cnt p:first-child
{
background-color:Red;
}
// Other classes could create some conflict
.cnt p
{
margin: 10px 0px 10px 0px;
}
.cnt h2, .cnt h3, .cnt h4, .cnt h5, .cnt h6
{
font-size: 16px;
font-weight: 700;
}
.cnt ul, .cnt ol
{
margin: 10px 0px 10px 30px;
}
.cnt ul > li
{
list-style-type: disc;
}
.cnt ol > li
{
list-style-type: decimal;
}
.cnt strong
{
font-weight:700;
}
.cnt em
{
font-style:italic;
}
.cnt hr
{
border:0px;
height:1px;
background-color:#ddddda;
margin:10px 0px 10px 0px;
}
.cnt del
{
text-decoration:line-through;
color:Red;
}
.cnt blockquote
{ margin: 10px;
padding: 10px 10px;
border: 1px dashed #E6E6E6;
}
.cnt blockquote p
{
margin: 0;
}
PS: мне это нужно в CSS 2
(ни меньше CSS3 :первый из типа отлично работает)
3 ответов
ваш пример должен работать нормально
альтернативный метод
попробуйте использовать first-of-type
селектор.
.cnt p:first-of-type{
background-color:Red;
}
это селектор CSS3 и не будет работать на IE8, однако.
одна вещь, о которой люди всегда забывают, - это соседние селекторы, которые работают (в некоторой степени) в IE7+, попробуйте следующее:
HTML-код
<div class="paragraph">
<p>some paragraph</p>
<p>some paragraph</p>
<p>some paragraph</p>
<p>some paragraph</p>
<p>some paragraph</p>
</div>
в CSS
p {
color:black;
}
.paragraph p {
color:red;
}
.paragraph p + p {
color:black;
}
вот пример использования другого метода, не используя: first-child.
http://jsfiddle.net/chricholson/dp3vK/6/
Он включает в себя установку стиля для всех тегов p (чтобы получить общий стиль), то только там, где тег p после тега p будет затронуто больше стилей. Вы можете использовать это в своих интересах, установить все теги p, чтобы иметь стиль первого тега, а затем перезаписать для других