1.什么是选择器:
在CSS中,选择器是一种模式,用于选择需要添加样式的元素
2.选择器的种类和形式:
$ 元素/标签 选择器: 标签名{} 例:p{} 则会选中页面的所有h1标签
$ 类选择器:.类名{} 例 :.hello会选中页面所有class属性为hello的元素。
$ id选择器:#id值{} 例:#box会选中页面中id属性值为box的 元素,和class属性不同,id属性是不能重复的。
$ 复合选择器(交集选择器):选择器1选择器2选择器3{}
例:div.box1会选中页面中具有box1这个class的div元素。(可以选中同时满足多个选择器的元素 )
$ 群组选择器(并集选择器): 选择器1,选择器2,选择器3 { }
例:p,.hello,#box会同时选中页面中p元素,class为hello的元素,id为box的元素。
$ 通用选择器:*{} 可以用来选中页面中的所有的元素
$ 子元素选择器: 父元素 > 子元素{} # 选中指定父元素的指定子元素
(--)伪类选择器:伪类专门用来表示元素的一种特殊的状态
比如:访问过的超链接、普通的超链接、获取焦点的文本框
当我们需要为处在这些特殊状态的元素设置样式时,就可以使用伪类
$ :link{} 普通的链接(没访问过的链接)
$ :visited {} 访问过的链接
$ :hover {} 鼠标移入的状态
$ :active {} 超链接被点击的状态
# 第三 第四 伪类的顺序不能乱 :hover和:active也可以为其它元素设置
$ input:focus {} 文本框获取焦点以后
#<input type='text'> 使用input标签可以创建一个文本输入框
$ 元素名::selection {} 为标签中选中的内容使用样式设置可以使用::selection伪类
# p::-moz-selection 火狐兼容
伪元素选择器:使用伪元素来表示元素中的一些特殊的位置 一般它都需要结合content这个样式一起使用
:before {} 表示元素最前边的部分
:after {} 表示元素最后边的部分
属性选择器
作用:可以根据元素中的属性或属性值来选取指定元素
语法:
[属性名] 选取含有指定属性的元素
[属性名="属性值"] 选取含有指定属性值的元素
[属性名^="属性值"] 选取属性值以指定内容开头的元素
[属性名$="属性值"] 选取属性值以指定内容结尾的元素
[属性名*="属性值"] 选取属性值包含指定内容的元素
子元素选择器
:first-child {} 可以选中第一个子元素
:last-child {} 可以选中最后一个子元素
:nth-child {} 可以选中任意位置的子元素
子元素名:only-child {} 选中只有一个子元素的父元素
:first-of-type
:last-of-type
:nth-of-type
和child类似,只不过child是在所有的子元素中找
而type是在当前类型的子元素中找
#带nth 选择器后边可以指定一个参数,指定要选中第几个子元素
even 表示偶数位置的子元素
odd 表示奇数位置的子元素
兄弟元素选择器
前元素名+后元素名 {} :可以选中一个元素后紧挨着的指定的兄弟元素
元素名 ~ {}:选中后边的所有兄弟元素
否定伪类
元素名:not(选择器) {} :可以从已选中的元素中剔除出某些元素
样式的继承 :像儿子可以继承父亲的遗产一样,在CSS中,祖先元素上的样式,也会被他的后代元素所继承
利用继承,可以将一些基本的样式设置给祖先元素,这样所有的后代元素将会自动继承这些样式
但是,并不是所有的样式都会被子元素所继承,比如:背景、边框、定位相关的样式都不会被继承
选择器的优先级:当使用不同的选择器,选中同一个元素时,并且设置相同的样式时,这时样式之间产生了冲突,最终到底采用哪个选择器定义的样式,由选择器的优先级(权重)决定,优先级高的优先显示
优先级的规则
内联样式,优先级1000
id选择器,优先级100
类和伪类,优先级10
元素选择器,优先级1
通配*,优先级0
继承的样式,没有优先级
当选择器中包含多种选择器时,需要将多种选择器的优先级相加,然后再比较
但是注意,选择器优先级计算不会超过他的最大的数量级
如果选择器的优先级一样,则使用靠后的样式
并集选择器的优先级是单独计算的
可以在样式的最后添加一个!important,则此时该样式将会获取一个最高的优先级,将会优先于所有的样式显示,甚至超过内联样式,但是在开发中,尽量避免使用!important
a的伪类
涉及到a的伪类一共有四个
:link
:visited
:hover
:active
而这四个选择器的优先级是一样的
--------------------- 作业 -----------------------
1. plate 元素选择器
2.bento 元素选择器
3.#fancy id 选择器
4.plate>apple 子元素选择器
5.#fancy pickle 复合选择器
6, .small 类选择器
7. orange.small 复合选择器
8. bento orange.small 复合选择器
9.plate,bento 群组选择器
10. * 通配符选择器
11 plate * 通配符选择器
12.plate+apple 兄弟元素选择器
13.pickle ~ pickle 兄弟元素选择器
14plate > apple 父子元素选择器
15,plate>orange:first-child 子元素选择器
16,apple,pickle:only-child 子元素选择器
17,apple,pickle:last-child 子元素选择器
18,plate:nth-child(3) 子元素选择器
19,bento:nth-last-child(4) 子元素选择器(从后往前数)
20,apple:first-of-type 子元素选择器
21,plate:nth-of-type(even) 子元素选择器
22,plate:nth-of-type(2n+3) 子元素选择器(使用公式 (an + b)。描述:表示周期的长度,n 是计数器(从 0 开始),b 是偏移值。)
23,apple:nth-of-type 子元素选择器
24,orange:last-of-type,apple:last-of-type 子元素选择器
25,bento:empty 子元素选择器(指定空的元素)
26,not(#famcy,plate,.small) 否定伪类选择器