CSS选择符简介

目录

  • 上下文选择符
  • ID和类选择符
  • 属性选择符
  • 伪类选择符
  • 伪元素

上下文选择符

一般上下文选择符:

article h1 em {color:green;}
/* 选中的em 必须有一个祖先是h1,后者进而还要有一个祖先是article */

子选择符:label1>lalel2。label1必须是label2的父元素,不能是其他的上级元素。

一般同胞选择符:label1~label2,label2必须跟在同胞标签label1的后面,不一定紧跟。

紧邻同胞选择符:label1+label2,label2必须紧跟label1的后面。

通用选择符:使用*作为通配符,匹配任何元素。

* {color:green;}
/* 可以匹配所有元素,color为前景色 */

ID和类选择符

id和类选择符在使用时,不需要考虑html文档的层次结构,只要再标签中添加id和class属性,body标签中的任何元素都可以添加这两个属性。

类选择符:

.specialtext {font-style:italic;}
/* 对于带specicaltext类的标签内内容有效 */
p.specialtext span {font-weight:blod;}
/* 对于处于带有specialtext类的<p>标签内的span标签有效 */
<p class="specialtext">  <span>content</span>    </p>

多类选择符:

/* 对同时存在这两个类名的元素产生作用 */
.specialtext.featured {font-size:120%;}
/* 两个类名直接不能有空格,如果加了空格,就变成了“上下文”选择符了! */
<p class="specialtext featured">  content </p>

ID选择符:与类选择符基本一样

#specialtext {CSS样式声明;}
<p id="specialtext "> content </p>

id与class的区别:id可用于页面内导航。

<a href="#bio">Biography</a>带有#的链接表示此链接是导航链接,如果没有#,浏览器默认加载bio目录下的默认页面。如果只有一个#,表示返回页面顶部。另外,如果暂时不知道一个href应该设置什么URL,应该以#作为占位符。

什么时候用id,什么时候用class

id可以唯一标识一个元素,所以,当需要标识页面的一个唯一独立的部分时,可以使用id,例如页面导航栏等。

class通常用于表示一类元素,例如一个页面有多个按钮,可以为这些按钮设置一样的样式。

属性选择符

属性名选择符:标签名[属性名]

img[title] {border:2px solid blue;}
<img src="" title="flower" alt="flower"/>
/* 带有title的img元素会显示2像素宽的蓝色边框,title属性是什么值无所谓,只要有title这个属性 */

属性值选择符:标签名[属性名=属性值]。与属性名选择符基本类似,只是为属性名添加了特定的值限制。

img[title="flower"] {border:2px solid blue;}
<img src="" title="flower" alt="flower"/>
/* title="flower"的img元素会显示2像素宽的蓝色边框 */

前面介绍的都是针对具体的HTML元素定义的css样式,例如根据标签名、类名、ID、属性值来确定展示的样式。但是在某些动作发生时,例如获得鼠标焦点,这一类事件发生时对样式的影响。这就是我们即将讨论的伪类了。

伪类

从字面意义上,我们可以以为伪类与前面说的类相似,但是实际上是有本质区别的。

伪类有两种:

  • UI伪类:会在HTML元素处于某个状态时(比如鼠标指针位于链接上),为该元素应用CSS样式
  • 结构化伪类:当标记中存在某种结构关系时,为相应元素应用CSS样式

UI伪类

链接伪类

最常使用UI伪类的元素是链接,利用UI伪类,链接可以在用户鼠标悬停时改变文本颜色,或者去掉文本的下划线等。

a:link {color:black;}    /* 链接的展示情况 */
a:visited {color:orange;}    /* 访问过的链接 */
a:hover {text-decoration: none;}    /* 鼠标悬停(不显示下划线) */
a:active {color: red;}    /* 链接正在被点击 */
/* 由于这四个伪类的**特指度**(什么鬼)相同,如果不按照上面的顺序使用,浏览器可能不会正常显示。 */

有些伪类可以用于任何元素,而不仅仅是链接,例如hover:

p:hover {background-color:gray;}

:focus(焦点)伪类

input:focus {border: 3px solid blue;}

当input元素获得焦点,光标位于input元素上时,添加一个蓝色的边框。可以让用户明确地知道当前的光标焦点。

:target(目标)伪类

如果用户点击一个指向页面中其它元素的链接,则那个元素就是目标(target),可以使用target伪类选中它。例如如下html代码:

<a href="#moreinfo">Get more information? Click here!</a>
<p id="moreinfo">Some detail info will be shown here.</p>

就可以使用CSS规则进行修饰:

#moreinfo:target {background-color: #eee;}

当用户单击链接转向ID为moreinfo的元素时,为该元素添加浅灰色背景。维基百科在引用中大量使用了:target伪类。

结构化伪类

结构化伪类可以根据标记的结构应用样式,比如根据元素的父元素或前面的同胞元素是什么。

:first-child和:last-child

:first-child表示一组同胞元素中的第一个元素,last-child是最后一个

ol.result li:first-child {color:blue;}

<ol class="result">
    <li>My fast pony</li>    //选中,蓝色
    <li>My fast pony</li>
    <li>My fast pony</li>
</ol>

:nth-child(n)

n表示一个数值(odd、even)。例如li:nth-child(2)会选中列表中的第二项。此伪类常用于提高表格的可读性。

伪元素

伪元素是文档中若有实无的元素。

p::first-letter {font-size: 300%;}       //段落的首字母放大三倍
p::first-line {font-variant:small-caps;}    //把第一行以小型大写字母显示
p.age::before {content: "Age: ";}
p.age::after {content:" years";}

<p class="age">25</p>    //显示:Age: 25 years

选择符总结

理解选择符是学习CSS的基础,现在的网站开发基本不会将样式写在HTML文档中,都是独立出CSS静态文件。而且选择符也使得管理样式更加简单。

常用的选择符主要有这些:上下文选择符,ID和类选中符,伪类中的几个,伪元素使用比较少。所有的选择符可以参考这里stylinwithcss

原文在我的博客:CSS选择器《 王贵生的博客

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

推荐阅读更多精彩内容

  • 其实平时用得多的选择器无非也就是那么几个,时间久了,许多不常用的选择器就慢慢忘记了。为了不让自己忘记这些选择器,今...
    盛夏晚清风阅读 1,810评论 0 5
  • 一:在制作一个Web应用或Web站点的过程中,你是如何考虑他的UI、安全性、高性能、SEO、可维护性以及技术因素的...
    Arno_z阅读 1,136评论 0 1
  • 选择器 元素选择符 关系选择符 属性选择符 伪类选择符 伪对象选择符 一、元素选择符 通配选择符 (*):选择所有...
    云外之境阅读 1,842评论 0 0
  • 转载请声明 原文链接地址 关注公众号获取更多资讯 第一部分 HTML 第一章 职业规划和前景 职业方向规划定位...
    程序员poetry阅读 16,511评论 32 459
  • 楔子 有一种人,他是来自黑暗地域的使者,嗜血惨烈,浑身散发着一股无可比拟的歃血气息,令人毛骨悚然,却又让人忍不住靠...
    阿俊xi阅读 613评论 0 0