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. 谈谈final, finally, finalize的区别

    final 修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承.因此一个类不能既被声明为 abstract的,又被声明为final的.将变量或方法声明为fi ...

  2. node.js存json数据到mysql

    众所周知,mysql是无法存储json数据的,这个刚开始笔者也是知道的,也知道JSON.stringify()这个API的,但是当我真正要这样做利用JSON.stringify()讲要转换的JSON数 ...

  3. [luogu P2184] 贪婪大陆 [树状数组][线段树]

    题目背景 面对蚂蚁们的疯狂进攻,小FF的Tower defence宣告失败……人类被蚂蚁们逼到了Greed Island上的一个海湾.现在,小FF的后方是一望无际的大海, 前方是变异了的超级蚂蚁. 小 ...

  4. PXE+Kickstart无人值守安装操作系统

    1.PXE的工作过程: 1. PXE Client 从自己的PXE网卡启动,向本网络中的DHCP服务器索取IP: 2. DHCP 服务器返回分配给客户机的IP 以及PXE文件的放置位置(该文件一般是放 ...

  5. Mac系统下STF的环境搭建和运行

    本文参考以下文章整理:MAC 下 STF 的环境搭建和运行 一. 前言 STF,全称是Smartphone Test Farm,WEB 端批量移动设备管理控制工具,就是可以用浏览器来批量控制你的移动设 ...

  6. C语言基础 - 输出1-100万之间的素数

    其实这个很简单 代码 网上也一大堆... //判断素数 BOOL isPrime(int num) { for (int i = 2; i <= sqrt(num); i++) { //能整除则 ...

  7. AmazeUI(妹子UI)中CSS组件、JS插件、Web组件的区别

    AmazeUI(妹子UI)是非常优秀的国产前端UI,现在来介绍一下AmazeUI中CSS组件.JS插件与Web组件的区别. CSS组件顾名思义就是仅使用CSS渲染而成的组件,而JS插件也很容易理解,就 ...

  8. 20. leetcode 171. Excel Sheet Column Number

    Given a column title as appear in an Excel sheet, return its corresponding column number. For exampl ...

  9. web 前端路线

  10. Python3常用网络编程模块介绍

    一.socket模块 网络服务都是建立在socket基础之上的,socket是网络连接端点,是网络的基础:每个socket都被绑定到指定的IP和端口上: 1.首先使用socket(family=AF_ ...