css中伪类和伪元素

刚开始看到这两个东西的时候还以为这两个是一样的,是因为没有很清楚的了解它们,所以就研究了一下它两是什么以及有什么不同。

伪类

w3中是这样定义伪类的:

CSS 伪类用于向某些选择器添加特殊的效果。

而css3是这样描述的,感觉更容易理解一点

  • 伪类存在的意义是为了通过选择器找到那些不存在与DOM树中的信息以及不能被常规CSS选择器获取到的信息。
  • 伪类由一个冒号:开头,冒号后面是伪类的名称和包含在圆括号中的可选参数。
  • 任何常规选择器可以在任何位置使用伪类。伪类语法不区别大小写。一些伪类的作用会互斥,另外一些伪类可以同时被同一个元素使用。并且,为了满足用户在操作DOM时产生的DOM结构改变,伪类也可以是动态的。

伪类种类



举个例子理解会更容易些:

p:first-child {
  color: red;
  } 
///下面是html
<p>first</p>
<p>second</p>

该代码表示匹配第一个<p>元素,则显示为

伪元素

w3中是这样定义伪类的:

CSS 伪元素用于将特殊的效果添加到某些选择器。

再看看css3中是如何定义的:

  • 伪元素在DOM树中创建了一些抽象元素,这些抽象元素是不存在于文档语言里的(可以理解为html源码)。比如:documen接口不提供访问元素内容的第一个字或者第一行的机制,而伪元素可以使开发者可以提取到这些信息。并且,一些伪元素可以使开发者获取到不存在于源文档中的内容(比如常见的::before,::after)。
  • 伪元素的由两个冒号::开头,然后是伪元素的名称。
  • 使用两个冒号::是为了区别伪类和伪元素(CSS2中并没有区别)。当然,考虑到兼容性,CSS2中已存的伪元素仍然可以使用一个冒号:的语法,但是CSS3中新增的伪元素必须使用两个冒号::。
  • 一个选择器只能使用一个伪元素,并且伪元素必须处于选择器语句的最后。

简单来说,伪元素创建了一个虚拟容器,这个容器不包含任何DOM元素,但是可以包含内容。
伪元素种类



那么再举个例子说明伪元素:

p::first-letter 
{
   color: red;
}
///下面是html
<p>first</p>

此代码主要是给<p>标签的第一个字母添加了样式,所以其显示为:

区别:

  • 伪类本质上是为了弥补常规CSS选择器的不足,以便获取到更多信息,而伪元素本质上是创建了一个有内容的虚拟容器;
  • CSS3中伪类和伪元素的语法不同,一个是一个冒号:,一个是两个冒号::;
  • 可以同时使用多个伪类,但只能同时使用一个伪元素;
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 本文转载自:众成翻译译者:为之漫笔链接:http://www.zcfy.cc/article/239原文:http...
    极乐君阅读 7,412评论 1 62
  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,814评论 1 92
  • 用处 普通基于元素或基于类的样式定义像这样 p {color: red;text-align: center;}这...
    西北偏北阅读 1,353评论 1 3
  • 如果您是一个网页设计和开发者的老手,我想你肯定使用过伪类和伪元素。但我还是建议你去查看一下目录表,可能其中的一两项...
    am1ng阅读 979评论 0 2
  • UISplitViewController用于把屏幕分割为左右两部分,一般左边显示导航视图,在右边显示相应的...
    阿吖嗄阅读 5,962评论 6 1