简化开发流程的CSS伪类元素

103 阅读3分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第9天,点击查看活动详情

伪类是什么

伪类是能够指定元素的特殊状态,会根据用户的行为而改变元素的状态。

伪元素又是什么

伪元素是在现有元素上添加某部分内容或者样式。

:not()

:not()用来匹配不符合一组选择器的元素。 如果希望某个样式不作用到选择器上,可以使用:not(选择器)或者减少重复性的代码,这个可能在css预处理器里面用来要爽一点。

//style
 <style>
      p:not(.bg_not){
       background-color: aqua;
      }
    </style>
<body>
    <p class="bg_not">这是使用not的</p>
    <p class="bg_not">这是使用not的</p>
    <p class="bg_not">这是使用not的</p>
    <p>这是不使用not的</p>
</body>

结果如下:

not.png

:is()

:is()伪类函数将选择器列表作为参数,并选择该列表中任意一个选择器可以选择的元素。

 <style>
      :is(div,article,nav) p:hover{
        color: aqua;
      }
      /*
       改伪类可以帮助我们简化代码;
       上述写法和下面的代码完全等价:
       div p:hover,
      article p:hover,
      nav p:hover{
        color: aqua;
      }

      */
    </style>
<body>
    <div>
        <p>hover一下改变颜色</p>
    </div>
    <article>
        <p>hover一下改变颜色</p>
    </article>
    <nav>
        <p>hover一下改变颜色</p>
    </nav>
</body>

:where()

和:is功能性差不多,但是它不会增加整体选择器的特殊性,总是为0

 :where(div,article,nav) p:hover{
        color: aqua;
      }
      /* 和下面代码等价 */
      div p:hover,
      article p:hover,
      nav p:hover{
        color: aqua;

      }

      <div>
        <p>hover一下改变颜色</p>
    </div>
    <article>
        <p>hover一下改变颜色</p>
    </article>
    <nav>
        <p>hover一下改变颜色</p>
    </nav>

::first-letter

会选择某个块级元素的第一行的第一个字母(文字)为其添加样式

p::first-letter{
        font-size: 30px;
        color: red;
    }  
     <div>
        <p> 蜀道难,难于上青天 </p>
    </div>

firstLeeter.png

可以替代span等标签将第一个字母包裹起来的情况,如:

span{
       font-size: 30px;
       color: red;
   }  
   <div>
       <p> <span> 蜀</span>道难,难于上青天 </p>
   </div>

::first-line

这个是将块级元素的第一行添加样式,受其元素宽度,文档宽度和文本的文字大小等因素制约

p{
        width: 300px;
    }
    p::first-line{
        font-size: 30px;
        color: red;
    }    
    <div>
        <p>噫吁嚱,危乎高哉!蜀道之难,难于上青天!蚕丛及鱼凫,开国何茫然!尔来四万八千岁,不与秦塞通人烟。西当太白有鸟道,可以横绝峨眉巅。地崩山摧壮士死,然后天梯石栈相钩连。上有六龙回日之高标,下有冲波逆折之回川。黄鹤之飞尚不得过,猿猱欲度愁攀援。青泥何盘盘,百步九折萦岩峦。扪参历井仰胁息,以手抚膺坐长叹。 </p>
    </div>

在p标签宽度在300px下展示的结果:

first-line1.png 在p标签宽度在500px下展示的结果:

first-line2.png

::selection

将被用户高亮的内容添加样式

        width: 500px;
    }
    p::selection{
        color: red;
        background-color: aquamarine;
    }    
     <div>
        <p>噫吁嚱,危乎高哉!蜀道之难,难于上青天!蚕丛及鱼凫,开国何茫然!尔来四万八千岁,不与秦塞通人烟。西当太白有鸟道,可以横绝峨眉巅。地崩山摧壮士死,然后天梯石栈相钩连。上有六龙回日之高标,下有冲波逆折之回川。黄鹤之飞尚不得过,猿猱欲度愁攀援。青泥何盘盘,百步九折萦岩峦。扪参历井仰胁息,以手抚膺坐长叹。 </p>
    </div>

selection.png