饥人谷技术博客

CSS选择器

2017-05-23  本文已影响0人  饥人谷_兔子君

1.class 和 id 的使用场景?

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

1.基础选择器:

2.组合选择器:

3.属性选择器:

4.伪类选择器:

5.伪元素选择器:

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

从高到低依次为:

  1. 在属性后使用!important会覆盖页面内任何位置定义的元素样式;color: red!important;
  2. 作为style属性写在元素标签上的内联样式;
  3. id选择器;
  4. 类选择器;
  5. 伪类选择器;
  6. 属性选择器;
  7. 标签选择器;
  8. 通配符选择器;给当前界面上所有的标签设置属性 *{}
  9. 浏览器自定义;

复杂场景:

对于构成复杂的选择器,首先计算以下4类选择器的个数,分别等于以下值a b c d:

  1. 行内样式:<div style=""></div> ==>a
  2. id选择器:==b
  3. 类、属性选择器和伪类选择器:==>c
  4. 标签选择器、伪元素:==>d
    在对比两个选择器的优先级时,先对比a的值,a大的选择器优先级较高,如果a相等,再对比b的值,b大的优先级较高,以此类推……

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

a:link{
color:red;
}
a:visited{
color:green;
}
a:hover{
color:blue;
}
a:active{
color:yellow;
}
4个选择器有相同的优先级,如果将a:visited放在最后,则访问过之后永久生效,将会把另外3个的样式永久覆盖掉,而我们只需要让它把原a:link的样式覆盖掉即可,所以要将a:visited排在a:link之后;当鼠标点击link的时候,4个选择器都将生效,如果将a:hover放在最后,则会覆盖掉a:active的样式,所以要将a:active放在a:hover之后。

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

#header{
}——id为header的元素

.header{
}——class包含(不是等于)header的元素

.header .logo{
}——class包含header的元素后代中,class包含logo的元素

.header.mobile{
}——class同时包含header和mobile的元素

.header p, .header h3{
}——class包含header的后代p标签元素,以及class包含header的后代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.列出你知道的伪类选择器

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

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

<style>
.item1:first-child{
color: red;
}
.item1:first-of-type{
background: blue;
}
</style>
<div class="ct">
<p class="item1">aa</p>
<h3 class="item1">bb</h3>
<h3 class="item1">ccc</h3>
</div>

Image.png

.item1:first-child选择器匹配.item1父元素下作为长子的.item1元素,即<p class="item1">aa</p>,所以文字aa变红色;.item1:first-of-type选择器匹配.item1的父元素下拥有相同标签的第一个.item1元素,即使用p标签的第一个.item1元素<p class="item1">aa</p>,和使用h3标签的第一个.item1元素<h3 class="item1">bb</h3>,所以文字aa和bb的底色变蓝色。

上一篇下一篇

猜你喜欢

热点阅读