任务7

1.class 和 id 的使用场景?

  • class在一个html标签中可以有很多个相同的class,但是id的话一个HTML标签只能有相同的一个。

2.CSS选择器常见的有几种?

1.基础选择器
2.组合选择器
3.属性选择器
4.伪类选择器
5.伪元素选择器

3.选择器的优先级是怎样的?对于复杂场景如何计算优先级?

  • 优先级从高到低分别是:
    1.在属性后面使用 !important 会覆盖页面内任何位置定义的元素样式
    2.作为style属性写在元素标签上的内联样式
    3.id选择器
    4.类选择器
    5.伪类选择器
    6.属性选择器
    7.标签选择器
    8.通配符选择器
    9.浏览器自定义
    复杂场景计算,行内样式
    为a类;ID 选择器为b类;类,属性选择器和伪类选择器为c类;标签选择器、伪元素为d类,复杂场景之中会从a类数量开始比较,若相同则会顺延到b类继续比较,以此类推,若是都相同则是后覆盖前。

4.a:link, a:hover, a:active, a:visited 的顺序是怎样的? 为什么?

  • 顺序为a:link ->a:visited -> a:hover -> a:active,这是一个样式覆盖的问题,一个标签,首先他是未被选中的(a:link),然后鼠标才会悬浮在它上面(a:hover),然后才会被点击(a:active),然后他的状态才会变成未选中之后( a:visited)。而只要元素被点击之后,visited会是永久生效的,而这时如果visited放在最后,他会覆盖掉前面的属性。

5.以下选择器分别是什么意思?

#header{
} ------  选择id为header的元素
.header{
} ------  选择class为header的元素  
.header .logo{
} ------ 选择class为header的元素后代中class为logo的元素
.header.mobile{
} ------ 选择class为header的元素和class为mobile的元素
.header p, .header h3{
} ------ 选择class为header的元素后代中的p元素和h3元素
#header .nav>li{
} ------ 选择id为header的元素后代中class为nav的元素的直系子元素中的li标签
#header a:hover{
} ------ 选择id为header的元素后代中a标签被鼠标选中的状态
#header .logo~p{
} ------ 选择id为header的元素后代中class为logo后的所有是p标签的同级元素
#header input[type="text"]{
} ------ 选择id为header的元素后代中type属性为text的input元素

6.列出你知道的伪类选择器

选择器 含义
E:first-child 匹配作为长子(第一个子女)的元素E
E:link 匹配所有未被点击的链接
E:visited 匹配所有已被点击的链接
E:active 匹配鼠标已经其上按下、还没有释放的E元素
E:hover 匹配鼠标悬停其上的E元素
E:focus 匹配获得当前焦点的E元素
E:lang(c) 匹配lang属性等于c的E元素
E:enabled 匹配表单中可用的元素
E:disabled 匹配表单中禁用的元素
E:checked 匹配表单中被选中的radio或checkbox元素
E::selection 匹配用户当前选中的元素

7.div:first-child、div:first-of-type、div :first-child和div :first-of-type的作用和区别 (注意空格的作用)

  • div:first-child:匹配父元素下的第一个元素,但元素必须是div。
  • div:first-of-type:匹配父元素下的第一个div标签。
    上面两个的不同点在于,第一个选择器他选择的div必须是父元素的第一个子元素,第二个则不同,只要是父元素下的第一个div子元素便可。
  • div :first-child:匹配div标签后代中所有父元素的第一个子元素。
  • div :first-of-type:匹配div标签后代中同类型第一个子元素。
    上面两个的不同点在于,第一个选择器选择的必须是第一个子元素,所以同级元素中只会被选择一个,但是第二个选择器选择的是同类型的第一个子元素,同级元素中可以有多个。

8.运行如下代码,解析下输出样式的原因。


 

aa

bb

ccc

输出的样式为

任务7_第1张图片
image.png
  • 原因是因为:.item1:first-child选则的是作为第一个父元素的子元素且class名是item1的元素,所以只有aa变成红色,而.item1:first-of-type选择的是class名为item1且是父元素下同类型的第一个子元素,aa是其父元素下第一个p标签,而bb是其父元素下第一个h3标签,都会被选中

你可能感兴趣的:(任务7)