class 和 id 的使用场景?
- id:指定标签的唯一标识,id属性的值,在当前的page页面要是唯一的。
- class:可以用来选择同一类型的元素,class属性的值可以有多个。
CSS选择器常见的有几种?
-
基础选择器
- 通配符选择器
- id选择器
- 类选择器
- 标签选择器
-
组合选择器
- 多元素选择器:以','分隔,表示同时匹配多个选择器对应的元素
- 后代选择器:以空格分隔
-
属性选择器
- E[attr]:筛选出所有具有属性名为attr的属性的元素
- E[attr=value]:筛选出所有属性attr的值为vlaue的元素
-
伪类选择器
- E:link:未被访问时的样式
- E:visited:已经被访问后的样式
- E:hover:鼠标悬停在a链接之上的样式
- E:active:鼠标按下但未释放时的样式
- E:first-child:父元素的各类标签中第一个子元素且必须符合指定类型(为E)
- E:nth-child:匹配其父元素的第n个子元素
-
伪元素选择器
- E:before:在E元素之前插入的内容
- E:after:在E元素之后插入的内容
选择器的优先级是怎样的?对于复杂场景如何计算优先级?
- css优先级
- 在属性后面使用 !important 会覆盖页面内任何位置定义的元素样式。
- 作为style属性写在元素内的样式
- id选择器
- 类选择器
- 标签选择器
- 通配符选择器
- 浏览器自定义或继承
- 对于复杂场景优先级的计算
CSS优先级:是由四个级别和各级别的出现次数决定的。
四个级别分别为:行内选择符、ID选择符、类别选择符、元素选择符。
优先级的算法:
每个规则对应一个初始"四位数":0、0、0、0
若是 行内选择符,则加1、0、0、0
若是 ID选择符,则加0、1、0、0
若是 类选择符/属性选择符/伪类选择符,则分别加0、0、1、0
若是 元素选择符/伪元素选择符,则分别加0、0、0、1
算法:将每条规则中,选择符对应的数相加后得到的”四位数“,从左到右进行比较,大的优先级越高。
a:link, a:hover, a:active, a:visited 的顺序是怎样的? 为什么?
顺序为:
a:link
a:visited
a:hover
a:active
原因:
当鼠标移动到a标签上,此时与标签颜色相关的选择器有:a:link,a:visited,a:hover,这三个选择器拥有相同的优先级,但是被写在最后的选择器会覆盖掉之前的选择器,因此要想实现“当鼠标移动到a标签上变换颜色”的效果,需要将a:hover置于 a:link 和 a:visited 之后
当鼠标点击a标签,此时与标签颜色相关的选择器有:a:link,a:visited,a:hover和a:active,这四个选择器拥有相同的优先级,但是被写在最后的选择器会覆盖掉之前的选择器,因此要想实现“当鼠标点击a标签时变换颜色”的效果,需要将a:active置于a:link,a:visited,a:hover 之后
以下选择器分别是什么意思?
列出你知道的伪类选择器
E:first-child 匹配元素E的第一个子元素
E:link 匹配所有未被点击的链接
E:visited 匹配所有已被点击的链接
E:active 匹配鼠标已经其上按下、还没有释放的E元素
E:hover 匹配鼠标悬停其上的E元素
E:enabled 匹配表单中可用的元素
E:disabled 匹配表单中禁用的元素
E:checked 匹配表单中被选中的radio或checkbox元素
E::selection 匹配用户当前选中的元素
E:nth-child(n) 匹配其父元素的第n个子元素,第一个编号为1
E:nth-last-child(n) 匹配其父元素的倒数第n个子元素,第一个编号为1
E:nth-of-type(n) 与:nth-child()作用类似,但是仅匹配使用同种标签的元素
E:nth-last-of-type(n) 与:nth-last-child() 作用类似,但是仅匹配使用同种标签的元素
E:last-child 匹配父元素的最后一个子元素,等同于:nth-last-child(1)
E:first-of-type 匹配父元素下使用同种标签的第一个子元素,等同于:nth-of-type(1)
E:last-of-type 匹配父元素下使用同种标签的最后一个子元素,等同于:nth-last-of-type(1)
E:only-child 匹配父元素下仅有的一个子元素,等同于:first-child:last-child或 :nth-child(1):nth-last-child(1)
E:only-of-type 匹配父元素下使用同种标签的唯一一个子元素,等同于:first-of-type:last-of-type或 :nth-of-type(1):nth-last-of-type(1)
E:not(selector) 匹配不符合当前选择器的任何元素
div:first-child和div:first-of-type,div :first-child和div :first-of-type的作用和区别
- div:first-child:选择属于其父元素的首个子元素的每个div元素,并为其设置样式
- div:first-of-type:选择器匹配属于其父元素的特定类型的首个子元素的每个元素。
- div :first-child:选择所有div元素下的所有元素中属于其父元素首个元素的元素
- div :first-of-type:选择所有div元素下的所有元素属于其父元素特定类型的首个子元素的每个元素
- 运行如下代码: