首页 web前端 前端问答 css3伪类和伪元素是什么意思

css3伪类和伪元素是什么意思

Jan 13, 2022 pm 01:01 PM
css3 伪元素 伪类

在css3中,伪类是一种用于已有元素处于某种状态时为其添加对应样式的选择器,且这个状态是根据用户行为而动态变化的;而伪元素的意思为"假元素"或者"伪装元素",是一个用于创建一些不在DOM树中的元素,并为其添加样式的选择器。

css3伪类和伪元素是什么意思

本教程操作环境:windows7系统、CSS3&&HTML5版、Dell G3电脑。

伪类是什么

伪类是一种用于已有元素处于某种状态时(滑动、点击等)为其添加对应样式的选择器,且这个状态是根据用户行为而动态变化的。

例如:当用户悬停在指定元素时,可以通过:hover来描述这个元素的状态,虽然它和一般css相似,可以为已有元素添加样式,但是它只有处于DOM树无法描述的状态下才能为元素添加样式,所以称为伪类。

伪元素是什么

伪元素直义理解就是"假元素"或者"伪装元素"。其实也可以这么理解, 伪元素实际上就是虚拟的元素,不存在的元素(code形式), 你也无发在文档中找到他们,因此说伪元素是虚拟元素。

伪元素是一个用于创建一些不在DOM树中的元素,并为其添加样式的选择器。

通过伪元素您不需要借助元素的 ID 或 class 属性就可以对被选择元素的特定部分定义样式。例如通过伪元素您可以设置段落中第一个字母的样式,或者在元素之前、之后插入一些内容等等。

伪类和伪元素的区别:

请看下面例子:

例一:

<ul>
  <li>第一列</li>
  <li>第二列</li>
</ul>
登录后复制

如果我们想要给第一列添加样式,我们可以通过以下两种方式:

(1)给第一列添加一个类,并在该类中定义样式:

<ul>
  <li class="first-item">第一列</li> 
  <li>第二列</li></ul>
</ul>
登录后复制
.first-item{color:orange;}
登录后复制

(2)如果不用添加类的方法,我们可以通过给第一个

  • 设置:first-child伪类来为其添加样式,这时,被修饰的li依然存在于DOM树中

    <ul>
      <li>第一个</li>
      <li>第二个</li>
    </ul>
    登录后复制
    li:first-child{color:orage;}
    登录后复制

    例二:

    <p>Hello World, and wish you have a good day!</p>
    登录后复制
    登录后复制

    想要给该段落第一个字母添加样式,可以有以下方法:

    (1)給第一个字母包裹元素,并给span设置样式:

    <p>
      <span class="first">H</span>ello World, and wish you have a good day!
    </p>
    登录后复制
    .first{color:red;}
    登录后复制

    (2)如果不创建元素,我们可以通过给

    元素设置P:first-letter伪元素为其添加样式,这时看起来像创建了一个虚拟的span元素并为其添加样式,但实际上在DOM数中并不存在这个span元素

    <p>Hello World, and wish you have a good day!</p>
    登录后复制
    登录后复制
    p:first-letter{color:red;}
    登录后复制

    从上述例子中我们可以看出:伪类的操作对象是文档树中已有的元素,而伪元素则创建了一个文档树外的元素。因此,伪类与伪元素的区别在于:有没有创建一个文档树之外的元素。

    伪元素使用单冒号还是双冒号?

    css3规范中要求使用双冒号(::)表示伪元素,以此来区分伪类和伪元素,比如::before和::after等伪元素使用双冒号(::),:hover:active伪类使用单冒号(:)。除了一些低于IE8版本的浏览器外,大部分浏览器都支持伪元素的双冒号(::)表示方法。

    然而除了少部分伪元素如::backdrop必须使用双冒号(::),大部分伪元素都支持单冒号和双冒号的写法,比如::after,写成:after一样可以正常运行。

    w3c标准中说到,虽然CSS3标准要求伪元素使用双冒号的写法,但也依然支持单冒号的写法。为了向后兼容,我们建议你在目前还是使用单冒号的写法。

    常用伪类有:

    • :active 选择正在被激活的元素(匹配指定状态)

    • :hover 选择被鼠标悬浮着的元素(匹配指定状态)

    • :link 选择未被访问的元素 (匹配指定状态)

    • :visited 选择已被访问的元素(匹配指定状态)

    • :first-child 选择满足是其父元素的第一个子元素的元素

    • :lang(value) 选择带有指定 lang 属性的元素

    • :focus 选择拥有键盘输入焦点的元素

    • :enable 选择每个已启动的元素

    • :disable 选择每个已禁止的元素

    • :checked 选择每个被选中的元素

    • :target 选择当前的锚点元素

    • :first-of-type 选择满足是其父元素的第一个某类型子元素的元素

    • :last-of-type 选择满足是其父元素的最后一个某类型子元素的元素

    • :only-of-type 选择满足是其父元素的唯一一个某类型子元素的元素

    • :nth-of-type(n) 选择满足是其父元素的第n个某类型子元素的元素

    • :nth-last-of-type(n) 选择满足是其父元素的倒数第n个某类型的元素

    • :only-child 选择满足是其父元素的唯一一个子元素的元素

    • :last-child 选择满足是其父元素的最后一个元素的元素

    • :nth-child(n) 选择满足是其父元素的第n个子元素的元素

    • :nth-last-child(n) 选择满足是其父元素的倒数第n个子元素的元素

    • :empty 选择满足没有子元素的元素

    • :in-range 选择满足值在指定范围内的元素

    • :out-of-range 选择值不在指定范围内的元素

    • :invalid 选择满足值为无效值的元素

    • :valid 选择满足值为有效值的元素

    • :not(selector) 选择不满足selector的元素

    • :optional 选择为可选项的表单元素,即没有“required”属性

    • :read-only 选择有"readonly"的表单元素

    • :read-write 选择没有"readonly"的表单元素

    • :root 选择根元素

    常用伪元素

    • ::first-letter 选择指定元素的第一个单词

    • ::first-line 选择指定元素的第一行

    • ::after 在指定元素的内容前面插入内容

    • ::before 在指定元素的内容后面插入内容

    • ::selection 选择指定元素中被用户选中的内容

    (学习视频分享:css视频教程

    以上是css3伪类和伪元素是什么意思的详细内容。更多信息请关注PHP中文网其他相关文章!

  • 本站声明
    本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

    热AI工具

    Undresser.AI Undress

    Undresser.AI Undress

    人工智能驱动的应用程序,用于创建逼真的裸体照片

    AI Clothes Remover

    AI Clothes Remover

    用于从照片中去除衣服的在线人工智能工具。

    Undress AI Tool

    Undress AI Tool

    免费脱衣服图片

    Clothoff.io

    Clothoff.io

    AI脱衣机

    Video Face Swap

    Video Face Swap

    使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

    热门文章

    <🎜>:泡泡胶模拟器无穷大 - 如何获取和使用皇家钥匙
    3 周前 By 尊渡假赌尊渡假赌尊渡假赌
    Mandragora:巫婆树的耳语 - 如何解锁抓钩
    3 周前 By 尊渡假赌尊渡假赌尊渡假赌
    北端:融合系统,解释
    3 周前 By 尊渡假赌尊渡假赌尊渡假赌

    热工具

    记事本++7.3.1

    记事本++7.3.1

    好用且免费的代码编辑器

    SublimeText3汉化版

    SublimeText3汉化版

    中文版,非常好用

    禅工作室 13.0.1

    禅工作室 13.0.1

    功能强大的PHP集成开发环境

    Dreamweaver CS6

    Dreamweaver CS6

    视觉化网页开发工具

    SublimeText3 Mac版

    SublimeText3 Mac版

    神级代码编辑软件(SublimeText3)

    热门话题

    Java教程
    1668
    14
    CakePHP 教程
    1428
    52
    Laravel 教程
    1329
    25
    PHP教程
    1273
    29
    C# 教程
    1256
    24
    纯CSS3怎么实现波浪效果?(代码示例) 纯CSS3怎么实现波浪效果?(代码示例) Jun 28, 2022 pm 01:39 PM

    纯CSS3怎么实现波浪效果?本篇文章就来给大家介绍一下使用 SVG 和 CSS 动画制作波浪效果的方法,希望对大家有所帮助!

    巧用CSS实现各种奇形怪状按钮(附代码) 巧用CSS实现各种奇形怪状按钮(附代码) Jul 19, 2022 am 11:28 AM

    本篇文章带大家看看怎么使用 CSS 轻松实现高频出现的各类奇形怪状按钮,希望对大家有所帮助!

    css怎么隐藏元素但不占空间 css怎么隐藏元素但不占空间 Jun 01, 2022 pm 07:15 PM

    两种方法:1、利用display属性,只需给元素添加“display:none;”样式即可。2、利用position和top属性设置元素绝对定位来隐藏元素,只需给元素添加“position:absolute;top:-9999px;”样式。

    css3怎么实现花边边框 css3怎么实现花边边框 Sep 16, 2022 pm 07:11 PM

    在css中,可以利用border-image属性来实现花边边框。border-image属性可以使用图片来创建边框,即给边框加上背景图片,只需要将背景图片指定为花边样式即可;语法“border-image: url(图片路径) 向内偏移值 图像边界宽度 outset 是否重复;”。

    原来利用纯CSS也能实现文字轮播与图片轮播! 原来利用纯CSS也能实现文字轮播与图片轮播! Jun 10, 2022 pm 01:00 PM

    怎么制作文字轮播与图片轮播?大家第一想到的是不是利用js,其实利用纯CSS也能实现文字轮播与图片轮播,下面来看看实现方法,希望对大家有所帮助!

    为什么伪元素失效了 为什么伪元素失效了 Nov 21, 2023 pm 05:13 PM

    伪元素失效了的原因:1、选择器问题;2、样式冲突;3、继承问题;4、语法错误;5、浏览器兼容性问题等。详细介绍:1、选择器问题,伪元素的选择器可能不正确,导致无法选择到目标元素;2、样式冲突,如果在CSS中存在样式冲突,可能会导致伪元素失效;3、继承问题,伪元素可能无法继承某些样式属性;4、语法错误,如果在CSS中存在语法错误,可能会导致伪元素失效;5、浏览器兼容性问题等等。

    使用:nth-child(n+3)伪类选择器选择位置大于等于3的子元素的样式 使用:nth-child(n+3)伪类选择器选择位置大于等于3的子元素的样式 Nov 20, 2023 am 11:20 AM

    使用:nth-child(n+3)伪类选择器选择位置大于等于3的子元素的样式,具体代码示例如下:HTML代码:&lt;divid="container"&gt;&lt;divclass="item"&gt;第一个子元素&lt;/div&gt;&lt;divclass="item"&

    巧用CSS3滤镜制作文字快闪切换动画效果! 巧用CSS3滤镜制作文字快闪切换动画效果! Jul 20, 2022 am 10:55 AM

    本篇文章带大家看看怎么利用CSS3滤镜实现高级感拉满的文字快闪切换动画效果,希望对大家有所帮助!

    See all articles