css有哪些选择器

html-css017

css有哪些选择器,第1张

CSS中常用的选择器:(一)基本选择器(二)层次选择器(三)动态伪类选择器(四)目标伪类选择器(五)ui状态伪类选择器(六)结构伪类选择器(七)属性选择器(八)伪元素 (一)基本选择器1.标签选择器:通过标签名获取元素 权重:0001 (此种选择器影响范围大,建议尽量应用在层级选择器中。)2.class选择器:通过 . 类名获取元素权重:0010 (通过class类名来选择元素,一个类可应用于多个元素,一个元素上也可以使用多个类,应用灵活,可复用,是css中应用最多的一种选择器。)3.id选择器:通过 # id名获取元素 权重:0100 (通过id名来选择元素,元素的id名称不能重复,所以一个样式设置项只能对应于页面上一个元素,不能复用,id名一般给程序使用,所以不推荐使用id作为选择器。 )4. * 通配符选择器:获取到页面的所有元素5.群组选择器:用逗号隔开基本选择器,表示这些选择器都获取到 (二)层次/关系选择器 (主要应用在选择父元素下的子元素,或者子元素下面的子元素,可与标签元素结合使用,减少命名,同时也可以通过层级,防止命名冲突。)1.包含选择器:用空格隔开基本选择器,表示后一个选择器是前面的后代例:p a { color:red}2.子代选择器:用>隔开基本选择器,表示后一个选择器是前面的子代例:ul>li { line-style: none}3.相邻兄弟选择器:E+F:表示获取到E后面的紧跟着的F元素(同级的) 例: a+a { }4.兄弟选择器:E~F:表示获取到E后面所有的同级的F元素 例: li~li { }(三)动态伪类选择器1. a:link 锚链接被访问前添加样式2. a:visited 锚链接被访问后添加样式3. e:hover 鼠标悬停在元素上添加样式4. e:active 鼠标点击元素时添加样式5. :focus 表单元素被聚焦时,添加样式(四)目标伪类选择器语法: 目标:target {属性:属性值} 被选中的目标添加样式目标:target E子元素{属性:属性值} 被选中的目标里的E子元素添加样式 (五)ui状态伪类选择器1. :enabled 可用的表单元素添加样式2. :disabled 不可用的表单元素添加样式(disabled )3. :checked+E 被选中的表单元素添加样式(六)结构伪类选择器1. E:first-child 获取到E元素,且要满足为其父元素的第一个孩子。2. E:last-child 获取到E元素,且要满足为其父元素的最后一个孩子3. E:nth-child(n) 获取到E元素,且要满足为其父元素的第n个孩子n的用法:(1)6n倍数 (2)even偶数/2n odd奇数/2n-1(如可用来选中奇偶行来实现 “隔行换色”) (3) -n+5 选中1-5(4)p:nth-child(-n+3):nth-child(n+2) 2-3个4. E:nth-last-child(n) 获取到E元素,且要满足为其父元素的倒数第n个孩子5. E:first-of-type 获取到E元素,且要满足为其父元素的第一个该类型的孩子6. E:last-of-type 获取到E元素,且要满足为其父元素的最后一个该类型的孩子7. E:nth-of-type(n) 获取到E元素,且要满足为其父元素的第n个该类型的孩子8. E:nth-last-of-type(n)获取到E元素,且要满足为其父元素的倒数第n个该类型的孩子9. E:empty 获取到空的E元素(注:连空格都不能有)(七)属性选择器1. E[attr] 拥0有attr属性的E元素添加样式 如div[class] 2. E[attr="val"] 拥有attr属性值 为 val的E元素添加样式 如p[class="ab"]3. E[attr*="val"] attr属性值 包含 val的E元素添加样式 如ul[class="c"] 指class类名中包含有c字母的E元素4. E[attr^="val"] attr属性值以val 开头 的E元素添加样式5. E[attr$="val"] attr属性值以val 结尾 的E元素添加样式(八)伪元素1. E::before给E元素添加第一个子元素 (前面) 2. E::after 给E元素添加最后一个子元素(后面)3. E::first-letter给E元素第一个字添加样式4. E::first-line给E元素第一行添加样式 5. E::selection 元素内容被选中时添加样式(火狐需要加前缀-moz-)

id:指定标签的唯一标识,定位到页面上唯一的元素。

使用场景: 使用#name定义(name为id名,可任意取名),使用id="name"调用,其优先级高于类选择器,一个标签只能有一个id且每个id只能使用一次,多用于页面分块的块级标签上。

class :类选择器,指定标签的类名,定位到页面上某一类的元素 。

使用场景:使用.name定义(name为类名,可任意取名),使用class="name"调用,一个标签可以有多个类且同一个类可以用到不同的标签上,多用于多个标签样式相似或完全相同时。

* {} /* a=0 b=0 c=0 d=1 ->0,0,0,0 */

p {} /* a=0 b=0 c=0 d=1 ->0,0,0,1 */

a:hover {} /* a=0 b=0 c=1 d=1 ->0,0,1,1 */

ul li {} /* a=0 b=0 c=0 d=2 ->0,0,0,2 */

ul ol+li {} /* a=0 b=0 c=0 d=3 ->0,0,0,3 */

h1+input[type=hidden]{} /* a=0 b=0 c=1 d=2 ->0,0,1,1 */

ul ol li.active {} /* a=0 b=0 c=1 d=3 ->0,0,1,3 */

#ct .box p {} /* a=0 b=1 c=1 d=1 ->0,1,1,1 */

div#header:after {} /* a=0 b=1 c=0 d=2 ->0,1,0,2 */

style="" /* a=1 b=0 c=0 d=0 ->1,0,0,0 */

先比较a,a大的权重最大,再依次比较b,c,d

#header{ }

id选择器,匹配特定id为header的元素

.header{ }

类选择器,匹配class包含header的元素

.header .logo{ }

后代选择器,匹配class为header元素所有的后代(不只是子元素、子元素向下递归)

calss为logo的元素

.header.mobile{ }

匹配class既有header又有logo的元素

.header p, .header h3{ }

同时匹配class为header所有后代元素p和class为header所有后代元素h3

#header .nav>li{ }

匹配id为header元素所有后代中calss为nav的所有直接子元素li

#header a:hover{ }

匹配id为header所有后代中鼠标悬停其上的a元素

#header .logo~p{ }

匹配id为header所有后代中class为logo之后的同级元素p(无论直接相邻与否)

#header input[type="text"]{ }

匹配id为header所有后代中属性type值为text的元素

n的取值

1,2,3,4,5

2n+1, 2n, 4n-1

odd, even

<style>.item1:first-child{ color: red} .item1:first-of-type{ background: blue} </style><div class="ct"><p class="item1">aa</p><h3 class="item1">bb</h3><h3 class="item1">ccc</h3></div>

## CSS选择器

# 标签选择器

# id选择器

# 类选择器

# 后代选择器

# 子元素选择器

# 交集选择器

# 并集选择器

# 兄弟选择器(相邻兄弟选择器/通用兄弟选择器)

# 序选择器(CSS3中最具代表性)

# 属性选择器

# 通配符选择器

# 伪元素选择器

标签选择器

1.什么是标签选择器?

作用:根据指定的标签名称,在当前界面中找到所有该名称的标签,然后设置属性

2.格式:

标签名称{

属性: 值

}

注意点:

1.标签选择器选中的是当前界面中所有的标签,而不能单独选中某一个标签

2.标签选择器无论藏得多深都能被选中

3.只要是HTML中的标签就可以作为标签选择器

id选择器

1.什么是id选择器?

作用:根据指定的id名称找到对应的标签,然后设置属性

格式:

#id名称{

属性: 值

}

注意点:

1.每个HTML标签都有一个属性叫做id,也就是说每个标签都可以设置id

2.在同一个界面的id名称是不可以重复的

3.在编写id选择器时一定要在id名称前面加上#

4

id的名称是有一定的规范的

4.1.if的名称只能由字母/数字/下划线组成

4.2.id名称不能以数字开头

4.3id名称不能是HTML标签的名称

4.4在企业开发中一般情况下如果仅仅是为了设置样式,我们不会使用id,因为前端开发中是留给js使用的

类选择器

什么是类选择器?

作用:根据指定的类名称找到对应的标签,然后设置属性

格式:

.类名称{

属性: 值

}

注意点:

1.每个HTML标签都有一个属性叫做class,也就是说每个标签都可以设置class

2.在同一个界面的class名称是可以重复的

3.在编写class选择器时一定要在class名称前面加上.

4.类名的命名规范和id名称的命名规范一样

5.类名解释专门用来给某个特定的标签设置样式的

6.在HTML中每个标签可以同时绑定多个类名

格式:

<标签名称 class=“类名1 类名2 类名3”>

错误写法

id和class的区别?

1.1

id相当于人的身份证不可以重复

class相当于人的名称可以重复

1.2

一个HTML标签只能绑定一个id名称

一个HTML表圈可以绑定多个class名称

2.id选择器是以#开头

class选择器以.开头

3.在企业开发中到底使用id选择器还是用class选择器

id选择器一般是给js用的,除非特殊情况,否则不要用id去设置样式

4.在企业开发中一个开发人员对类的使用可以看出这个开发人员的技术水平

后代选择器

什么是后代选择器?

-作用:找到指定标签的所有特定的后代标签,设置属性

-格式:

标签名称1 标签名称2{

属性: 值

}

先找到名称叫做标签名称1的标签,然后再在这个标签下面去查找所有名称叫做标签名称2的标签,然后再设置属性

-注意点:

1.后代选择器必须用空格隔开

2.后代不仅仅是儿子,也包括孙子/重孙子.只要最终是放到指定标签中的都是后代

3.后代选择器不仅仅可以使用标签名称还可以使用其他选择器

子元素选择器

什么是子元素选择器?

-作用:找到所有标签中特定的直接子元素,然后设置属性

-格式:

标签名称1>标签名称2{

属性: 值

}

先找到名称叫做”标签名称1”的标签,然后再这个标签中找到所有的直接子元素名称叫做”标签名称2”的元素

-注意点:

1.子元素选择器只会查找儿子,不会查找其他被嵌套的标签

2.子元素选择器,之间需要用>连接,而且不能有空格

3.子元素选择器不仅仅可以使用标签名称还可以用其他选择器

4.子元素选择器可以通过>符号一直延续下去

1.后代选择器和子元素选择器之间的区别?

1.1

后代选择器使用空格作为连接符号

子元素选择器使用>作为连接符号

1.2

后代选择器会选中指定标签中,所有的特定后代标签

子元素选择器只会选中指定标签中,所有的特定直接标签

2.后代选择器和子元素选择器之间的共同点

2.1

后代选择器和子元素选择器都可以使用标签名称/id名称/class名称来作为选择器

2.2

后代选择器和子元素选择器都可以通过各自的连接符号一直延续下去

3.在企业开发中如何选择

交集选择器

什么是交集选择器?

-作用:给所有选择器选中的标签中,相交的那部分标签设置属性

-格式:

选择器1选择器2{

属性: 值

}

-注意点:

1.选择器1和选择器2之间没有任何的连接符号

2.选择器可以使用标签的名称/id名称/class名称

3.交集选择器仅仅作为了解,企业开发中用的并不多

并集选择器

什么是并集选择器?

-作用:给所有选择器选中的标签设置属性

格式:

选择器1,选择器2{

属性: 值

}

注意点:

1.并集选择器必须使用,来连接

2.2.选择器可以使用标签的名称/id名称/class名称

兄弟选择器

1.相邻兄弟选择器 CSS2

-作用:给指定选择器后面[紧跟]的那个选择器选中的标签设置属性

格式:

选择器1+选择器2{

属性: 值

}

注意点:

1.相邻兄弟选择器必须通过+连接

2.相邻兄弟选择器只能选中紧跟其后面的那个标签,不能选中被隔开的标签

2.通用兄弟选择器 CSS3

-作用:给指定的选择器后面的所有选择器选中的所有标签都设置属性

-格式:

选择器1~选择器2{

属性: 值

}

-注意点:

1.通用兄弟选择器必须用~连接

2.通用兄弟选择器选中的是指定选择器后面某个选择器选中的标签后面的所有标签

序选择器(CSS3中新增的选择器中最具代表性)

1.同级别的第几个

:first-child 选中同级别中的第一个标签

:last-child 选中同级别中的最后一个标签

:nth-child(n) 选中同级别中的第n个标签

:nth-last-child(n) 选中同级别中的倒数第n个标签

:only-child 选中父元素中唯一的子元素

:nth-child(odd) 奇数 选中同级别中的所有奇数个标签

:nth-child(even) 偶数 选中同级别中的所有偶数个标签

:nth-child(xn+y) 选中同级别中的所有的用户自定义的(xn+y)个标签

x和y是用户自定义的,而n是一个计数器,从0开始递增 有多少个标签n就递增多少次

注意点:不区分类型

2.同类型的第几个

:first-of-type 选中同级别中同类型的第一个标签

:last-of-type 选中同级别中同类型的最后一个

:nth-of-type(n) 选中同级别中同类型的第n个标签

:nth-last-of-type(n) 选中同级别中同类型的倒数第n个标签

:only-of-type 选中父元素中唯一类型的某个标签

属性选择器

什么是属性选择器?

作用: 根据指定的属性名称找到对应标签,然后设置属性

格式:

[attribute]

作用:根据指定的属性名称找到对应的标签,然后设置属性

[attribute=value]

作用:找到有指定属性,并且属性的取值等于value的标签,然后设置属性

最常见的应用场景,就是用于区分input属性

1.属性的取值是以什么开头的

[attribute|=value] CSS2

[attribute^=value] CSS3

两者之间的区别:

CSS2中的只能找到value开头并以-和其他内容隔开的标签,而CSS3可以找到以value开头的所有标签

2.属性的取值是以什么结尾的

[attribute$=value]  CSS3

3.属性的取值是否包含某个特定的值的

[attribute~=value] CSS2

[attribute*=value] CSS3

两者之间的区别:

CSS2中的只能找到独立的单词,也就是说value用空格和其他内容隔开的标签,而CSS3可以找到包含value的所有标签

通配符选择器

什么是通配符选择器?

-作用:给当前界面上所有的标签设置属性

-格式:

*{

属性: 值

}

-注意点:

由于通配符是设置界面上所有的标签的属性,所以在设置前会遍历所有的标签,如果当前界面上的标签比较多,那么性能会比较差,所以企业开发中一般不会使用通配符选择器

1.什么是伪元素选择器?

伪元素选择器作用就是给指定标签的内容前面添加一个子元素或者给指定标签的内容后面添加一个子元素

格式:

给指定标签的内容前面添加一个子元素

标签名称::before {

属性名称:值

}

给指定标签的内容后面添加一个子元素

标签名称::before {

属性名称:值

}