二、CSS之——选择器

html-css07

二、CSS之——选择器,第1张

作用:通过元素选择器可以选择页面中的所有指定元素

语法:标签名{}

作用:通过元素的class属性值选中一组元素

语法:.class属性值{}

id选择器

作用:通过元素的id属性值选中唯一的一个元素

语法:#id属性值{}

复合选择器(交集选择器)

作用:可以选中同时满足多个选择器的元素

语法:选择器1选择器2选择器N{}

选择器分组(并集选择器)

作用:通过选择器分组可以同时选中多个选择器对应的元素

语法:选择器1,选择器2,选择器N{}

通配选择器

作用:可以用来选中页面中的所有的元素

语法:*{}

元素之间的关系:

父元素:直接包含子元素的元素

子元素:直接被父元素包含的元素

祖先元素:直接或间接包含后代元素的元素,父元素也是祖先元素

后代元素:直接或间接被祖先元素包含的元素,子元素也是后代元素

兄弟元素:拥有相同父元素的元素叫做兄弟元素

作用:选中指定元素的指定后代元素

语法:祖先元素 后代元素{}

有时候,你需要选择本身没有标签,但是 仍然易于识别的网页部位,比如段落首行 或鼠标滑过的连接。CSS为他们提供一些选 择器:伪类和伪元素。

给链接定义样式:

有四个伪类可以让你根据访问者与该链接的交互方式,将链接设置成4中不同的方式。

其他:

否定伪类

否定伪类可以帮助我们选择不是其他东西的某种东西。

语法: :not(选择器){}

比如p:not(.hello)标识选择所有的p元素,但是class为hello的除外。

属性选择器可以挑选带有特殊属性的标签。

语法:

[属性名]

[属性名 = "属性值"]

[属性名 ~= "属性值"]

[属性名 ^= "属性值"]

[属性名 |= "属性值"]

[属性名 $= "属性值"]

[属性名 *= "属性值"]

作用:选中指定父元素的指定子元素

语法:父元素 >子元素

比如body >h1将选择body字标签中的所有h1标签

IE6及以下的浏览器不支持子元素选择器

其他子元素选择器

除了根据祖先父子关系,还可以根据兄弟关系查找元素。

语法:

兄弟元素 + 兄弟元素 :查找后边一个兄弟元素

兄弟元素 ~ 兄弟元素:查找后边所有的兄弟元素

在页面中使用CSS选择器选中元素时,经常都是一个元素同时被多个选择器选中。

比如:

这两个选择器都会选择h1元素,如果两个选择器设置的样式不一样那还好不会产生冲突,但是如果两个选择器设置的是同一个样式,这样h1到底要应用哪个样式呢?CSS中会默认使用权重较大的样式,下面看一下权重又是如何计算的。

不同的选择器有不同的权重值:

一、简单的选择器

1)标签选择器

与网页元素同名,用的最多,也简单,即直接作用于与该选择器名字相同的标签

2) 类选择器

能够为网页对象定义不同的样式类,实现不同元素拥有相同的样式,相同元素的不同对象拥有不同样式

3)类选择器和标签结合在一起==>指定类选择器

指定该类用于特定的标签范围内

4)ID选择器(ID唯一)

这个就不举例讲解了,类比类选择器,把"."换成"# "即可

5)通配选择器

如果所有元素都需要定义相同的样式,推荐使用通配选择器

二、复合选择器

1)子选择器

2)相邻选择器(二者有相同父元素)

**利用相邻的兄弟元素来控制,即相邻选择器就是指定一个元素相邻的下一个元素的样式。相邻的选择器使用+表示

3)包含选择器(后代选择器)

第一对象一定要内包含第二对象

4)选择器嵌套

5)属性选择器

属性选择器就是利用网页标签包含的属性及其属性值来定义特定对象或一定范围元素的样式。

1.匹配属性名选择器

2.扩展

3.匹配属性值选择器

4.模糊匹配属性值选择器

类似正则表达式

6)伪选择器和伪元素选择器

标签之间可以通过逗号隔开来设定多个标签的CSS样式

CSS选择器、CSS属性

style写在head中间,type="text/css"可以不用写,默认就是这个。

规定文字样式、粗细、大小、字体的属性

1、字体不存在用户电脑上时:

不处理时,使用用户电脑系统默认字体

处理:font-family:“不存在的字体”,"备选字体";--设置备选字体,可设置多个备选字体

2、一串字符串既有中文,又有英文时,如何设置两种字体

英文字体是中文字体的子集。【意思是:英文字体不能处理中文,中文字体可以处理英文】

文本装饰、文本对齐,文本缩进的属性

文本装饰-文字的下划线,中划线等

文本对齐:

文本缩进:

格式:

p{

font:20px,"楷体"

}

标签选择器选中的是页面中所有的该标签

作用:根据指定的id名称找到对应的标签,然后设置属性。(标签选择器选中的是全部的同类标签)

第一步:给需要设置的标签设置id,

第二步:

注意:

1、id在同一页面是唯一的

2、id名是有规范的,只能是字母,数字和下划线,不能使用数字开头,不能使用HTML的标签名

3、如果仅仅是为了设置样式,不需要使用id,而是使用类选择器,id是留给js使用的。

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

第一步:给需要设置的标签设置className,

第二步:

注意:

1、className是可以重复的

2、className名是有规范的,只能是字母,数字和下划线,不能使用数字开头,不能使用标签名

3、如果仅仅是为了设置样式,不需要使用id,而是使用类选择器,id是留给js使用的。

4、同一个HTML变迁可以有多个classname

1、id使用“,”class使用#

2、class相当于人名,所以同一个页面上的HTML标签可以有一样的className;

id相当于身份证,所以同一个页面上的HTML标签不可以有一样的id;

3、class相当于人名,所以,一个HTML标签可以有多个Class

id相当于身份证,所以,一个HTML标签只能有一个id

4、一般情况下设置样式,使用class;如果需要js配合,使用id

格式:

先祖位置可以是HTML标签,可以是class名,可以是id

后代位置可以是HTML标签,可以是class名,可以是id

可以随意组合

只会查找直接子元素

格式:

1、都可以使用HTML标签、id名、class名

1、后代使用空格,子使用>

2、后代可以选取指定标签的所有特定标签,包括子、孙;而子只能选取指定标签的特定子标签

定义:两个选择器相交的部分

格式:

选择器1选择器2{

}

选择器1和选择器2之间没有任何符号,没有空格,没有>

选择器1和选择器2之间有逗号。

相邻:选择器1+选择器2,给紧跟着选择器1后面的选择器2设置样式

通用:选择器1~选择器2,给选择器1后面的所有选择器2设置样式

CSS3中新增的选择器最具代表性的就是序选择器

1.同级别的第几个

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

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

:nth-child(n) 选中同级别中的第n个标签【n的值可以是数值,可以是“odd”、“even”,也可以是表达式,比如xn+y】

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

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

注意点: 不区分类型

2.同类型的第几个

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

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

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

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

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

| [ attribute ] | [target] | 选择带有 target 属性所有元素。 | 2 |

| [ attribute = value ] | [target=_blank] | 选择 target="_blank" 的所有元素。 | 2 |

| [ attribute ~= value ] | [title~=flower] | 选择 title 属性包含单词 "flower" 的所有元素。 | 2 |

| [ attribute |= value ] | [lang|=en] | 选择 lang 属性值以 "en" 开头的所有元素。 | 2 |

| [ attribute ^= value ] | a[src^="https"] | 选择其 src 属性值以 "https" 开头的每个 <a>元素。 | 3 |

| [[ attribute =value] 选择器") | a[src$=".pdf"] | 选择其 src 属性以 ".pdf" 结尾的所有 <a>元素。 | 3 |

| [ attribute = value*] | a[src*="abc"] | 选择其 src 属性中包含 "abc" 子串的每个 <a>元素。 | 3 |

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

[ attribute |= value ]----------------CSS2

优先使用CSS3的。

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

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

[attribute~=value]

*{

}