为了账号安全,请及时绑定邮箱和手机立即绑定

假如ul的第一个子元素不是li,而是p,为什么就没有效果了?

假如ul的第一个子元素不是li,而是p,css依然写

ul>li:first-child{

 color: red;

}

为什么就没有效果了?

正在回答

5 回答

:first-child 表示的范围是:某父元素的第一个子元素。而 e:first-child 表示的范围是:某父元素的第一个子元素是 e 的元素。那么,

.wrapper > div:first-child 表示的是:.wrapper 下的第一个子元素是 div 的元素,而

<div class="wrapper">

  <p>我是第一个段落</p>

  <p>我是第二个段落</p>

  <div>我是第一个Div元素</div>

  <div>我是第二个Div元素</div>

  <p>我是第三个段落</p>

  <p>我是第四个段落</p>

  <div>我是第三个Div元素</div>

  <div>我是第四个Div元素</div>

</div>

.wrapper 下的第一个子元素不是 div 而是 p ,所以,选择不上元素。

而 .wrapper > p:first-child 才是所谓的“正确”选择,即

.wrapper 下的第一个子元素是 p 的元素,满足代码,可以选择!


2 回复 有任何疑惑可以回复我~

:first-child

这个选择器的意思是,当前元素的父元素之下的第一个同类元素

0 回复 有任何疑惑可以回复我~

但这并不是原因,如果css里改为ul>p:first-child,p就可以显示为红色了。即便我不用ul,用div也存在一样的问题,只要子元素列表项不全为一样的或者:first-child前的元素不在第一项的地方,使用:firt-child就找不到第一个子元素。就什么效果也没有,不信你试试。。

<div class="wrapper">

  <p>我是第一个段落</p>

  <p>我是第二个段落</p>

  <div>我是第一个Div元素</div>

  <div>我是第二个Div元素</div>

  <p>我是第三个段落</p>

  <p>我是第四个段落</p>

  <div>我是第三个Div元素</div>

  <div>我是第四个Div元素</div>

</div>

使用

.wrapper>div:first-child {

  background: orange;

}

没有效果,

使用

.wrapper>p:first-child {

  background: orange;

}

才有效果。

0 回复 有任何疑惑可以回复我~
#1

米飯

【:first-child 选择器表示的是选择父元素的第一个子元素。 对象是元素】 第一个.wrapper>div:first-child { background: orange;},.wrapper不是元素,只是一个class名。第二个.wrapper>p:first-child { background: orange;},应该改成div>p:first-child { background: orange;}。 div是父元素,而<p>我是第一个段落</p>的p元素才是div元素下的第一个子元素。
2015-08-07 回复 有任何疑惑可以回复我~
#2

米飯

而且div和p都是块元素,属于同类元素。至于为什么.wrapper>p:first-child{ };这个写法也能显示,可能是因为从属关系吧,因为wrapper是div的Class属性,不过写法是不对的。
2015-08-07 回复 有任何疑惑可以回复我~
#3

米飯

不好意思,我的回答有错误。错了错了。
2015-08-07 回复 有任何疑惑可以回复我~

亲,ul子元素不允许放置除除li外的任何元素

0 回复 有任何疑惑可以回复我~
#1

Sharon_zd 提问者

但这并不是原因,如果css里改为ul>p:first-child,p就可以显示为红色了。即便我不用ul,用div也存在一样的问题,只要子元素列表项不全为一样的或者:first-child前的元素不在第一项的地方,使用:firt-child就找不到第一个子元素。就什么效果也没有,不信你试试。。
2015-06-29 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

假如ul的第一个子元素不是li,而是p,为什么就没有效果了?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信