CSS 选择器

选择器决定了样式规则适用于哪些元素。

html5有以下常见的选择器:

一、基本选择器:

1. 元素选择器

  • 格式:标记名{/* 声明块* /}
  • 所有与该标记名匹配的元素,都将应用声明块中的规则

2. 类选择器

  • 格式:.类名{/* 声明块 */}
  • 所有class属性为指定类名的元素,都将应用声明块中的规则,其中类型名可以写多个,方便代码复用
  • 所有标签都可有class属性

3. id选择器

  • 格式:#id值{/* 声明块 */}
  • < h1 id="属性值">
  • 属性id为指定值的元素,都将应用声明块中的规则
  • 在同一个HTML文档中,元素的id值必须唯一
  • 现阶段不写id选择器,JS使用

4.通配符选择器

  • 格式: *+{声明块}
  • 例子: *{ color:red;}

5.并集选择器/组合选择器

  • 格式: 元素或类或id+","+元素或类或id+","+元素或类或id","+{声明块}
  • 例子: h1,.cc,h3{ color:red;}

二、层次选择器:

1.子集选择器(子元素选择器)

格式:父级元素名称+">"+子级元素名称+{声明块}

ie6及以下浏览器不支持

例子: div>p{color:red;}

2.后代选择器

格式:祖先元素名称+空格+后代元素名称+{声明块}

例子: div p{color:red;}

3.兄弟选择器

格式: A元素名称+"+"+B元素名称+{声明块}

例子: div+P{color:red;}

注:选择A元素后紧邻的B元素,AB之间不许有其他元素.

4.通用选择器

格式:同级元素A+"~"+同级元素B+{声明块}

例子: div~p{color:red;

注:表示选择与A元素同级别的所有B元素(B的位置是在A后面)

三、伪类选择器

1、动态伪类选择器

1.未访问

a:link{color:black;}

2.鼠标悬停

a:hover{color:pink;}

3.鼠标点击时

a:active{color:green;}

4.点击后

a:visited{color:五颜六色;}

注:hover是可以用于多个元素身上的,但其他三个只能用于具有点击功能的元素上

a:focus{color:五光十色;} 多用于输入框或链接
<input type='test'> 输入框

5.选中的元素

::selecton
火狐 ::-moz-selection

注:IE7以前不支持:focus,IE6以前不支持:hover :active

上5个伪类选择器的顺序要求:(love hate)

A: link,visited,focus,hover,active

B: visited,link,focus,hover,active

2.结构伪类选择器

格式:元素名称+":nth-child(n)"+{声明块}

例子: section:nth-child(2){color:deeppink;}

表示选中html里的第二个section元素,文字设置为deeppink

1.选中第一个

格式:元素名称+":first-child"+{声明块}
例子: p:first-child{color:red;}

2.选中最后一个

格式:元素名称+":last-child"+{声明块}
例子: p:last-child{color:red;}

3.选中奇数项

格式:元素名称+":nth-child(odd)"+{声明块}
例子:section:nth-child(odd){color:deeppink;}

4.选中偶数项

格式:元素名称+":nth-child(even)"+{声明块}
例子:section:nth-child(even){color:deeppink;}

5.选中指定项

格式:元素名称+":nth-child(n)"+{声明块}
例子:section:nth-child(1){color:deeppink;}

注意:n从0开始取整数,直到最大值。例选中前3个:-n+3

6.选中指定类型的子元素

格式:元素名称+":first-0f-child"+{声明块}
格式:元素名称+":last-0f-child"+{声明块}
格式:元素名称+":nth-0f-child"+{声明块}

四、伪元素选择器

1.元素后面加内容

格式:元素名称+":after"+{content:"要添加的内容";}
例子:  i:after
    {content:"姓名";}

2.元素前面加内容

格式:元素名称+":before"+{content:"要添加的内容";}
例子:  i:before
    {content:"姓名";}

3.元素第一行添加样式

格式:元素名称+":first-line"+{声明块}
例子: p:first-line{color:red;}

4,元素第一个字母或第一个汉字

格式:元素名称+":first-letter"+{声明块}
例子: p:first-letter{color:red;}

注:为了解决兼容性(有的浏览器不识别),伪元素选择器,建议打两个冒号

五、属性选择器

1.E[att^=value]属性选择器

E[att^=value]属性选择器是指选择名称为E的标记,且该标记定义了att属性,att属性值包含前缀为value的子字符串。需要注意的是E是可以省略的,如果省略则表示可以匹配满足条件的任意元素。例如,div[id^=section]表示匹配包含id属性,且id属性值是以“section”字符串开头的div元素。
<!doctype html><html><head><meta charset="utf-8"><title>E[att^=value]属性选择器的应用</title><style type="text/css">p[id^="one"]{   color:pink; font-family:"微软雅黑"; font-size:20px; }</style></head><body><h2>春望</h2><p id="one">国破山河在,城春草木深。</p><p id="two">感时花溅泪,恨别鸟惊心。</p><p id="one1">烽火连三月,家书抵万金。</p><p id="two1">白头搔更短,浑欲不胜簪。</p></body></html>
只要p元素中的id属性值是以“one”字符串开头就会被选中,从而呈现特殊的文本效果。

[图片上传失败...(image-4aa319-1536496186369)]

2.E[att$=value]属性选择器

E[att$=value]属性选择器是指选择名称为E的标记,且该标记定义了att属性,att属性值包含后缀为value的子字符串。与E[att^=value]选择器一样,E元素可以省略,如果省略则表示可以匹配满足条件的任意元素。例如,div[id$=section]表示匹配包含id属性,且id属性值是以“section”字符串结尾的div元素。
<!doctype html><html><head><meta charset="utf-8"><title>E[att$=value]属性选择器的应用</title><style type="text/css">p[id$="main"]{  color:#0cf; font-family:"宋体";   font-size:20px;}</style></head><h2>春夜喜雨</h2><p id="old1">好雨知时节,当春乃发生。</p><p id="old2">随风潜入夜,润物细无声。</p><p id="oldmain">野径云俱黑,江船火独明。</p><p id="newmain">晓看红湿处,花重锦官城。</p><body></body></html>
只要p元素中的id属性值是以“main”字符串结尾就会被选中,从而呈现特殊的文本效果。

[图片上传失败...(image-755a57-1536496186369)]

3.E[att=value]属性选择器*

E[att*=value]属性选择器用于选择名称为E的标记,且该标记定义了att属性,att属性值包含value子字符串。该选择器与前两个选择器一样,E元素也可以省略,如果省略则表示可以匹配满足条件的任意元素。例如,div[id*=section]表示匹配包含id属性,且id属性值包含“section”字符串的div元素。
<!doctype html><html><head><meta charset="utf-8"><title>E[att*=value]属性选择器的使用</title><style type="text/css">p[id*="demo"]{  color:#0ca; font-family:"宋体";   font-size:20px; }</style></head><body><h2>使至塞上</h2><p id="demo1">单车欲问边,属国过居延。</p><p id="main1">征蓬出汉塞,归雁入胡天。</p><p id="newdemo">大漠孤烟直,长河落日圆。</p><p id="olddemo">萧关逢候骑,都护在燕然。</p></body></html>
只要p元素中的id属性值包含“demo”字符串就会被选中,从而呈现特殊的文本效果。

[图片上传失败...(image-c3c0b2-1536496186369)]

六、兄弟选择器

1. + 选择器

如果需要选择紧接在另一个元素后的元素,而且二者有相同的父元素,可以使用相邻兄弟选择器。

比如:

<style type="text/css">
    h1 + p {
        margin-top:50px;
        color:red;
    }
</style>

<body>
<p>This is paragraph.</p>
<h1>This is a heading.</h1>
<p>This is paragraph.</p>
<p>This is paragraph.</p>

效果如图:
[图片上传失败...(image-4f02ae-1536496186369)]

兄弟只会印象下面的p标签的样式,不影响上面兄弟的样式。
  注意这里的’+’的意义跟’and’意义不一样,兄弟选择器的样式是应用在兄弟元素上,跟参照的元素样式无关,如上例只影响p元素的样式,而不影响h1标签的样式。
  当然这个也会循环查找,即当两个兄弟元素相同时,会一次循环查找:
  示例:

<style type="text/css">
    li + li {
        color:red;
    }
</style>

<div>
  <ul>
    <li>List item 1</li>
    <li>List item 2</li>
    <li>List item 3</li>
  </ul>
</div>

效果:
[图片上传失败...(image-a9c813-1536496186369)]

可以看出第一个li字体颜色没有变红,第二个和第三个元素字体变红,这就是因为第三个li是第二个li的兄弟元素,所以也会应用样式。

2. ~ 选择器
  作用是查找某一个指定元素的后面的所有兄弟结点。
  示例代码:

<style type="text/css">
    h1 ~ p{
        color:red;
    }
</style>
</head>
<body>
    <p>1</p>
    <h1>2</h1>
    <p>3</p>
    <p>4</p>
    <p>5</p>
</body>

运行结果:
[图片上传失败...(image-70f511-1536496186369)]

七、否定伪类

x:not(selector)

筛选不含有selector的x

1、选择所有不含有有 class1 的元素

:not(:class1)
    <script>        $(document).ready(function () {            $('p:not(.p1)').addClass('p6');        })    </script>

:empty 选择器

选择每个空元素,不含子集

    <script>        $(document).ready(function () {           var emp= $('p:empty');            emp.addClass('p7');            emp.text('我是空元素');        })    </script>

[图片上传失败...(image-30a466-1536496186369)]

八、继承

一般和文本相关的样式都能继承,与盒子模型相关的都不能继承

九、选择器的优先级

!important>内联样式1000>ID选择器100>类、属性、伪类10>元素选择器1>通配符0
继承没有优先级
选择器优先级一致 使用靠后的
!important 最好不要用

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

推荐阅读更多精彩内容

  • 其实平时用得多的选择器无非也就是那么几个,时间久了,许多不常用的选择器就慢慢忘记了。为了不让自己忘记这些选择器,今...
    盛夏晚清风阅读 1,830评论 0 5
  • 1.CSS 元素选择器 最常见的 CSS 选择器是元素选择器。换句话说,文档的元素就是最基本的选择器。如果设置 H...
    饥人谷_小侯阅读 862评论 0 1
  • CSS选择器 标签选择器 什么是标签选择器? 作用: 根据指定的标签名称, 在当前界面中找到所有该名称的标签, 然...
    Jackson_yee_阅读 507评论 0 0
  • CSS选择器结构逻辑图 接下来按照结构逻辑图具体讲解各个选择器的作用及用法; 基本选择器 基本选择器主要有以下5类...
    FoolishFlyFox阅读 565评论 0 8
  • Part 1 :盒模型(box model) "every element in web design is a ...
    野味狼果阅读 759评论 1 11