选择器高级
1. 选择器初级复习
写法 | 名称 | 举例 |
---|---|---|
* | 通配选择器 | *{ margin:0; padding:0; } |
标签名 | 元素选择器 | div{ width:50px; height:50px; } |
.class名 | class选择器 | .nav{ width:20px; } |
#id名 | id选择器 | #header{ width:50px; } |
父 子 孙…… | 后代选择器 | #header div p{ margin:10px; } |
2. 选择器高级
写法 | 名称 | 举例 |
---|---|---|
选择器 , 选择器 | 组合选择器(多个选择器使用同一样式) | #nav p,#tab a{ font-size: 12px; } |
父 > 子 | 子元素选择器(只会选取儿子) | div>a{ color:red; } |
兄 + 弟 | 相邻兄弟选择器(紧挨着哥哥的弟弟) | p + a{ color:red; } |
兄 ~ 弟 | 关联选择器(元素后续的元素) | p ~ a{ color:red; } |
[attr] | 属性选择器(拥有attr标签属性) | [title]{ color:red; } |
[attr=val] | 属性选择器(拥有标签属性attr并值为val) | [target=_blank]{ color:red; } |
[attr*=val] | 属性选择器(拥有标签属性attr并值包含val) | [src*=baidu]{border:5px solid pink;} |
[attr$=val] | 属性选择器(拥有标签属性attr并值以val结尾) | [src~=jpg]{ border:5px solid pink; } |
[attr^=val] | 属性选择器(拥有标签属性attr并值以val开头) | [class^=nav]{ background:pink; } |
选择规则1选择规则2 | 复合选择器(多个规则来匹配元素) | div.nav.left{ width:100px; } 有nav和left类名的div标签 |
3. 伪类选择器
当你希望元素在特定的状态下发生样式的变化时,可以使用伪类选择器。
-
状态类
写法 介绍 举例 :hover 鼠标悬停 a:hover{color:pink;} :link 未被访问的链接(特指a标签) a:link{color:red}; :visited 被访问过的链接(特指a标签) a:visited{color:blue;} :active 被点击按下状态 a:active{color:green;} :hover
:active
不仅仅能用在a标签上。:hover
最为常用最为重要。可以进一步在伪类后进行选择,比如:
#wrap:hover .nav{display:none;}
写法 介绍 举例 :focus 获得焦点状态 input:focus{border:1px solid blue;} :checked (单选/多选)表单被勾选状态 input:checked{background-color:#aaa;} -
结构类
写法 介绍 举例 E:nth-child(n) E元素父级的第n个子元素(该子元素需要满足E的选择规则,不满足则不会选中任何元素) p:nth-child(2){color:red;} E:nth-of-type(n) E元素父级的第n个E元素,无视其他元素 p:nth-of-type(2){color:red;} E:first-child E元素父级的第一个子元素(该子元素需要满足E的选择规则,不满足则不会选中任何元素) p:first-child{color:red;} E:last-child E元素父级的最后一个子元素(该子元素需要满足E的选择规则,不满足则不会选中任何元素) p:last-child{color:red;} 上述选择器 n 所表示的可以是一个 数字 或者 奇数odd 或者 偶数even 或者 一个表达式,举例:
#wrap p:nth-child(2){color:red;} #wrap p:nth-child(odd){color:red;} #wrap p:nth-child(even){color:red;} #wrap p:nth-child(3n+1){color:red;}
:nth-child(n)
:nth-of-type(n)
有对应的“倒着数”属性:nth-last-child(n)
:nth-last-of-type(n)
。
4. 伪元素选择器
伪类选择器相当于在某种情况下添加一个虚拟类名,而伪元素选择器则是相当于创建了一个虚拟元素。
写法 | 介绍 | 举例 |
---|---|---|
E::before | 相当于在E元素的最前面添加一个额外的子元素 | #wrap::before{content:”Hello World!”} |
E::after | 相当于在E元素的最后面添加一个额外的子元素 | #wrap::after{content:”Hello World!”} |
必须拥有 content
样式,上述两个伪元素才会生效。
创建的子元素是一个行内元素。
::after
常用来清除浮动。
content
除了写文字之外,还可以用url指定一张图片等其他写法。
其他不常用的伪元素:
写法 | 介绍 | 举例 |
---|---|---|
E::first-line | 首行样式 | p::first-line{color:red;} |
E::selection | 用户复制选中部分 | p::selection{background-color:pink;} |
5. 补充
样式优先级:!important > 行内样式 > id > class | 属性 | 伪类 | 伪元素 > 标签 | + | ~ | + | 子代 > *
样式值后面可以加上 !important
将这条样式的优先级提到最高。
外部样式表如果有需要的话可以在最开始加上编码规定@charset ‘utf-8’;
评论(0)
暂无评论