css选择器、权重及优先级
遇到的问题
- 子元素使用padding会影响父元素。(解决方法是给父元素用padding)
- 背景图片的设置。(已解决)
分享会(胡小青)
CSS选择器、权重及优先级
选择器的种类
- 通配符选择器(*)
- id选择器(#ID)
- 类选择器(.className)
- 标签选择器(E)
- 后代选择器(E F)
- 子元素选择器(E>F)
- 相邻兄弟元素选择器(E + F)
- 群组选择器(selector1,selector2,…,selectorN)
- 交集选择器(E.className)
- 属性选择器
- 伪类选择器
1 | //html |
属性选择器
属性选择器 | 功能 | |
---|---|---|
E[att] | 匹配所有具有att属性的E元素,不考虑它的值。 | css2 |
E[att=val] | 匹配所有att属性等于”val”的E元素 | css2 |
E[att~=val] | 匹配属性包含val的元素,并设置其样式:注意是val,所以val-ab这样不算 | css2 |
E[att|=val] | 匹配所有att属性具有多个连字号分隔(hyphen-separated)的值、其中一个值以”val”开头的E元素,主要用于lang属性 | css2 |
E[att^=val] | 选择匹配的元素E,E定义了属性att,属性值以val开头的字符串 | css3 |
E[arr$=val] | 选择匹配的元素E,E定义了属性att,属性值以val结尾的字符串 | css3 |
E[att*=val] | 选择匹配的元素E,E定义了属性att,属性值包含val的字符串,也就是val可以在任意位置 | css3 |
1 | //html |
伪类选择器 ***
动态伪类
锚点伪类
:link
链接访问前状态:visited
链接访问后状态:hover
鼠标悬浮链接的状态:active
激活链接时的状态伪类的顺序:link - visited -> hover -> active
用户行为伪类
:hover
用于当用户把鼠标移动到元素上面时的效果:active
用于用户点击元素那一下的效果:focus
用于元素成为焦点,这个经常用在表单元素上顺序: focus - > hover -> active
IE6下只有<a>
支持:hover
,IE6,7都不支持:focus
、:active
1 | //html |
UI元素状态伪类
这类伪类主要针对form元素
| 伪类 | 功能 |适用元素|
|:—–:|:—–:|
| :enabled
|匹配表单中激活的元素| type=”text”|
| :disabled
|匹配表单中禁用的元素| type=”text”|
| :checked
|匹配表单中被选中的radio(单选框)或checkbox(复选框)元素| type=”radio” |
|::selection
| 匹配用户当前选中的元素|
1 | input[type="radio"]:disabled { |
结构伪类
:first-child
* 选择某个元素的第一个子元素,IE6不支持;:last-child
* 选择某个元素的最后一个子元素;:nth-child()
* 选择某个元素的一个或多个特定的子元素,IE6-8,Firefox3.0不兼容;:nth-child(length)  参数是具体数字
:nth-child(n)  参数是n,n从0开始计算
:nth-child(nlength)  n的倍数选择,n从0开始算
:nth-child(n+length)  选择大于length后面的元素
:nth-child(-n+length)  选择小于length前面的元素
:nth-child(nlength+1)  表示隔几选一
1 | li:last-child { |
:nth-last-child()
选择某个元素的一个或多个特定的子元素,从这个元素的最后一个子元素开始算,IE6-8,Firefox3.0不兼容;:nth-of-type()
选择指定的元素,与nth-child类似也可以使用表达式,IE6-8,Firefox3.0不兼容;:nth-last-of-type()
选择指定的元素,从元素的最后一个开始计算;:first-of-type
选择一个上级元素下的第一个同类子元素,与first-child类似,不过是指定了元素类型;:last-of-type
选择一个上级元素的最后一个同类子元素;:only-child
选择的元素是它的父元素的唯一一个子元素,兼容到IE9;:only-of-type
选择一个元素是它的上级元素的唯一一个相同类型的子元素,IE6-8,Firefox3.0不兼容;:empty
选择的元素里面没有任何内容,兼容到IE9;:not()
选择不匹配的元素,兼容到IE9;target
匹配文档中特定”id”点击后的效果,兼容到IE9。
1 | //html |
伪元素选择器
伪元素 | 功能 |
---|---|
:first-line |
匹配元素的第一行 |
:first-letter |
匹配元素的第一个字母 |
:before |
元素之前插入生成的内容 |
:after |
元素之后插入生成的内容 |
:selecton |
改变浏览网页选中文的默认效果 |
伪元素可以用::
也可以用:
关于first-letter使用条件比较苛刻,一般只有
有兴趣可以参考深入CSS ::first-letter伪元素及其实例
1 | li::first-letter { |
伪类和伪元素的区别
- CSS 伪类用于向某些选择器添加特殊的效果。
- CSS 伪元素用于将特殊的效果添加到某些选择器。
两者都与选择器相关,可以添加一些“特殊”的效果。
区别:
    伪类的效果可以通过添加一个实际的类来达到,而伪元素的效果则需要通过添加一个实际的元素才能达到
伪类
1 | //html |
伪类 :first-child
添加样式到第一个子元素
如果我们不使用伪类,而希望达到上述效果,可以这样做:
1 | //html |
我们给第一个子元素添加一个类,然后定义这个类的样式。
伪元素:
1 | //html |
伪元素 :first-letter
添加样式到第一个字母
那么如果我们不使用伪元素,要达到上述效果,我们可以这样做:
1 | //html |