1.class 和 id 的使用场景?
id:指定标签的唯一标识
①根据提供的唯一id号,快速获取标签对象。如:document.getElementById(id)
②用于充当label标签for属性的值:示例:<label for="userid">用户名:</label>,表示单击此label标签时,id为userid的标签获得焦点。
3. class:指定标签的类名
应用场景
①CSS操作,把一些特定样式放到一个class类中,需要此样式的标签,可以在添加此类。
2.CSS选择器常见的有几种?
id选择器
类选择选择器(class)
属性选择器(【 】)
派生选择器(E元素 子元素) 选择E元素下的所有子元素
子元素选择器(E>子元素) 选择父元素直接对应的第一个子元素
伪类选择器(E:hover等等)
标签选择器(E{ })
分组选择器(E,F)/*加个,*/
通用选择器(* { })/*包括所有内容*/
3.选择器的优先级是怎样的?对于复杂场景如何计算优先级?
精确到越详细权重越高
1.加!important 2.style写在标签的内联样式 3.id选择器 4.类选择器class 5.伪类选择器 6.属性选择器 7.标签 8.通配符选择器 9. 浏览器自定义
根据组合选择器按照以下规则统计各类选择器的个数:
行内样式 --> 统计为a
ID选择器 --> 统计为b
类、属性选择器、伪类选择器 --> 统计为c
标签选择器、伪类选择器 --> 统计为d
先比较a值的大小,a值大的则优先级高;如果a值相等,则再比较b值的大小,b值大的优先级高;如果b值相等,则比较c值的大小,c值大的优先级高;如果c值相等,则比较d值的大小,d值大的优先级高;
4.a:link, a:hover, a:active, a:visited 的顺序是怎样的? 为什么?
a:link {color: #FF0000} /* 未访问时的状态 */
a:visited {color: #00FF00} /* 已访问过的状态 */
a:hover{color: #FF00FF} /* 鼠标移动到链接上时的状态 */
a:active {color: #0000FF} /* 鼠标按下去时的状态 */
爱恨原则”(LoVe/HAte),即四种伪类的首字母:LVHA。
当鼠标移动到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 之后
5.以下选择器分别是什么意思?
6.列出你知道的伪类选择器
E:first-child:匹配元素E的第一个子元素
E:link :匹配素有未被点击的链接
E:visited :匹配所有已经被点击的链接
E:active :匹配鼠标已经在其上按下,但是还没有释放的E元素
E:hover :匹配鼠标悬停其上的E元素
E:focus :匹配获得当前焦点的E元素
E:lang(c) :匹配lang属性等于c的元素
E:enabled :匹配表单中可用的元素
Edisabled :匹配表单中禁用的元素
E:checked: 匹配表单中被选中的radio或checkbox元素
E:selection: 匹配用户当前选中的元素
E:root :匹配文档的根元素,对于HTML文档,就是HTML元素
E:nth-child(n) :匹配其父元素的第n个子元素,第一个编号为1
E:nth-last-child :匹配其父元素的第n个子元素,第一个编号为1
E:nth-of-type(n):与:nth-child作用类似,但是仅匹配使用同种标签的元素
E:nth-last-of-type(n) :与nth-last-child作用相似,但是仅匹配使用同种标签的元素
E:first-child:匹配父元素的第一个子元素
E:last-child :匹配父元素的最后一个子元素
E:first-of-type :即 E:nth-of-type(1)
E:last-of-type :即 E:nth-last-of-type(1)
E:only-child :匹配父元素下仅有的一个子元素
E:only-of-type :匹配父元素下使用同种标签的唯一一个子元素
伪元素选择器
E::first-line :匹配E元素内容的第一行
E::first-letter :匹配E元素内容的第一个字母
E::before :在E元素之前插入生成的内容
E::after :在E元素之后插入生成的内容
7.div:first-child和div:first-of-type的作用和区别
:first-child匹配的是某父元素的第一个子元素,可以说是结构上的第一个子元素。
:first-of-type匹配的是某父元素下相同类型子元素中的第一个,比如 p:first-of-type,就是指所有类型为p的子元素中的第一个。这里不再限制是第一个子元素了,只要是该类型元素的第一个就行了。
8.运行如下代码,解析下输出样式的原因。