CSS:好玩的‘伪类’系列之——(:only-child与:only-of-type)

  • Post author:
  • Post category:其他



: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 版权协议,转载请附上原文出处链接和本声明。