「CSS 」选择器

  • 选择器
    • 简单选择器
      • 标签选择器
      • 类选择器
      • id 选择器
      • 通配符选择器
      • 属性选择器
      • 伪类选择器
    • 其他选择器
      • 伪元素选择器
      • 组合选择器
      • 选择器分组
    • 继承、优先、层级
      • 继承
      • 优先
        • 改变优先级
      • 层叠

选择器

选择器可被看做表达式,通过它可以选择相应的元素并应用不同的样式。

  • 简单选择器
  • 元素选择器
  • 组合选择器

简单选择器

简单选择器可组合使用。

标签选择器
<div>
  <p>Sample Paragraph</p>
  <p>Sample Paragraph</p>
  <p>Sample Paragraph</p>
</div>

<style type="text/css">
  p {
    color: blue;
  }
</style>
类选择器

.className. 开头,名称可包含字母,数字,-_,但必须以字母开头。它区分大小写并可出现多次。

<div>
  <p>Sample Paragraph</p>
  <p class="special bold">Sample Paragraph</p>
  <p>Sample Paragraph</p>
</div>

<style type="text/css">
  p {
    color: blue
  }
  .special {
    color: orange;
  }
  .bold {
    font-weight: bold;
  }
</style>
id 选择器

#idName# 开头且只可出现一次,其命名要求于 .className 相同。

<div>
  <p id="special">Sample Paragraph</p>
</div>

<style type="text/css">
  #special {
    color: red;
  }
</style>
通配符选择器
<div>
  <p>Sample Paragraph</p>
  <p>Sample Paragraph</p>
</div>

<style type="text/css">
  * {
    color: blue;
  }
</style>
属性选择器

[attr][attr=val] 来选择相应的元素。#nav{...} 既等同于 [id=nav]{...}。IE7+

[attr~=val] 可选用与选择包含 val 属性值的元素,像class="title sports"class="sports".sports{...} 既等同于 [class~=sports]{...} IE7+

[attr|=val] 可以选择val开头及开头紧接-的属性值。IE7+

[attr^=val] 可选择以val开头的属性值对应的元素,如果值为符号或空格则需要使用引号 ""。IE7+

[attr$=val] 可选择以val结尾的属性值对应的元素。IE7+

[attr*=val] 可选择以包含val属性值对应的元素。IE7+

<div>
  <form action="">
    <input type="text" value="Xinyang" disabled>
    <input type="password" placeholder="Password">
    <input type="button" value="Button">
  </form>
</div>
<style type="text/css">
  [disabled] {
    background-color: orange;
  }
  [type=button] {
    color: blue;
  }
</style>
伪类选择器

常用伪类选择器

  • :link IE6+
  • :visited IE7+
  • :hover IE6中仅可用于链接
  • :active IE6/7中仅可用于链接
  • :enabled IE9+
  • :disabled IE9+
  • :checked IE9+
  • :first-child IE8+
  • :last-child IE9+
  • :nth-child(even) 可为 odd even 或数字 IE9+
  • :nth-last-child(n) n从 0 开始计算 IE9+
  • :only-child 仅选择唯一的元素 IE9+
  • :only-of-type IE9+
  • :first-of-type IE9+
  • :last-of-type IE9+
  • :nth-of-type(even) IE9+
  • :nth-last-of-type(2n) IE9+

不常用伪类选择器

  • :empty 选中页面中无子元素的标签 IE9+
  • :root 选择 HTML 根标签 IE9+
  • :not() 参数为一般选择器 IE9+
  • :target 被锚点选中的目标元素 IE9+
  • :lang() 选中语言值为某类特殊值的元素 IE7+

NOTE:element:nth-of-type(n) 指父元素下第 n 个 element 元素,element:nth-child(n) 指父元素下第 n 个元素且元素为 element,若不是,选择失败。具体细节请在使用时查找文档

<div>
  <a href="http://sample-site.com" title="Sample Site">Sample Site</a>
</div>
<style type="text/css">
  /* 伪类属性定义有顺序要求! */
  a:link {
    color: gray;
  }
  a:visited {
    color:red;
  }
  a:hover {
    color: green;
    /* 鼠标悬停 */
  }
  a:active {
    color: orange;
    /* 鼠标点击 */
  }
</style>

其他选择器

伪元素选择器

注意与伪类学则器的区分。

  • ::first-letter IE6+
  • ::first-line IE6+
  • ::before{content: "before"} 需与 content 一同使用 IE8+
  • ::after{content: "after"} 需与 content 一同使用 IE8+
  • ::selection 被用户选中的内容(鼠标选择高亮属性)IE9+ Firefox需用 -moz 前缀
组合选择器
  • 后代选择器 .main h2 {...},使用表示 IE6+
  • 子选择器 .main>h2 {...},使用>表示 IE7+
  • 兄弟选择器 h2+p {...},使用+表示 IE7+
    • h2~p {...},使用~表示(此标签无需紧邻)IE7+
选择器分组
<style type="text/css">
/* 下面两组样式声明效果一致 */
h1 {color: red;}
h2 {color: red;}
h3 {color: red;}

h1, h2, h3 {color: red;}
</style>

继承、优先、层级

继承

子元素继承父元素的样式,但并不是所有属性都是默认继承的。通过文档中的 inherited: yes 来判断属性是否可以自动继承。

css-inherit-doc.png

自动继承属性:

  • color
  • font
  • text-align
  • list-style
  • ...

非继承属性:

  • background
  • border
  • position
  • ...
优先

CSS Specificity Calculator 可以在这里找到。更多关于 CSS 优先级别的信息可以在这里找到(英文)。

计算方法:

  • a = 行内样式
  • b = id 选择器的数量
  • c = 类、伪类的属性选择器的数量
  • d = 标签选择器和伪元素选择器的数量

NOTE:从上到下优先级一次降低,且优先级高的样式会将优先级低的样式覆盖。大致公式(并不准确)如下。

value = a * 1000 + b * 100 + c * 10 + d
改变优先级
  • 改变样式声明先后顺序
  • 提升选择器优先级
  • !important(慎用)
层叠

层叠为相同属性根据优先级覆盖,如优先级相同则后面会覆盖前面的属性,而不同属性则会合并。

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

推荐阅读更多精彩内容

  • 转载自牢记31种CSS选择器用法 1 * 星号选择器用于选取页面中的所有元素,可用于快速清除所有元素的 margi...
    Icestains阅读 1,228评论 0 1
  • 一、CSS选择器 关于CSS选择器,首先请看这里:CSS 选择器参考手册 通过以上,我们可以将CSS选择器分为以下...
    fehysunny阅读 2,246评论 0 2
  • 通用选择器:选择所有元素,不参与计算优先级**,兼容性IE6+ #X id选择器:选择id值为X的元素,兼容性:I...
    贞贞姐阅读 313评论 0 3
  • CSS选择器结构逻辑图 接下来按照结构逻辑图具体讲解各个选择器的作用及用法; 基本选择器 基本选择器主要有以下5类...
    FoolishFlyFox阅读 565评论 0 8
  • 一、CSS选择器常见的有几种? 基本选择器 通配选择器~选择文档中所有的html元素,用一个*表示 元素选择器~选...
    dengpan阅读 962评论 0 3