css3的伪类和伪元素的区别是什么

青灯夜游
Freigeben: 2021-12-22 10:54:04
Original
5363 Leute haben es durchsucht

区别:1、伪类用于已有元素处于某种状态时为其添加对应的样式,而伪元素用于创建一些不在DOM树中的元素并为其添加样式;2、伪元素会创建一个文档树之外的元素,伪类不会;3、伪元素使用双冒号“::”表示,伪类使用单冒号“:”表示。

css3的伪类和伪元素的区别是什么

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

什么是伪类和伪元素

提到“伪”字,你想到了什么?“假的”,“汪精卫伪政府”,“不存在的”······

伪类:用于已有元素处于某种状态时(滑动、点击等)为其添加对应的样式,这个状态是根据用户行为而动态变化的。我的理解就是:本身不存在,只有在特定的情况(滑动、点击)下才会被触发的状态,可以用css去修饰这个状态下的对象。例如:当用户悬停在指定元素时,可以通过:hover来描述这个元素的状态,虽然它和一般css相似,可以为已有元素添加样式,但是它只有处于DOM树无法描述的状态下才能为元素添加样式,所以称为伪类。

伪元素:用于创建一些不在DOM树中的元素,并为其添加样式。例如,我们可以通过:before来在一个元素之前添加一些文本,并为这些文本添加样式,虽然用户可以看见这些文本,但是它实际上并不在DOM文档中。

伪类和伪元素的区别:

请看下面例子:

例一:

  • 第一列
  • 第二列
Nach dem Login kopieren

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

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

  • 第一列
  • 第二列
.first-item{color:orange;}
Nach dem Login kopieren

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

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

    • 第一个
    • 第二个
    li:first-child{color:orage;}
    Nach dem Login kopieren

    例二:

    Hello World, and wish you have a good day!

    Nach dem Login kopieren

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

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

    Hello World, and wish you have a good day!

    .first{color:red;}
    Nach dem Login kopieren

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

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

    Hello World, and wish you have a good day!

    p:first-letter{color:red;}
    Nach dem Login kopieren

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

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

    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视频教程

    Das obige ist der detaillierte Inhalt voncss3的伪类和伪元素的区别是什么. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

  • Verwandte Etiketten:
    Quelle:php.cn
    Erklärung dieser Website
    Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
    Neueste Downloads
    Mehr>
    Web-Effekte
    Quellcode der Website
    Website-Materialien
    Frontend-Vorlage
    Über uns Haftungsausschluss Sitemap
    Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!