伪类,伪元素的了解|青训营笔记

95 阅读5分钟

这是我参与「第四届青训营 」笔记创作活动的第13天

今天稍微看了一下mdn里面关于伪类和伪元素的一些文档

伪元素和伪类是css中的。关于伪元素,之前的我曾经想过用js操控伪元素,但是事实证明不行,除非直接修改css文件。

区分伪元素和伪类,这两个词有点容易混淆,但是注意一点,就是伪元素有一个元素,代表是dom,

其核心是创建而你能够迅速想到::before和::after就是生成一个元素

你可以对元素进行操控,设置内容,设置属性,颜色

介绍

伪元素以类似方式表现,就像元素一样,使用::

伪元素可以实现一些东西,比如说不会影响js操作,可以动态的实现一些功能,在mdn中举了一个例子,我觉的很典型

大意就是在一段几行长的p标签内,想让第一行加粗,但是你并不知道第一行怎样选择,这就可以使用伪元素::first-line来操作

  • 不是所有的标签都支持伪类,如果img,iframe,input这几个标签,这是因为要标签支持伪类,需要保证该标签能够插入内容,像上面的几个标签因为无法插入内容,所以不支持伪类
  • 伪元素会影响文档流(在不加上float或者position的情况下),它就是相当于js插进去

选择器

伪元素使用::来进行学习

  • after

和before一样经典,是一个经常使用的伪元素,

经常使用content

如果使用它来添加样式不一样的元素会自动排在父元素的后面

虽然好用,但是可惜就两个

  • before
  • first-letter

匹配首字母

  • first-line

匹配首行

  • selection

匹配文档被选中的那部分,这个有用,因为我觉得选中的时候高亮很丑好吧。

伪类

  • active

用户激活的元素,代表用户按下按键和松开按键之间的时间。一般用在a标签和button标签

  • blank

匹配输入值为空的input元素

  • checked

匹配处于选中装填的元素或者复态框

  • current

正在展示的元素或者它的上级元素(未翻译)

  • deafult

匹配一组相似的元素中默认的

  • disabled

匹配被禁用的元素,想起button的禁用按钮

  • empty

匹配没有子元素的元素

  • enabled

匹配任何被启用的元素。启用是跟disabled反过来的,也就是可以选择,点击,接受文本输入,获取焦点

  • first-child

在开始写这段笔记时,我已经有一些记忆错乱了,first-child不是真的关于子元素,它是兄弟元素的匹配。

在一篇胡扯的博客上,认为first-child就是选择子元素,这是错误的,事实上在每一个嵌套的结构中该伪类都会尝试去匹配,除非已经提前匹配

这里扯到一些元素选择器和非元素选择器,元素选择器如p:first-child匹配的同列表元素的第一个标签为p的元素

注意只能为p,而且还得是第一个

非元素选择器其实就是class选择器和id选择器,非元素选择器需要更多的条件,它需要第一个标签的类名相等

  • first-of-type

表示第一个匹配到的元素,这个伪类不会想first-child一样位置固定,它会在同级别依次去找,直到找到第一个

  • last-child
  • last-of-type

该伪类就是把第一个编程第二个

  • nth-child

表示选择位置为第几个的元素,注意选择的数字不像

  • nth-last-child
  • nth-last-of-type
  • focus

表示获得焦点时,即点击,用tab键转化到输入框也算

注意仅限于焦点元素,就是类似于a,button这些可点击的标签

  • focus-visible

不懂,告辞

  • focus-within

这个跟上者的区别在于嵌套方面上,使用focus-visible可以包含焦点元素,mdn文档上用于当input标签获得焦点的时候,其整个表单元素都会高亮

  • future

匹配当前元素后面的元素

  • hover

经常使用,注意获得焦点和鼠标经过是不同的两个概念,我刚开始的时候混在一起了

经典中的经典,注意在使用less和scss时需要嵌套使用的时候,要一步一步去链接,不要跳步

  • indeterminate

匹配状态不明显的表单元素

  • in-range

匹配input为选择数字的表单元素,就是type为number的input元素,当选择的数值没有超过该范围(就是要提前设置max和min)

垃圾

  • out-range

看上面,该伪类表示数值超过范围

  • invlid

匹配内容未通过的p元素

  • lang

匹配文字,废物

  • link

匹配未曾访问的链接

  • local-link

匹配指向和当前文档同一网站页面的链接。

  • not()

表示匹配与选择器不一样的元素,也叫反选择器,注意填入的是可以是伪类

  • only-child

匹配没有兄弟元素,只有自己的元素

  • only-of-type

匹配兄弟元素中类型仅有的元素

  • optional

匹配不是必选的表单元素

  • past

匹配该元素之前的元素,

  • placeholder-shown

匹配有placeholder的元素

  • p;aying
  • paused
  • read-onlu
  • read-write
  • required
  • right
  • root
  • scope
  • valid
  • target

匹配当前链接目标的伪类,其实就只有零点几秒,当页面在跳转的时候会匹配到

  • visited

匹配已经跳转过的元素,这个适用于链接是blank属性的也就是创建一个新的页面

  • left

垃圾

  • first

打印文档的第一页,应该没用