CSS选择器

class和id的使用场景

  • class 把一些特定样式放到一个class类中,需要此样式的标签,可以添加此类名,具有该类名的标签可以不唯一
  • id 根据提供的唯一id名,为具有该id的唯一标签设置样式

常见的CSS选择器

  • 基础选择器 *(通配符选择器) #id .class element标签

  • 组合选择器

名称 表示 含义
多元素 E,F E或F
后代 E F E所有的后代F(子子孙孙)
子元素 E>F E所有直接子元素
直接相邻 E+F E之后相邻的(同级)F
普通相邻 E~F E之后的同级F

选择器连写没有分隔符,"."、"#"充当

  • 属性选择器
表示 示例 含义
E[attr] div[id] 所有具有id属性的div
E[attr=value] div[id="test"] id为test的div
E[attr~=value] <div attr="value value1 value2">
div[attr~="value"]
所有属性attr具有多个空格分隔,其中一个值等于value的元素
E[attr^=value] - attr以value开头
E[attr$=value] - attr以value结尾
E[attr*=value] - attr的值包含value字符
  • 伪元素选择器
表示 含义
E::first-line E内容的第一行
E::first-letter E内容的第一个字母
E::before E之前插入生成的内容
E::after E之后插入生成的内容
  • 伪类选择器
表示 含义
E:first-child 作为长子的E
E:link 所有未被点击的链接
E:visited 所有已被点击的链接
E:active 鼠标已在其上按下,还没有释放的E
E:hover 鼠标悬停其上的E
E:focus 获得当前焦点的E
E:lang(c) lang属性为c的E
E:enabled 表单中可用的E
E:disabled 表单中禁用的E
E:checked 表单中被选中的radio/checkbox
E::selection 用户当前选中的元素
E:root 文档根元素,即<html>
E:nth-child(n) 其(E)的父元素的第n个子元素,n从1开始
E:nth-last-child(n) 其(E)父元素的倒数第n个子元素,n从1开始
E:nth-of-type(n) 其(E)的父元素的第n个(与E)同种标签的子元素
E:nth-last-of-type(n) 其(E)的父元素的倒数第n个(与E)同种标签的子元素
E:last-child (E的)父元素的最后一个子元素,等同于 :nth-last-child(1)
E:first-of-type (E的)父元素下使用(与E)同种标签的第一个子元素,等同于 :nth-of-type(1)
E:last-of-type (E的)父元素下使用(与E)同种标签的最后一个子元素,等同于 :nth-last-of-type(1)

n的值可能为 1、2、3、4、5或 2n+1、2n、4n-1或odd、even


选择器的优先级

!important > 标签上的style属性内联样式 > #id选择器 > .class选择器 > 伪类选择器 > 属性选择器 > 标签选择器 > 通配符选择器 > 浏览器自定义

※ 复杂场景下,应对优先级分类赋值,比较权重大小

  • 行内样式 <div style="xxx"></div> ==> a
  • ID选择器 ==> b
  • 类、属性选择器和伪类选择器 ==> c
  • 标签、伪元素选择器 ==> d

a>b>c>d

举例 示例中p标签的颜色是什么?

<style>
  #test  p.class1 {color: red;}
  #test .class1.class2 {color: blue;}
</style>

<div id="test">
  <p class="class1 class2"></p>
</div>

分析:分类划分权重
第一条:a=0,b=1,c=1,d=1
第二条:a=0,b=1,c=2,d=0
显然,第二条的权重总值大于第一条,所以p标签为蓝色


a标签有四种伪类选择器
:link(未点击)、:visited(已点击)、:hover(鼠标悬浮)、:active(鼠标按下还未释放)

理解:前两个定义其一般样式,后两个按照鼠标动作发生的顺序来定义样式
而浏览器解析a标签的四种伪类选择器的样式时,其顺序为a:link、a:visited、a:hover、a:active,后面的样式才能在鼠标动作发生时合理覆盖前面的样式,使动作发生时的样式生效——“就近原则”

例如,我们为a定义样式,未点击为蓝色,已点击为红色,鼠标悬浮为绿色,如果我们在编写a标签样式时,没有按照上述顺序编写,而是以a:visited a:hover a:link的顺序编写,a未点击时,鼠标悬浮其上,颜色不会变成绿色,而是蓝色;a被点击后,颜色变成红色,鼠标悬浮其上,颜色变成绿色


#header{} 匹配id为header的元素
.header{} 匹配class为header的元素
.header .logo{} 匹配class为header的元素的所有class名为logo的后代元素
.header.mobile{} 匹配class同时包含header和mobile的元素
.header p, .header h3{} 匹配class为header下所有的后代p标签和h3标签
#header .nav>li{} 匹配id为header的元素的所有class为nav的后代元素的直接子元素li
#header a:hover{} 匹配id为header的元素的所有a标签鼠标悬浮时的样式
#header .logo~p{} 匹配id为header的元素的所有class为logo的后代元素之后的(与.logo同级/普通相邻)的元素
#header input[type="text"] 匹配id为header的元素的所有type为text的后代input元素

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

推荐阅读更多精彩内容

  • 其实平时用得多的选择器无非也就是那么几个,时间久了,许多不常用的选择器就慢慢忘记了。为了不让自己忘记这些选择器,今...
    盛夏晚清风阅读 1,801评论 0 5
  • 一,class 和 id 的使用场景? id选择器,匹配特定id的元素。class是类选择器,匹配class包含(...
    DeeJay_Y阅读 345评论 0 0
  • 1. class 和 id 的使用场景: id:id选择器,使用#name定义(name为id名,可任意取名),使...
    石林涛阅读 362评论 0 1
  • class 和 id 的使用场景?class指定标签的类名, 把需要相同样式的元素归类于一个name下,需要此样式...
    饥人谷_CCCLARITY阅读 238评论 0 0
  • 1. CSS选择器的使用场景? 答: (1)id:id选择器,使用#name定义(name为id名,可任意取名),...
    黄同学2019阅读 415评论 0 0