伪类和伪元素的区别

(理解)伪类和伪元素的区别

学习这么长时间对于一些基本点还是不太理解,所以在这里进行了区分

第一种理解
    伪类用于向某些选择器添加特殊的效果。
    伪元素用于将特殊的效果添加到某些选择器。
第二种理解

伪类的效果可以通过添加一个实际的类来达到,而伪元素的效果则需要通过添加一个实际的元素才能达到,这也是为什么他们一个称为伪类,一个称为伪元素的原因。

伪类有::first-child ,:link:,vistited,:hover,:active,:focus,:lang

伪元素有::first-line,:first-letter,:before,:after

伪元素和伪类之所以这么容易混淆,是因为他们的效果类似而且写法相仿,但实际上 [css3]为了区分两者,已经明确规定了伪类用一个冒号来表示,而伪元素则用两个冒号来表示。

`:Pseudo-classes         //伪类

::Pseudo-elements       //伪元素

但因为兼容性的问题,所以现在大部分还是统一的单冒号,但是抛开兼容性的问题,我们在书写时应该尽可能养成好习惯,区分两者。


伪元素选择器

::first-line 匹配文本块的首行
::first-letter 选择文本块的首字母 :
:before 与 ::after ——使用 contnet 属性生成额外的内容并插入在标记中:


伪类选择器

E F:nth-child(n):该选择器定位元素E的第n个子元素的元素F:
div.class p:nth-child(3) {color:#f00;} //class=”class”的div容器里的第3个元素p,如果第3个子元素不是p,此样式将失效

E F:nth-last-child(n):该选择器定位元素E的倒数第n个子元素的元素F;
E:nth-of-type(n):该选择器定位元素E的第n个指定类型子元素;
E:nth-lash-of-type(n):该选择器定位元素E的导数第n个指定类型子元素:
.class p:nth-child(2) 与 .class p:nth-of-type(2) 的区别在于,如果.class里的第2个子元素不是P元素时,.class p:nth-child(2) 的样式将无效,而.class p:nth-of-type(2) 将定位在 .class 里的第2个p元素

nth-child(n)、nth-last-child(n)、nth-of-type(n)、nth-last-of-type(n),这其中的 n 可以使用数字静态式,比如 .nth-child(2n+1) 将匹配第1、3、5…个元素

E:first-child:父元素的第一个子元素E,与:nth-child(1)相同;
E:last-child:父元素的倒数第一个子元素E;
E:first-of-type:与:nth-of-type(1)相同;
E:last-of-type:与:nth-last-of-type(1)相同;
E:only-child:父元素中唯一的子元素E;
E:only-of-type:父元素中唯一具有该类型的元素E;
E:empty:没有子元素的元素,没有子元素包括文本节点;
E:lang(en):具有使用双字母缩写(en)表示的语言的元素;
E:not(exception):该选择器将选择与括号内的选择器不匹配的元素:
:root —— root 选择页面的根元素
p:not(.item3)——not 排除某个或者某类元素——not(被排除的元素)
div:empty——指定的前面选择器所选的元素内容为空则生效。

–input的伪类选择器–
input:focus——当输入框获取焦点的时候应用此样式
input:enabled——起用状态下的样式
input:disabled——禁用状态下的样式
input:read-only——在输入框为只读状态下的样式
input:read-write——输入框为可读可写状态下的样式
input:checked——checked 表示选中状态下checkbox 的样式
input:indeterminate + label——checkbox 半选择状态下的样式
indeterminate——需要配合JS来使用(以下是JS代码)

var checkBox = document.querySelector("#box6>input");
//半选择状态 只能用js来设置
checkBox.indeterminate = true;
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值