:only-child
官方定义:当当前元素的父元素,有且只有它本身一个子元素(DOM节点)时,修改其样式
:only-of-type
官方定义:当当前元素在其父元素的子元素序列中,没有其它相同兄弟元素(唯一的,有且只有一个它本身)时,修改其样式
注意:
在官方文档中,这两个伪类的定义如上所述(在我理解中),但亲自测试后,发现,
这两个伪类所实现的效果竟然一样(见下面案例),
因此这里特别记录下,另外,考虑到本人才疏学浅,可能没有正确的使用到这两个伪类,如果有知道正解的看官,烦请不吝赐教,感激不尽!
触发条件:(自己总结),当当前元素,在整个html文档中、或在其父元素的所有子元素序列中,有且只有一个它本身(没有其他相同兄弟元素)、或在其父元素的子元素中,只有它本身,修改其样式
兼容:IE8及8以下不支持 Opera9.5以下不支持
举个栗子
html代码:(为了避免权重问题,我分别为案例中所有的元素取了class名)
<main class='main'>
<div class='div'>
<span>我是div下的span(唯一的)</span>
</div>
<div class='div'>
<i class='i'>我是div下的i(唯一的)</i>
<p class='p'>我是div下的p1</p>
<p class='p'>我是div下的p2</p>
<span class='span'>我是div下的span(唯一的)</span>
</div>
<b>在整个html文档中,我是唯一的b元素</b>
</main>
css代码:
.main{
width: 40%;
}
.div{
margin-bottom: 30px;
width: 100%;
border: 1px solid #eee;
}
.p{
width: 100%;
font-size: 14px;
line-height: 20px;
text-align: center;
color:#660033;
}
.main:only-child{
display: inline-block;
text-align: left;/* 左对齐 */
color:#99FF33;/* 绿色 */
}
/* 下面的声明覆盖了上面的声明 */
.main:only-of-type{
display: inline-block;
text-align: right;/* 右对齐 */
color:red;/* 红色 */
}
效果图:
版权声明:本文为gavincz原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。