css选择器总结
选择器的作用
选择器就是选择标签用的, 把我们想要的标签选择出来,选对人,做对事。
h1 {
color:pink
}
这段代码就是把所有的h1标签选出来,然后把它们变成粉色
css基础选择器
标签选择器
标签选择器是指用HTML标签名称作为选择器,按标签名称分类,为页面中某一类标签指定统一的CSS样式。
语法:
标签名{属性1:属性值1; 属性2:属性值2; 属性3:属性值3;}
标签选择器可以把某一类标签全部选择出来,比如所有的div标签和所有的span标签。
类选择器
类选择器使用“.”(英文点号)进行标识,后面紧跟类名
.类名 {/*注意后面有空格*/
属性1:属性值1;
属性2:属性值2;
属性3:属性值3;
}
<p class='类名'></p>
类选择器可以为元素对象定义单独或相同的样式,可以选择一个或者多个标签。
id选择器
id选择器使用#
进行标识,后面紧跟id名
#id名 {属性1:属性值1; 属性2:属性值2; 属性3:属性值3; }
<p id="id名"></p>
- W3C标准规定,在同一个页面内,不允许有相同名字的id对象出现,但是允许相同名字的class,就好比人的身份证号是唯一的,名字可以多次重复使用
通配符选择器
通配符选择器用号表示,\就是选择所有的标签,他是所有选择器中作用范围最广的,能匹配页面中所有的元素。
* { 属性1:属性值1; 属性2:属性值2; 属性3:属性值3; }
清除HTML默认边距
* {
margin: 0; /* 定义外边距*/
padding: 0; /* 定义内边距*/
}
选择器 | 作用 | 缺点 | 使用情况 | 用法 |
---|---|---|---|---|
标签选择器 | 可以选出所有相同的标签,比如p | 不能差异化选择 | 较多 | p { color:red;} |
类选择器 | 可以选出1个或者多个标签 | 可以根据需求选择 | 非常多 | .nav { color: red; } |
id选择器 | 一次只能选择器1个标签 | 只能使用一次 | 不推荐使用 | #nav {color: red;} |
通配符选择器 | 选择所有的标签 | 选择的太多,有部分不需要 | 不推荐使用 | * {color: red;} |
css复合选择器
后代选择器
作用:用来选择元素或元素组的子孙后代
写法就是把外层标签写在前面,内层标签写在后面,中间用空格分隔,先写父亲爷爷,在写儿子孙子。
父级 子级{属性:属性值;属性:属性值;}
子代选择器
作用:子元素选择器只能选择作为某元素子元素(亲儿子)的元素。
这里的子指的是亲儿子,不包含孙子重孙子之类
写法就是把父级标签写在前面,子级标签写在后面,中间跟一个>
进行连接
父级>子级{属性:属性值;属性:属性值;}
兄弟选择器
相邻兄弟选择器
作用:相邻兄弟选择器可选择紧接在另一元素后的元素,且二者有相同父元素
写法:元素标签写前面,相邻兄弟标签写后面,中间用+
进行连接
div+p {
background-color:yellow;
}
<div>
<h2>DIV 内部标题</h2>
<p>DIV 内部段落。</p>
</div>
<p>DIV 之后的第一个 P 元素。</p> 这个元素背景会变成黄色
<p>DIV 之后的第二个 P 元素。</p>
后续兄弟选择器
作用:后续兄弟选择器选取所有指定元素之后的相邻兄弟元素
写法:元素标签写前面,兄弟标签写后面,中间用~
进行连接
div~p
{
background-color:yellow;
}
<p>之前段落,不会添加背景颜色。</p>
<div>
<p>段落 1。 在 div 中。</p>
<p>段落 2。 在 div 中。</p>
</div>
段落3和段落4会背景会变成黄色
<p>段落 3。不在 div 中。</p>
<p>段落 4。不在 div 中。</p>
交集选择器
作用:交集选择器由两个选择器构成,找到的标签必须满足:既有标签一的特点,也有标签二的特点
写法:其中第一个为标签选择器,第二个为class选择器,两个选择器之间不能有空格,如h3.specia
p.one {} 选择的是: 类名为 .one 的 段落标签。
并集选择器
作用:某些选择器定义的相同样式,就可以利用并集选择器
写法:并集选择器是各个选择器通过,
连接而成的,通常用于集体声明
.one, p , #test {color: #F00;}
表示 .one 和 p 和 #test 这三个选择器都会执行颜色为红色。
伪类选择器
链接伪类选择器
作用:用于向某些选择器添加特殊的效果。比如给链接添加特殊效果
- a:link / 未访问的链接 /
- a:visited / 已访问的链接 /
- a:hover / 鼠标移动到链接上 /
- a:active / 选定的链接 /
写的时候,他们的顺序尽量不要颠倒按照lvha的顺序。否则可能引起错误。
a {
font-size:25px;
color:#ccc;
}
//鼠标悬停时候a标签颜色变为粉色
a:hover {
color:pink
}
结构伪类选择器
选择器 | 功能描述 |
---|---|
E:first-child | 作为父元素的第一个子元素的元素E,与E:nth-child(1)等同 |
E:last-child | 匹配最后一个E元素 |
E:nth-child(n) | 匹配第n个子元素E |
E:first-type | 指定类型E第一个 |
E:last-type | 指定类型E最后一个 |
E:nth-of-type(n) | 指定类型E第n个 |
- nth-child(n)与nth-of-type(n)的区别
就理解一句话nth-of-type是取当前元素的兄弟元素的第n个,nth-child取的是当前元素的第n个节点的当前元素
<button>:nth-child(2)</button>
<button>:nth-last-child(2)</button>
<button>:nth-of-type(2)</button>
<button>:nth-last-of-type(2)</button>
<h1>body 中的标题</h1>
<p>body 中第一个段落。</p>
<p>body 中第二个段落。</p>
<div style="border:1px solid;">
<span>div 中的 span 元素</span>
<p>div 中的第一个段落。</p>
<p>div 中的第二个段落。</p>
<p>div 中的第三个段落。</p>
<p>div 中的第四个段落。</p>
<span>div 中的 span 元素</span>
</div><br>
<div style="border:1px solid;">
<p>另一个 div 中的第一个段落。</p>
<p>另一个 div 中的第二个段落。</p>
<p>另一个 div 中的最后一个段落。</p>
</div>
<p>body 中最后一个段落。</p>
所以nth-child(2)是在选择第二个节点,而nth-of-type(2)是在选择第二个p元素
- nth-child(n)的特殊用法
/* 选择列表中的偶数标签 */
:nth-child(2n)
/*选择列表中的奇数标签 */
:nth-child(2n-1)
/*选择前几个元素 */
/*【负方向范围】选择第1个到第6个 */
:nth-child(-n+6){}
/*从第几个开始选择*/
/*【正方向范围】选择从第6个开始的,直到最后 */
:nth-child(n+6){}
/*两者结合使用,可以限制选择某一个范围 */
/*【限制范围】选择第6个到第9个*/
:nth-child(n+6):nth-child(-n+9)
属性选择器
<button>按钮</button>
<button>按钮</button>
<button disabled='disabled'>按钮</button>
<button disabled='disabled'>按钮</button>
button {
cursor: pointer;
}
/* 属性选择器 */
/* 选择的是:既是button,又是disable这个属性的元素 */
/* 属性选择器的权重高于标签选择器和类选择器,结构伪类选择权重都为10 */
button[disabled] {
cursor: default;
}
这是一个简单的案例,本来按钮放上去都是有小手,而禁用的按钮放上去还是默认的箭头
<input type="text" value="文本框">
<input type="text" value="文本框">
<input type="text" value="文本框">
<input type="search" value="搜索框">
<input type="search" value="搜索框">
<input type="search" value="搜索框">
input[type = 'search'] {
color: pink;
}
这样就可以把所有搜索框变成粉色
<div class="icon1">图标1</div>
<div class="icon2">图标2</div>
<div class="icon3">图标3</div>
div[class^='icon'] {
color: red;
}
这样可以选择所有类名icon开头的图标
选择符 | 简介 |
---|---|
E[att] | 选择所有具有att属性的E元素 |
E[att = "val"] | 选择具有att属性,且属性值为val的E元素 |
E[att ^= "val"] | 选择具有att属性,且属性值以val开头的E元素 |
E[att $= "val"] | 选择具有att属性,且属性值以val结尾的E元素 |
E[att *= "val"] | 选择具有att属性,且属性值含有val的E元素 |
Comments NOTHING