CSS 选择器

建议学习时长: 90分钟
学习方式:深入

学习目标

  • 知道什么是 CSS 选择器。
  • 知道如下选择器的写法,对哪些元素生效和浏览器兼容性:通配选择器,元素选择器,id选择器,类选择器,群组选择器,层次选择器,子元素选择器,伪类选择器中的 :hover,:active,:focus,:nth-child,属性选择器。
  • 知道选择器的权重/优先级。

详细介绍

什么是选择器

选择器用来指定设置外观的HTML元素。

选择器类型

通配选择器

选择所有HTML元素。用 *。如

* {
  margin:0;
}

元素(element)选择器

根据元素的名称选元素。用标签名词
如,要让所有p元素的文字变为红色,可使用

p {color:#f00;}

id选择器

根据元素的id选元素。用#id
注:页面中不应该存在id一样的两个或多个元素。

类选择器

根据元素的类名来选元素。用.className
注:一个元素可以有多个类名,类名之间用空格分隔。如:

<p class="out-look pull-right">...</p>
<style>
.out-look{color:#F60;font-size: 16px;}
.pull-right{float: right;}
</style>

上面代码中的p元素会同时应用.out-look.pull-right里的样式。

群组选择器

将每一个选择器匹配的元素集合并。用法: selector1,selector2,...,selectorN

派生选择器

选择元素下的所有元素。
语法 上下文选择元素 元素
比方说,如果您希望只对 h1 元素中的 em 元素应用样式,可以这样写:

h1 em {color:red;}

子元素选择器

选择元素下的第一层子元素。
语法 父元素 > 子元素
浏览器兼容性:IE8+。

伪类选择器

伪类选择器分为动态伪类,UI伪类和:nth选择器

动态伪类

因为这些伪类并不存在于HTML中,而只有当用户和网站交互的时候才能体现出来,动态伪类包含两种,第一种是我们在链接中常看到的锚点伪类,如":link",":visited";另外一种被称作用户行为伪类,如“:hover”,":active"和":focus"。

锚点伪类

  • :link 链接没有被访问
  • :visited 链接被访问后

用户行为伪类

  • :hover 用户把鼠标移动到元素上面时的效果
  • :active 用户点击元素那一下的效果(正发生在点的那一下,松开鼠标左键此动作也就完成了)
  • :focus 元素获得焦点。通常是表单元素。

锚点元素可以设置:hover,:active,:link和:visited四个伪类,其写的前后顺序必须是Link--visited--hover--active,即爱恨原则LoVe/HAte。否则,有些伪类的效果会永远不能生效。

UI元素状态伪类

我们把":enabled",":disabled",":checked"伪类称为UI元素状态伪类,这些主要是针对于HTML中的Form元素操作,最常见的比如我们"type="text"有enable和disabled两种状态,前者为可写状态后者为不可状态;另外"type="radio"和"type="checkbox""有"checked"和"unchecked"两种状态

:nth选择器

CSS3选择器最新部分,有人也称这种选择器为CSS3结构类

  • :fist-child选择某个元素的第一个子元素;
  • :last-child选择某个元素的最后一个子元素;
  • :nth-child()选择某个元素的一个或多个特定的子元素;
  • :nth-last-child()选择某个元素的一个或多个特定的子元素,从这个元素的最后一个子元素开始算;
  • :nth-of-type()选择指定的元素;
  • :nth-last-of-type()选择指定的元素,从元素的最后一个开始计算;
  • :first-of-type选择一个上级元素下的第一个同类子元素;
  • :last-of-type选择一个上级元素的最后一个同类子元素;
  • :only-child选择的元素是它的父元素的唯一一个了元素;
  • :only-of-type选择一个元素是它的上级元素的唯一一个相同类型的子元素;
  • :empty选择的元素里面没有任何内容

属性选择器

根据属性来选元素。
语法 [属性名=属性值]
其中,

  • 属性值为可选的。若缺省属性值,则选择包含该属性的元素
  • 属性值支持类似正则的写法,如:
    • [abc^="def"]表示 选择 abc 属性值以 "def" 开头的所有元素
    • [abc$="def"]表示 选择 abc 属性值以 "def" 结尾的所有元素
    • [abc*="def"]表示 选择 abc 属性值中包含子串 "def" 的所有元素

伪元素选择器

  • :before 在元素之前添加内容
  • :after 在元素之后添加内容
  • :first-line 向文本的首行添加特殊样式
  • :first-letter 向文本的第一个字母添加特殊样式
  • ::-webkit-input-placeholder 设置 placeholder

选择器权重

某条样式的是否被采用,取决于:该样式是否是同类样式中,权重得分最大的。

各类选择器的权重得分

  • 带 !important 的规则得分是最高的
  • 行内样式(style="...")1000分
  • ID选择器 100分
  • 类选择器,伪类选择器,属性选择器 10分
  • 标签选择器,伪元素选择器 1分
  • 通配选择器 0分
  • 继承和浏览器默认的的样式的得分是最低的

更多可查看 http://css-tricks.com/specifics-on-css-specificity/

更多学习资源

练习题

写满足以下条件的选择器

  • id为img-list的子元素中类名为img-item的span元素
  • 类名不为not-normal-input的文本框(<input type="text">)元素的获得焦点状态
  • 在父元素中倒数第2个a元素
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,293评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,604评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,958评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,729评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,719评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,630评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,000评论 3 397
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,665评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,909评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,646评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,726评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,400评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,986评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,959评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,996评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,481评论 2 342

推荐阅读更多精彩内容

  • 其实平时用得多的选择器无非也就是那么几个,时间久了,许多不常用的选择器就慢慢忘记了。为了不让自己忘记这些选择器,今...
    盛夏晚清风阅读 1,810评论 0 5
  • 一、CSS选择器常见的有几种? 基本选择器 通配选择器~选择文档中所有的html元素,用一个*表示 元素选择器~选...
    dengpan阅读 959评论 0 3
  • CSS选择器结构逻辑图 接下来按照结构逻辑图具体讲解各个选择器的作用及用法; 基本选择器 基本选择器主要有以下5类...
    FoolishFlyFox阅读 555评论 0 8
  • 1.class 和 id 的使用场景? 类选择器允许以一种独立于文档元素的方式来指定样式。该选择器可以单独使用,也...
    草鞋弟阅读 2,402评论 0 1
  • 1.class 和 id 的使用场景? 两者都能选取DOM节点并给DOM节点添加样式,但是W3C标准里规定页面中只...
    饥人谷_米弥轮阅读 386评论 0 1