伪元素初解

一、伪元素与伪类

1. 常见的伪类

:active      <!--向被激活的属性添加样式-->
:hover       <!--当鼠标悬浮于元素上方时,向元素添加样式-->
:link        <!--向未被访问的链接添加样式-->
:visited     <!--想已被访问的链接添加样式-->
etc.

2. 伪元素

::before       <!--在元素之前添加内容-->
::after        <!--在元素之后添加内容-->
::first-letter <!--向文本的第一个字母添加特殊样式-->
::first-line   <!--向文本的首行添加特殊样式-->
::selection    <!--向选中的内容添加样式-->

二、伪元素(这里只说::before和::after)

1. 了解

  • 创建一个虚假元素插入到元素的前或者后
  • 它不在文档流中,无法使用正常的DOM操作;
  • 它可以用css去操控
  • 在技术上来说,与添加一个span标签等价
  • :before/:after写法也可以被浏览器解析,但是为了区别于伪类,还是建议用两个冒号书写
  • 注意:因为其很难使用DOM操作,所以需要交互的部分不要使用伪元素去生成

2. ::before/::after基本语法

  • css样式中必须加入content属性

  • content属性以表示该伪元素中的内容;若无内容则用空字符串表示

      .p1::before{
          content: "我是一个:before";
      }
      .p1::after{
          content: "我是一个:after";
      }
    

3. 效果分析

  • 可以看到伪元素效果在技术上与span等价

  • 伪元素在浏览器检解析中的位置是在父元素内容的前后



      *{
          margin: 0;
          padding: 0;
      }
      .p1::before{
          content: "我是一个:before";
          background-color: skyblue;
      }
      .p1::after{
          content: "我是一个:after";
          background-color: skyblue;
      }
      span{
          background-color: skyblue;
      }
      p{
          width: 400px;
          background-color: pink;
          text-align: center;
      }
      
      <!--html-->
      
      <p class="p1">我是一个p1</p>
      <p class="p2">
          <span>我是一个:before</span>我是一个p2<span>我是一个:after</span>
      </p>
    

4. 再来个例子

  • 伪元素常配合定位来生成父级的某些附加部分,如下图米奇的耳朵



      *{
          margin: 0;
          padding: 0;
      }
      div{
          width: 100px;
          height: 100px;
          border: 2px solid black;
          border-radius: 50%;
          position: relative;
          left: 200px;
          top: 200px;
      }
      div::before{
          content: "";
          width: 40px;
          height: 40px;
          background-color: black;
          border-radius: 50%;
          position: absolute;
          left: -14px;
          top: -24px;
      }
      div::after{
          content: "";
          width: 40px;
          height: 40px;
          background-color: black;
          border-radius: 50%;
          position: absolute;
          left: 74px;
          top: -24px;
      }
      
      <!--html部分-->
      
      <div class="head"></div>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 各种纯css图标 CSS3可以实现很多漂亮的图形,我收集了32种图形,在下面列出。直接用CSS3画出这些图形,要比...
    剑残阅读 13,239评论 0 8
  • 1、垂直对齐 如果你用CSS,则你会有困惑:我该怎么垂直对齐容器中的元素?现在,利用CSS3的Transform,...
    kiddings阅读 8,375评论 0 11
  • 1、属性选择器:id选择器 # 通过id 来选择类名选择器 . 通过类名来选择属性选择器 ...
    Yuann阅读 5,556评论 0 7
  • 转自理解伪元素 :before 和 :after层叠样式表(CSS)的主要目的是给HTML元素添加样式,然而,在一...
    种谔阅读 4,336评论 0 3
  • 都說人是環境的產物,一點也不假,在這個浮躁的社會裡,我們身在其中,很多人被感染,被左右,也變得開始浮躁,忘了自己是...
    露丹儿阅读 3,502评论 0 0