前言

CSS的一个核心特性是能向文档中的一组元素类型应用某些规则,本文将详细介绍CSS选择器

选择器

【通配选择器】

星号*代表通配选择器,可以与任何元素匹配

  1. *{color: red;}

【元素选择器】

文档的元素是最基本的选择器

  1. html{color: black;}
  2. p{color: gray;}
  3. h2{color: silver;}

【类选择器】

类选择器用于选择一类元素

  1. .div{color: red;} // 单个类的选择
  2. .div1.div2{color: red;} // 多个类的选择,既包含div1类也包含div2类的元素将被选择
  3. p.div{color: red;} // p元素且包含div类的元素将被选择

【ID选择器】

ID选择器用于选择一个元素

  1. #test{color: red;}
  2. div#test{color: red;} 结合元素选择ID

[注意]在实际中,浏览器并不会检查ID的唯一性,设置多个ID,可以为这些具有相同ID的元素应用相同样式,但在编写DOM脚本时只能识别该id的第一个元素。

【属性选择器】

属性选择器根据元素的属性及属性值来选择元素(IE6-不支持)

  1. // 简单属性选择器
  2. h1[class]{color: red;}
  3. img[alt]{color: red;}
  4. a[href][title]{color: red;}
  5. #div[class]{color: red;}
  6. .box[id]{color: red;}
  7. [class]{color: red;}
  8. // 具体属性选择器
  9. a[href="http://www.baidu.com"][title="baidu"] {color: red;}
  10. [class="test box"]{color: red;} // class里面的值以及顺序必须完全相同,并且不可多空格或者少空格
  11. [id="tox"]{color: red;} // ID选择器和指定id属性的属性选择器并不是一回事,主要在于优先级不同
  12. // 部分属性选择器
  13. [class ~="b"] 选择class属性值在用空格分隔的词列表中包含词语"b"的所有元素,例如:class="ab"不满足[class ~="b"],而class="a b"class="b"满足
  14. [class |="b"] 选择class属性值等于b或以b-开头的所有元素,例如:class="ab"class="ab-"不满足[class |="a"],而class="a"class="a-"满足
  15. [class ^="b"] 选择class属性值以"b"开头的所有元素
  16. [class $="b"] 选择class属性值以"b"结尾的所有元素
  17. [class *="b"] 选择class属性值包含"b"的所有元素

【分组选择器】

将要分组的选择器放在规则左边,并用逗号隔开

  1. h1,p{color: red;} // 选择了h1 和 p 元素

【后代选择器】

  1. ul li{color: red;} // ul 下面的所有 li元素 将被选择
  2. div p, ul li{color: red;} // div元素 下面的所有p元素将被选择 并且 ul下面的所有 li元素将被选择

子元素选择器(IE6-不支持)

  1. ul > li{color: red;} // ul下面的子元素 li将被选择 , 不选中孙子元素

【兄弟元素选择器】

  1. // 相邻兄弟选择器(IE6-不支持)
  2. h1 + p{color: red;} // 选择紧接在 h1 元素后出现的段落,h1 和 p 元素拥有共同的父元素
  3. [注意]两个元素之间的文本内容不会影响相邻兄弟结合符起作用

伪类选择器

伪类顺序:link-visited-focus-hover-active

【静态伪类(只应用于超链接)】

[注意]visited伪类只能设置字体颜色、边框颜色、outline颜色的样式

  1. :link 未访问
  2. :visited 已访问
  3. a:link{color: red;}
  4. a:visited{color: green;}

【动态伪类(可应用于任何元素)】

  1. :focus 拥有焦点(IE7-不支持)
  2. :hover 鼠标停留(IE6-不支持给<a>以外的其他元素设置伪类)
  3. :active 正被点击(IE7-不支持给<a>以外的其他元素设置伪类)

【目标伪类:target(IE8-不支持)】

匹配锚点对应的目标元素

  1. :target{color: red;}
  2. #test :target{color: red;}//id为test的目标元素

【UI元素伪类(IE8-不支持)】

  1. :enabled 可用状态
  2. :disabled 不可用状态
  3. :checked 选中状态
  4. input:enabled{color: red} // [注意]input和:和enabled之间都不可以有空格

【结构伪类(IE8-不支持)】

  1. E:first-child(IE6-不支持) 父元素的第一个子元素,且该子元素是E,与E:nth-child(1)等同
  2. E:last-child(IE6-不支持) 父元素的最后一个子元素,且该子元素是E,与E:nth-last-child(1)等同
  3. :root 选择文档的根元素,即<html>元素
  4. E F:nth-child(n) 选择父元素的第n个子元素,父元素是E,子元素是F
  5. E F:nth-last-child(n) 选择父元素的倒数第n个子元素,父元素是E,子元素是F
  6. E F:nth-of-type(n) 选择父元素的具有指定类型的第n个子元素,父元素是E,子元素是F
  7. E F:nth-last-of-type(n) 选择父元素的具有指定类型的倒数第n个子元素,父元素是E,子元素是F
  8. E:first-of-type 选择父元素中具有指定类型的第1个子元素,与E:nth-of-type(1)相同
  9. E:last-of-type 选择父元素中具有指定类型的最后1个子元素,与E:nth-last-of-type(1)相同
  10. E:only-child 选择父元素中只包含一个子元素,子元素是E
  11. E:only-of-type 选择父元素中只包含一个同类型的子元素,子元素是E
  12. E:empty 选择没有子元素的元素,而且该元素也不包含任何文本节点

[注意]n可以是整数(从1开始),也可以是公式,也可以是关键字(even、odd)

  1. p:first-child 代表的并不是<p>的第一个子元素,而是<p>元素是某元素的第一个子元素
  2. p > i:first-child 匹配所有<p>元素中的第一个<i>元素
  3. p:first-child i 匹配所有作为第一个子元素的<p>元素中的所有<i>元素

【:lang 相当于|=属性选择器(IE7-不支持)】

  1. p:lang(en) 匹配语言为"en"的<p>

【伪类的结合】

  1. a:visited:hover:first-child{color: black;} // [注意]顺序无关

伪元素选择器

IE8-浏览器仅支持伪元素选择器的单冒号表示法

【:first-letter 设置首字母样式】

所有前导标点符号应与第一个字母一同应用该样式;

只能与块级元素关联;

只有当选择器部分和左大括号之间有空格时,IE6-浏览器才支持。因为first-letter中存在连接符的原因

  1. p:first-letter {color: red;}

【:first-line 设置首行样式】

只能与块级元素关联;

只有当选择器部分和左大括号之间有空格时,IE6-浏览器才支持。因为first-line中存在连接符的原因

  1. p:first-line{color: red;}

【:before 在元素内容前面插入内容(IE7-不支持)】

默认这个伪元素是行内元素,继承元素可继承的属性;

所有元素都必须放在出现该伪元素的选择器的最后面。

  1. p:before{content:"text"}

【:after 在元素内容后面插入内容(IE7-不支持)】

默认这个伪元素是行内元素,继承元素可继承的属性

  1. p:after{content:"text"}

【::selection 匹配被用户选择的部分】

目前selection只支持color和background两个属性,且只支持双冒号写法(IE8-浏览器不支持)

  1. ::-moz-selection    firefox浏览器需要添加前缀

【根元素选择器】

根元素选择器:root用来选择HTML元素,但由于其实质是伪类选择器,所以其优先级更高。在HTML上设置的样式,如果在:root上也设置了同样的样式,则会被覆盖

  1. html{font-size:20px;}
  2. :root{font-size:30px;}

最终是30px

css选择器(常规选择器,伪类选择器,伪元素选择器,根元素选择器)的更多相关文章

  1. CSS样式表及选择器相关内容(二)-伪类与伪元素选择器

    伪类与伪元素选择器归纳: 一.伪类选择器(伪类以":"开头,用在选择器后,用于指明元素在某种特殊的状态下才能被选中)    1.a标签伪类选择器,其他标签类似        eg: ...

  2. css伪选择器使用总结——css中关于伪类和伪元素的知识总汇

    CSS 伪类用于向某些选择器添加特殊的效果,而CSS引入伪类和伪元素的概念是为了实现基于文档树之外的信息的格式化.这里讲总结关于css伪类和伪元素的相关使用 伪元素 :before/:before 在 ...

  3. 深入学习css伪类和伪元素及其用法

    前言 CSS的伪类和伪元素在平时的代码中经常会出现,可是一旦别人问你,什么是伪类,什么是伪元素,可能还是不能完整的表述出来,下面我们来一探究竟. 伪类和伪元素定义 伪类用于在页面中的元素处于某个状态时 ...

  4. CSS中的伪类与伪元素

    在前端开发中,大家或多或少的有接触过CSS伪类和伪元素,使用伪元素的时候,总感觉和伪类很相似,但又不能详细的说出两者的区别和联系,那么两者到底有什么区别和联系呢? 在 W3C 中定义: 伪类:用于向某 ...

  5. 谈谈css伪类与伪元素

    前端er们大都或多或少地接触过CSS伪类和伪元素,比如最常见的:focus.:hover以及<a>标签的:link.:visited等,伪元素较常见的比如:before.:after等. ...

  6. css中伪类和伪元素的区别

    转载:http://www.cnblogs.com/ihardcoder/p/5294927.html CSS3伪类和伪元素的特性和区别   前端er们大都或多或少地接触过CSS伪类和伪元素,比如最常 ...

  7. 细说CSS伪类和伪元素

    原文 简书原文:https://www.jianshu.com/p/eae56b7fe7fe 大纲 1.伪元素 2.伪类元素 3.伪元素和伪类元素的区别 4.伪类和伪元素的使用 1.伪元素 伪元素在D ...

  8. CSS伪类和伪元素

    一.伪类 CSS伪类用于向某些选择器添加特殊的效果,在W3规范中,CSS伪类有如下几个: CSS2.1 :active:向被激活的元素添加样式(激活是指点击鼠标那一下) :focus:向拥有键盘输入焦 ...

  9. CSS 属性 - 伪类和伪元素的区别

    伪类和伪元素皆独立于文档结构.它们获取元素的途径也不是基于id.class.属性这些基础的元素特征,而是在处于特殊状态的元素(伪类),或者是元素中特别的内容(伪元素).区别总结如下: ①写法不一样: ...

  10. CSS 伪类和伪对象选(五)

    一.伪选择器 伪选择器包括:伪类选择器和伪对象选择器,以冒号(:)作为前缀,冒号后紧跟伪类或者伪对象名称,冒号前后没有空格,否则解析为包含选择器 如: div:hover{ font-size:12p ...

随机推荐

  1. MySql 学习之路-基础

    Mysql 自学之路 本文包含基础部分与高级部分 一.基础 数据库操作 Show databases:显示所有的数据库 Show tables: 显示所有的数据库表 Use databasename: ...

  2. Java开发学习心得(三):项目结构

    [TOC] 3 项目结构 经过前面一系列学习,差不多对Java的开发过程有了一定的了解,为了能保持一个良好的项目结构,考虑到接下来要进行开发,还需要学习一下Java的项目结构 下面以两个项目结构为参照 ...

  3. 《生命》第五集:Birds (鸟类)

    看了前四集之后意犹未尽,今天终于有时间来看第五集了. 本集讲的是鸟类,一个在恐龙开始繁荣的时代才开始有的物种. 鸟类和其他动物最不同的地方,就是羽毛,能隔热,保暖,最重要的是:能帮助他们飞行. 在秘鲁 ...

  4. ios和安卓H5交互桥接

    ios交互 demo1(摘自网络) <!doctype html> <html> <head> <meta charset="UTF-8" ...

  5. 等待通知--wait notify

    1.简单理解 在jdk1.5之前用于实现简单的等待通知机制,是线程之间通信的一种最原始的方式.考虑这样一种等待通知的场景:A B线程通过一个共享的非volatile的变量flag来实现通信,每当A线程 ...

  6. Python编码、集合set、深浅拷贝

    编码 : a.encode(' ')     windows 默认编码GBK ASCII : 最早的编码. ⾥⾯有英⽂⼤写字⺟, ⼩写字⺟, 数字, ⼀些特殊字符.没有中⽂, 8个01代码, 8个bi ...

  7. IDEA+Maven+各个分支代码进行合并

    各个模块的分支代码进行合并到一起:https://blog.csdn.net/xsj_blog/article/details/79198502

  8. SpringCloud(10)使用Spring Cloud OAuth2和JWT保护微服务

    采用Spring Security AOuth2 和 JWT 的方式,避免每次请求都需要远程调度 Uaa 服务.采用Spring Security OAuth2 和 JWT 的方式,Uaa 服务只验证 ...

  9. Command "python setup.py egg_info" failed with error code 1 in c:\users\w5659\appdata\local\temp\pip-build-fs2yzl\ipython\

    Error Msg: Collecting ipython Using cached https://files.pythonhosted.org/packages/5b/e3/4b3082bd7f6 ...

  10. python scapy dns 包字段解析

    qr:   0表示查询报文,1表示响应报文opcode: 通常值为0(标准查询),其他值为1(反向查询)和2(服务器状态请求).aa: 表示授权回答(authoritative answer)tc: ...