CSS选择器

class 和 id 的使用场景?

class 可以把多个class类名放到一个class属性里面,用空格隔开,例:class="btn btn-success follow",class 用于多个标签样式相似或完全相同的标签里面
id 是唯一的,同名称的ID在当前页面中最好使用一个,用于页面分块的块级标签上

CSS选择器常见的有几种?

  1. 基础选择器
    * 通用元素选择器,匹配页面任何元素
    #id id选择器,匹配特定id的元素
    .class 类选择器,匹配class包含特定类的元素
    element 标签选择器
  2. 组合选择器
    E,F 多元素选择器,同时匹配元素E和F
    E F 后代选择器,空格分割,匹配E元素所有的后代(不只是子元素,而且包括子元素向下递归)元素F
    E>F 子元素选择器,匹配E元素的直接子元素F(不递归)
    E+F 直接相邻选择器,匹配E元素之后的相邻的同级元素F
    E~F 普通相邻选择器,匹配E元素之后的同级元素F(无论是否直接相邻)
  3. 属性选择器
    E[attr] 匹配所有具有属性attr的元素
    E[attr=value] 匹配属性值为value的元素
  4. 伪类选择器
    E:first-child 匹配元素E的第一个子元素
    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:active 匹配鼠标已经在其上按下,但是还没有释放的E元素
    E:hover匹配鼠标悬停其上的E元素
    伪元素选择器
    E::before 在E元素之前插入生成的内容,配合content来输入要插入的内容
    E::after 在E元素之后插入生成的内容

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

  1. 优先级(从高到低分别是)
  • 在属性后面使用 !important 会覆盖页面内任何位置定义的元素样式
  • 作为style属性写在元素标签上的内联样式
  • id选择器 #test
  • 类选择器 .class
  • 伪类选择器 a:hover
  • 属性选择器 h1{}
  • 标签选择器 div[xxx]
  • 统配符选择器 *
  • 浏览器自定义
  1. 复杂场景:
    行内样式 ==> 标记为a
    id选择器 ==> 标记为b
    类,属性 ==> 标记为c
    标签 伪类选择器 ==> 标记为d
    从a到d分别计算,级别越高的字母得到的统计值越高越优先,统计值相同则向下迭代比较

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

正确顺序:a:linka:visiteda:hovera:active
原因:

  • 如果链接未被点击,正常状态只有a:link起效
  • 链接如果被点击过,那起效的是a:linka:visited,后者会覆盖前者效果
  • 如果鼠标悬停并且链接已经被点击过,那起效的是a:linka:visiteda:hovera:hover会覆盖前面所有效果
  • 如果鼠标正在点击链接且链接之前已经被点击过,那起效的是a:linka:visiteda:hovera:activea:active会覆盖之前所有效果

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

#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和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的元素的子元素input且type必须是text

列出你知道的伪类选择器

E:first-child 匹配元素E的第一个子元素
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:active 匹配鼠标已经在其上按下,但是还没有释放的E元素
E:hover 匹配鼠标悬停其上的E元素

div:first-child和div:first-of-type的作用和区别

div:first-child div 的父元素下的第一个子元素
div:first-of-type div 的父元素下第一个div元素

指出下面代码的效果并解释


 

aa

bb

ccc

.item1:first-child{
  color: red;
}

获取类名为.item1的第一个元素

aa

添加字体颜色

.item1:first-of-type{
  background: blue;
}

获取类名为.item1的首次出现的标签类型

aa

bb

添加背景色

你可能感兴趣的:(CSS选择器)