今天在做项目的时候,发现选择器有些遗忘。特写此文章来加深记忆,也方便自己日后回顾。
通用选择器 *
//有时候为了浏览器内置样式,可能会这样写。
//但一般不推荐!!!
*{ margin:0;padding:0; }
标签选择器 E
ID选择器 #myid
类选择器 .myclass
类选择器和ID选择器算是最常见两种选择器。
这里要讲一下关于选择器优先级。
优先级从高到低分别为:
内联样式、ID、class/属性选择器/伪类选择器[如:hover,:focus]等、元素选择器/伪元素选择器[如:before,:after]
如果两个优先级相同,则按照声明顺序,写在【样式表】后面的起作用。
【注意!是在样式表中的位置!而不是在使用的位置!】
<style>
.classA{ color:blue;}
.classB{ color:red;}
</style>
<body>
<p class='classB classA'> 123 </p>
</body>
最后p的颜色显示为red!!!是写在样式表后面的.classB起作用!
属性选择器
E[disable] E中定义了disable属性的元素。E可省略,则表示选择定义了disable属性的任意类型的元素
E[att='val'] 匹配所有att属性等于val的E元素。E可省略,同上。
-
E[att~=key] 匹配att属性有key的元素,att属性是一个以空格符分隔的列表。
<a title="bar1 bar2 bar3"></a> <a title="bar2 bar3 bar4"></a> a[title~="bar1"]匹配第一个a元素
-
E[att|=es] 匹配E的元素,且att属性值是以es开头,att属性是用‘-’分隔的列表。
<body lang ="en-us"></body> <body lang ="fr-argot"></body> [lang|en] 匹配第一个body元素
E[att*="bar"] 匹配E的元素,且att属性值包含bar的子字符串。
E[att^="http://"] 匹配E的元素,且att属性以http://开头
E[att$=".png"] 匹配E的元素,且att属性以.png结尾
伪类选择器
E:link 被定义了超链接并未被访问
E:visited 被定义了超链接并已经访问
E:active 匹配元素被激活
-
E:hover 匹配元素正在被鼠标经过
【注意顺序:LVHA :link->:visited->:active:->:hover】 举个栗子。 a:link {color: blue;} a:active {color: red;} a:hover {color: magenta;} a:visited {color: purple;} 由于优先级相同,按照先后顺序来显示。 一个未被访问过的链接可以同时是hover和active的状态,但是由于visited写在最后,所以会覆盖了:active和:hover的样式。那么这个链接都是紫色的,无法呈现:active和:hover的状态。
E:focus 匹配元素获取了焦点
E:first-child 匹配E的元素,且该元素是父元素的第一个子元素
E:last-child 父元素中最后一个位置,且匹配E的子元素
E:nth-child(n) 选择所有在其父元素中第n个位置的匹配E的子元素
E:nth-last-child(n) 选择所有在其父元素中倒数第n个位置的匹配E的子元素
E:nth-of-type(n) 在所有满足E的元素内的第n个元素
E:first-of-type 相当于E:nth-of-type(1)
-
E:last-of-type 相当于E:nth-last-of-type(1)
这里nth-child/nth-last-child和nth-of-type容易混淆。 <div> <h1></h1> <p>123</p> <p>456</p> </div> p:nth-of-type(2){color:red;} p:nth-child(2){color:blue;} 效果: 123为蓝色。p:nth-child(2)匹配其父元素中第二个位置的p元素。若div元素第二个位置元素不是p元素,则不起作用。 456为红色。p:nth-of-type(2)匹配div中所有p元素中的第二个。
E:empty 匹配E的元素,且不包含子节点。【文本也属于节点】
E:target 选择匹配E的所有元素,且匹配元素被相关URL指向
E:not(s) 否定伪类选择器。匹配E且不满足s选择符的元素。
E:root 匹配文档根元素
E::selection 匹配当前选中的元素
E:checked 匹配E的所有被选中UI元素radio/checkbox
E:enabled 匹配E的所有可用UI元素
-
E:disabled 匹配E的所有不可用UI元素
在网页中,UI元素一般是指包含在form元素内的表单元素 <form> <input type="text" /> <input type="button" disabled="disabled" /> <input type="checkbox" /> <input type="radio" checked="checked" /> </form> input:checked 匹配单选按钮,不匹配复选框 input:enabled 匹配文本框,复选框,单选按钮,不匹配button input:disable 匹配button
关系选择器
A E 后代选择器。匹配E,且是被包含在A内的元素。只要是A的后代即可。
A > E 子包含选择器。匹配E的元素,且是A元素的子元素!只能是子元素,不能是孙元素等。。
B + E 相邻兄弟选择器。匹配E的元素,该元素位于B后面相邻位置!
A ~ E 通用兄弟选择器。匹配E的元素,该元素位于E元素的后面,且在同一级结构。即兄弟位置。
伪元素选择器
E:first-line E元素内第一行文本
E:first-letter E元素内第一个字符
E:before 在E元素之前插入生成内容
E:after 在E元素之后插入生成的内容
之前利用选择器和css3动画写了一个筛选菜单的效果。
github地址如下:https://github.com/Lsxj/css3/tree/master/css-filter
效果如下: