CSS选择器是学习CSS以及Web编程的基础。

整理出常用的CSS选择器,供自己和大家一起学习。

基本选择器

* /*通用元素选择器,匹配页面任何元素(这也就决定了我们很少使用)*/
#id /*id选择器,匹配id是'id'的元素*/
.class /*类选择器,匹配所有类名中包含'class'的元素*/
E /*标签选择器*/

组合选择器

E,F   /* 多元素选择器,用,(半角)分隔,同时匹配元素E和元素F*/
E F /*后代选择器,用空格分隔,匹配E元素所有的后代(不只是子元素、子元素向下递归)元素F*/
E>F /*子元素选择器,用>分隔,匹配E元素的所有直接子元素*/
E+F /*直接相邻选择器,匹配E元素之后的相邻的一个同级元素F(只匹配一个)*/
E~F /*普通相邻选择器(兄弟选择器),匹配E元素之后的同级元素F(无论直接相邻与否)*/
.class1.class2 /*匹配类名既包括'class1'又包括'class2'的元素*/
element#id /* 匹配id为'id'的element标签的元素*/

属性选择器

E[attr]    /*匹配所有具有属性attr的元素,div[id]就能取到所有有id属*/性的div
E[attr = value] /*匹配属性attr值等于value的元素,div[id='test'],匹配id为test的div*/
E[attr ~= value] /*匹配所有属性attr具有多个空格分隔、其中一个值等于value的元素*/
E[attr ^= value] /*匹配属性attr的值以value开头的元素*/
E[attr $= value] /*匹配属性attr的值以value结尾的元素*/
E[attr *= value] /*匹配属性attr的值包含value的元素*/

伪类选择器

伪类中像 E:something 这种形式,可以这样理解,首先选择器是E元素,这是大前提,然后something是限定范围的。

这样理解就可以减少不必要的误解。

  • 结构化相关
E:first-child    /*匹配E的父元素的第一个子元素且必须为E元素*/
E:last-child /*匹配E的父元素的最后一个子元素且必须为E元素*/
E:nth-child(3) /*匹配E的父元素的第3(值可以取正整数)个子元素且必须为E元素*/
E:nth-last-child(2) /*匹配E的父元素的倒数第2个子元素且必须为E元素*/
E:only-child /*匹配没有兄弟元素的E元素,即父元素下只有其一个子元素*/
E:nth-of-type(2) /*匹配E的父元素的第2(值可以取正整数)个和E同类型的子元素*/
E:nth-last-of-type(3) /*匹配E的父元素的倒数第3个和E同类型的子元素*/
E:first-of-type /*匹配E的父元素的第1个和E同类型的子元素,等同于E:nth-of-type(1)*/
E:last-of-type /*匹配E的父元素的最后1个和E同类型的子元素,等同于:nth-last-of-type(1)*/
E:only-of-type /*匹配其父元素下唯一一个E同种类型的子元素*/
E:empty /*匹配一个不包含任何子元素的元素,文本节点也被看作子元素*/
html:root /*匹配文档的根元素,对于HTML文档,就是HTML元素,也可以写成:root*/
  • 状态相关
E:link   /* 匹配所有未被访问过的链接(不是点击,有可能链接没被点击过却被访问过)*/
E:visited /*匹配所有已被访问过的链接*/
E:active /*匹配鼠标已经其上按下、还没松开的E元素*/
E:hover /*匹配鼠标悬停其上的E元素*/
E:focus /*匹配获得当前焦点的E元素*/
  • 表单相关
E:enabled    /*匹配表单中可用的元素*/
E:disabled /*匹配表单中禁用的元素*/
E:checked /*匹配表单中被选中的radio或checkbox元素*/
E::selection /* 匹配用户当前选中的元素*/
  • 其他
E:lang(c)   /* 匹配lang属性等于c的E元素*/
E:not(selector) /*匹配E的父元素下不匹配selector选择器的E元素*/

伪元素选择器

以下四个也可以用单冒号,效果一样

E::first-line    /*匹配E元素内容的第一行*/
E::first-letter /*匹配E元素内容的第一个字母*/
E::before /*在E元素之前插入生成的内容*/
E::after /*在E元素之后插入生成的内容*/

hover选择器

E:hover F    /*E元素是悬浮元素,F是E的子元素,E的hover可以改变F的状态*/
E:hover>F /*E元素是悬浮元素,F是E的直接子元素,E的hover可以改变F的状态*/
E:hover+F /*E元素是悬浮元素,F是E的直接相邻的一个同级元素,E的hover可以改变F的状态*/
E:hover~F /*E元素是悬浮元素,F是E的同级元素(兄弟元素),E的hover可以改变F的状态*/

nth-child选择器

CSS选择器中n表示非负整数

E:nth-child(1)  /*匹配E的父元素下第一个子元素且为E元素*/
E:nth-child(n) /*所有E元素(和E标签选择器貌似没什么区别。。)*/
E:nth-child(2n) /*匹配E的父元素下所有子元素次序是偶数的E元素(比如第2,4,6,8...个)*/
E:nth-child(even) /*等于E:nth-child(2n) */
E:nth-child(2n+1) /*匹配E的父元素下所有子元素次序是奇数的E元素(比如第1,3,5,7..个)*/
E:nth-child(odd) /*等于E:nth-child(2n+1) */
E:nth-child(n+4) /*匹配E的父元素下所有子元素次序大于等于4的E元素(比如第4,5,6,7...个)*/
E:nth-child(-n+5) /*匹配E的父元素下所有子元素次序小于等于5的E元素(比如第1,2,3,4,5个)*/
E:nth-child(3n+2) /*匹配E的父元素下所有子元素次序符合3n+2的E元素(比如第2,5,8,11个)*/

nth-last-child选择器也是同理

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

顺序依次是a:link>>a:visited>>a:hover>>a:active

本文首发在个人博客yoowin.me,欢迎访问。

CSS选择器大汇总的更多相关文章

  1. 看这一篇就够了,css选择器知识汇总

    对大多技术人员来说都比较熟悉CSS选择器,举一例子来说,假设给一个p标签增加一个类(class),可是执行后该class中的有些属性并没有起作用.通过Firebug查看,发现没有起作用的属性被覆盖了, ...

  2. CSS透明度大汇总

    近年来,CSS不透明算得上是一种相当流行的技术,但在跨浏览器支持上,对于开发者来说,可以说是一件令人头疼的事情.目前还没有一个通用方法,以确保透明度设置可以在目前使用的所有浏览器上有效. 这篇汇总主要 ...

  3. 【总结】CSS透明度大汇总

    近年来,CSS不透明算得上是一种相当流行的技术,但在跨浏览器支持上,对于开发者来说,可以说是一件令人头疼的事情.目前还没有一个通用方法,以确保透明度设置可以在目前使用的所有浏览器上有效. 这篇汇总主要 ...

  4. CSS十大选择器

    CSS十大选择器:   1.id选择器 # 2.class选择器 句号 . 3.标签选择器 标签名称 4.相邻选择器 加号 + 5.后代选择器 空格 6.子元素选择器 大于号 > 7.多元素  ...

  5. 【CSS选择器】理解汇总和记录

    1.选择器中符号含义汇总(这部分包含了对选择器的通用理解): 1.1.多元素组合符号:(共6个,一个是CSS3的)(适用所有元素:ID组合,类组合,属性组合,标签组合,伪类组合,以及以上所有混合组合) ...

  6. HTML+css基础 css的几种形式 css选择器的两大特性

    3.外联样式 css选择器的两大特性 1.继承性:所有跟文本字体有关的属性都会被子元素继承.且权重是0000. 2.层叠性:就是解决选择器权重大小的一种能力,就是看那个选择器的权重大.谁的权重大听谁的 ...

  7. CSS 选择器汇总

    CSS 选择器 CSS 元素选择器 CSS 选择器分组 CSS 类选择器详解 CSS ID 选择器详解 CSS 属性选择器详解 CSS 后代选择器 CSS 子元素选择器 CSS 相邻兄弟选择器 CSS ...

  8. CSS选择器的权重与优先规则?

    我们做项目的时候,经常遇到样式层叠问题,被其他的样式覆盖,或者写的权重不高没效果,对权重没有具体的分析,做了一个总结. css继承是从一个元素向其后代元素传递属性值所采用的机制.确定应当向一个元素应用 ...

  9. IE6 浏览器常见兼容问题 大汇总(23个)

    IE6以及各个浏览器常见兼容问题 大汇总 综述:虽然说IE6在2014年4月将被停止支持,但是不得不说的是,IE6的市场并不会随着支持的停止而立刻消散下去,对于WEB前端开发工程师来说,兼容IE6 兼 ...

随机推荐

  1. JVM学习001通过实例总结Java虚拟机的运行机制

    JVM学习(1)——通过实例总结Java虚拟机的运行机制-转载http://www.cnblogs.com/kubixuesheng/p/5199200.html 文章转载自:http://www.c ...

  2. Python基础之常用模块(二)

    一.sys模块 1.sys.exit() 退出程序,这是正常退出程序,与之前用的break不同的是,break只是退出循环,循环之后的代码还会正常运行 2.sys.argv  会返回一个列表,列表中的 ...

  3. (转)上传jar包到nexus私服

    场景:在使用私服Nexus时候经常需要上传jar包,但是对上传jar包的方式不是很熟悉,所以很有必要学习下. 1 通过网页上传 GAV Definition:选择GAV Parameters 输入JA ...

  4. (转)centos7安装telnet服务

    场景:在进行Telnet测试时候,发现无法连接,所以还得把这个软件也安装了 1 CentOS7.0 telnet-server 启动的问题 解决方法:   先检查CentOS7.0是否已经安装以下两个 ...

  5. 内核对象kobject和sysfs(4)——kset分析

    内核对象kobject和sysfs(4)--kset分析 从狭义上来说,kset就是kobj的一个再封装而已.在封装之后,提供了针对kset之下所有kobj统一管理的一些方法. 我们还是从结构说起: ...

  6. C#导入导出Excele数据

    注:对于实体类对象最好新建一个并且继承原有实体类,这样可以将类型进行修改: 方法一:此种方法是用EPPLUS中的FileInfo流进行读取的(是不是流我还真不太了解,若有懂得请留言,非常感谢了) us ...

  7. 说一说Jquery中的empty()与remove()的区别和用法

    今天在改一个新人写的代码,好吧,我承认改代码比自己写代码要来的痛苦. 主要是在测试一个table.table中有一列是删除操作.我的删除功能是 这样的,当点击删除的时候,判断这个table中的tr行是 ...

  8. 使用 Router 实现的模块化,如何优雅的回到主页面

    使用 Router 实现的模块化,如何优雅的回到主页面 版权声明: 本账号发布文章均来自公众号,承香墨影(cxmyDev),版权归承香墨影所有. 未经允许,不得转载. 一.前言 现在越来越多的 App ...

  9. year:2017 month:8 day:1+

    2017-08-01 JAVAse 方法的重载:在同一个类中存在一个以上的同名方法,只要他们的参数数量,参数类型,参数顺序(两个相同类型的参数是不行的)这样就构成了方法的重载. 有返回值的方法有三种调 ...

  10. Web项目、Http协议简介

    Web 静态web项目 静态web项目就是一个文件夹.静态Web项目 就是文件夹中都是静态资源. 如何将web项目部署到tomcat? 将web项目的文件夹复制到webapps目录下.比如把test文 ...