CSS选择器

class和ID的使用场景


一般情况而言,class代表这一类,多个元素可以共同属于一个class,而ID是唯一的,每一个ID对应唯一的元素。class试用于设置共性,而ID适合设置个性。

CSS常见的选择器


基础选择器

  • *通用选择器,选择页面全部元素
  • ID选择器,匹配特定的ID元素
  • 类选择器,匹配class类型中包含特定类的元素

组合选择器

  • E,F:多元素选择器,用,分隔,同时匹配元素E或元素F
  • E F:后代选择器,用空格分隔,匹配E元素所有的后代元素F
  • E>F:子元素选择器,匹配E元素的所有直接元素
  • E+F:直接相邻选择器,匹配E元素之后的相邻的同级元素F
  • E~F:普通相邻选择器,匹配E元素之后的同级元素F(无论直接相邻与否)

属性选择器

  • E[attr]:匹配所有具有属性attr的元素
  • E[attr=value]:匹配属性值为value的元素
  • E[attr~=value]:匹配所有属性attr具有多个空格分隔,其中一个值等于value的元素
  • E[attr^=value]:匹配属性attr的值以value开头的元素
  • E[attr$=value]:匹配属性attr的值以value结尾的元素
  • E[attr*=value]:p匹配属性attr的值包含value的元素

伪类选择器

  • 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元素之后插入生成的内容

CSS选择器的优先级


以下优先权是从高到低

  • 在属性后面使用!import会覆盖页面内任何位置定义的元素样式
  • 作为style属性写在元素标签上的内联样式
  • id选择器
  • 类选择器
  • 伪类选择器
  • 属性选择器
  • 标签选择器
  • 通配符选择器
  • 浏览器自定义
    当各种选择器交错在一起时候,当情况比较复杂时,可以用下述方法进行优先权重的比较:
  • 根据组合选择器按照以下规则统计各类选择器的个数:
    行内样式 --> 统计值为a
    ID选择器 --> 统计值为b
    类、属性选择器、伪类选择器 --> 统计为c
    标签选择器、伪类选择器 --> 统计为d
  • 先比较a值的大小,a值大的则优先级高;如果a值相等,则再比较b值的大小,b值大的优先级高;如果b值相等,则比较c值的大小,c值大的优先级高;如果c值相等,则比较d值的大小,d值大的优先级高;

a:link,a:hover,a:active,a:visited的顺序

首先,a:link排在第一位;a:visited排在第二位;a:hover排在第三位;a:active排在最后,原因如下:
由于a:link状态表示着链接最为初始的状态,当访问过后,颜色要改变,因此要覆盖a:link原来状态,因此排在a:link之后。
a:hover需要排在a:active之前是因为当点击时候,a:active状态的颜色需要将a:hover的覆盖,因此这样排列。
尽管访问过后的链接颜色需要改变,但是不能将a:hover的颜色体现给覆盖掉,因此a:hover排列在a:visited之后。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.class 和 id 的使用场景? 类选择器允许以一种独立于文档元素的方式来指定样式。该选择器可以单独使用,也...
    草鞋弟阅读 2,453评论 0 1
  • 1.class 和 id 的使用场景? 两者都能选取DOM节点并给DOM节点添加样式,但是W3C标准里规定页面中只...
    饥人谷_米弥轮阅读 416评论 0 1
  • 1.class 和 id 的使用场景? class:类选择器,一个标签可以有多个类且同一个类可以用到不同的标签上,...
    饥人谷_兔子君阅读 1,210评论 0 0
  • class 和 id 的使用场景 class:一个标签可以有多个class且同一个class可以用到不同的标签上,...
    尾巴尾巴尾巴阅读 435评论 0 0
  • 一、CSS选择器常见的有几种? 基本选择器 通配选择器~选择文档中所有的html元素,用一个*表示 元素选择器~选...
    dengpan阅读 977评论 0 3