伪选择器-伪类vs伪元素

伪类与伪元素都很常见,我们经常使用伪类来实现执行一些操作之后样式的变化,比如:link,:active,:hover,:visited等伪类经常被添加到元素上来实现一个链接不同状态下的不同效果。

本文思路:

伪类与伪元素是什么?有何异同?对应的应用场景?

那么先说下伪选择器吧。

首先,伪类与伪元素都属于伪选择器;都是为了改变样式而存在的。

一般来说,我们 都是通过JS控制DOM来改变样式的,而伪选择器则是另一种不用通过JS来改变样式的方法。

其次,伪选择器是为了修饰在文档中不存在的一部分


伪类与伪元素之所以存在,必然是为了弥补当下既有的普通类与普通选择器的不足,完成它们不能完成的工作,使得某些行为更具灵活性。

所以,我们需要知道它们的工作原理,其次,分析它们 之间的不同,再思考实际应用场景当中如何应用它们使工作得心应手。


什么是伪类?

伪类通常是添加一个实际的类,并为它添加效果;

它可以通过选择器找到那些不存在DOM树中的信息,并且不能被常规CSS选择器找到的信息。

一般之前会添加一个冒号表示这是一个伪类。



什么是伪元素?

伪元素类似于添加一个实际的元素,完成普通选择器不能完成的工作;

本身是基于元素的抽象,并不存在于文档结构中。

一般之前会添加两个冒号表示这是一个伪选择器。

————————————————

常见的伪元素选择器:

::first-letter 选择元素文本的第一个字(母)。

  ::first-line 选择元素文本的第一行。

  ::before 在元素内容的最前面添加新内容。

  ::after 在元素内容的最后面添加新内容。

  ::selection匹配用户被用户选中或者处于高亮状态的部分

  ::placeholder匹配占位符的文本,只有元素设置了placeholder属性时,该伪元素才能生效。


如果网站只需要兼容 webkit、firefox、opera 等浏览器,伪元素最好采用双冒号的写法,如果不得不兼容 IE 浏览器,还是用 CSS2 的单冒号写法比较安全。


关于伪类的补充----伪类有以下几种类型:

1.状态伪类

用户交互过程中元素状态是动态变化的,并且会根据状态呈现不同样式。当元素处于某状态时会呈现该样式,而进入另一状态后,该样式也会失去。

常见的状态伪类主要包括:

      :link 应用于未被访问过的链接;   

      :hover 应用于鼠标悬停到的元素;

      :active 应用于被激活的元素;

      :visited 应用于被访问过的链接,与:link互斥。

      :focus 应用于拥有键盘输入焦点的元素。

————————————————

2.结构化伪类

CSS3新增的选择器,利用DOM树进行元素过滤,通过文档结构的互相关系来匹配元素,可以减少Id与class属性定义,使文档结构更简洁。

常见的结构性伪类包括:

      :first-child 选择某个元素的第一个子元素; 

      :last-child 选择某个元素的最后一个子元素;

      :nth-child() 选择某个元素的一个或多个特定的子元素;

      :nth-last-child() 选择某个元素的一个或多个特定的子元素,从这个元素的最后一个子元素开始算;

      :nth-of-type() 选择指定的元素;

      :nth-last-of-type() 选择指定的元素,从元素的最后一个开始计算;

      :first-of-type 选择一个上级元素下的第一个同类子元素;

      :last-of-type 选择一个上级元素的最后一个同类子元素;

      :only-child 选择的元素是它的父元素的唯一一个子元素;

      :only-of-type 选择一个元素是它的上级元素的唯一一个相同类型的子元素;

      :empty 选择的元素里面没有任何内容。

      :checked匹配被选中的input元素,这个input元素包括radio和checkbox。

      :default匹配默认选中的元素,例如:提交按钮总是表单的默认按钮。

      :disabled匹配禁用的表单元素。

      :enabled匹配没有设置disabled属性的表单元素。

      :valid匹配条件验证正确的表单元素。


应用场景

一.伪类

1.清除浮动

2.元素垂直居中(基线)

3.给盒子添加阴影(rgba代替box-shadow,也可以避免repaint,也是CSS性能优化的方法之一)

做法:设置一个空的伪元素设置阴影透明度为0隐藏,再通过鼠标悬停恢复它的透明度。

4.面包屑导航(用:before添加content,再添加/)

5.对话框的小箭头

6.提示框

7.自动打字效果(光标)

8.文章水印

9.图片遮罩

————————————————

二.伪元素

1.清除浮动

2.画分割线

3.计数器

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,271评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,275评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,151评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,550评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,553评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,559评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,924评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,580评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,826评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,578评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,661评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,363评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,940评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,926评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,156评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,872评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,391评论 2 342