id选择器:#id{ }
命名时,仅数字、字母、下划线可用,且数字不可开头,标签也不可用于id命名
id选择器不可重复 独一无二
类选择器:.className{ }
命名时,仅数字、字母、下划线可用,且数字不可开头,标签也不可用于class命名
一个标签可用多个类名 共性样式可以巧用
后代选择器:空格隔开最上面两个选择器 如(.className #id{ }、.className .className{ }、#id #id{ })
只要是后代就可选中(包括重孙)
子元素选择器:>隔开最上面两个选择器 如(.className>#id{ }、.className>.className{ }、#id>#id{ })
类似后代选择器 不过仅能选中儿子 重孙不可选中
交集选择器:无空格隔开 选择器1选择器2{ }
选择交集元素 (用的较少)
用这个选择器,可以调控,为任意元素添加样式(用于动画调控):
.first .text > img{
margin: 0 40px;
opacity: 0.2;
transition: margin .5s, opacity .5s;
}
.first.current .text > img{
margin: 0 5px;
opacity: 1;
/*
或者放这里
transition: margin .5s, opacity .5s;
*/
}
allLis[0].onclick = function () {
for(let i;i<allLis.length;i++){
allLis[i].classList.remove('current')
}
setTimeout(function () {
this.classList.add('current')
}, 500)
};
并集选择器:逗号隔开 选择器1,选择器2,选择器3{ }
可同时给几个选择器定义样式
通配符选择器:*{ } :给当前页面所有标签设置样式(注:一般不会用 因为降低服务器速率)
属性选择器:
[attribute=value]{ }
(例如:p[class=cc]{ }
选中 class 为 cc 的 p 元素)[attribute^=value]
(例如:p[class^=cc]{ }
选中 class 以 cc 开头的 p 元素 同下)[attribute$=value]
[attribute*=value]
[attribute]
(例如:p[class]{ }
选中所有含有 class 属性的 p 元素)内容选择器:
伪类选择器:
a标签的点击触发样式
a:link{} //未访问
a:visited{} //已访问
a:hover{} //鼠标悬停
a:active{} //鼠标长按
注意:四个属性顺序最好不要随意改变 ,若是想要慢动画效果 可以结合transition
兄弟选择器:
1、相邻兄弟 选择器1+选择器2{ }:给1后面紧跟的2设置样式
2、通用兄弟 选择器1~选择器2{ }:给1后面所有的2设置样式
如果想给后面有2的1设置样式,配合伪元素使用:
dt, dd {
display: inline;
margin: 0;
padding: 0;
}
dt {
font-weight: 800;
}
dd + dt::before {// 给后面有 dt 的 dd 设置样式
content: "\A";
white-space: pre;
}
dd + dd::before {// 给后面有 dd 的 dd 设置样式
content: ", ";
font-weight: normal;
}
序选择器:
1、同级别(不区分类型)
:first-child——同级第一个
:last-child——同级最后一个
:nth-child(n)——同级中的第n个
:nth-last-child(n)——同级中倒数第n个
:only-child——选中仅有一个子元素的元素
2、同类型(区分类型)
:first-of-type——同级同类第一个
:last-of-type——同级同类最后一个
:nth-of-type(n)——同级同类中的第n个
:nth-last-of-type(n)——同级同类中倒数第n个
:only-of-type——选中仅有一个子元素(仅限所选这个类型)的元素
注:对于:nth-child()、:nth-of-type()及另外两个last
可传入参数 odd
—选中所有奇数 even
—选中所有偶数
亦或是(xn+y)
其中x y自定义 选中符合式子的元素(n默认从零递增,但当n<=0时,选取无效,所以取前m个元素可以用nth-of-type(-n+m)
,选取倒数m个元素可以用nth-last-of-type(-n+m)
)
伪元素选择器
::focus——选择具有焦点的输入元素
::first-letter——选择元素的第一个字母
/*设置第一个字符*/
p::first-letter {
font-size: 30px;
margin-right: 5px;
color: brown;
float: left; /*文字环绕*/
}
::first-line——选择元素的第一行
/*设置第一行内容*/
p::first-line {
color: red;
}
::selection——可改变选中文本的样式
/*设置选中内容的样式*/
p::selection {
background-color: skyblue;
}
content:""
:
和::
都一样,按照伪元素来处理<style>
.father {
width: 500px;
height: 300px;
}
.father div:nth-of-type(1) {
width: 300px;
height: 300px;
background-color: skyblue;
float: left;
}
.father div:nth-of-type(2) {
width: 200px;
height: 300px;
background-color: pink;
float: right;
position: relative;
}
.father div:nth-of-type(2):after {
content: '';
display: block;
width: 40px;
height: 40px;
border-radius: 50%;
background-color: #fff;
position: absolute;
top: -20px;
left: -20px;
}
.father div:nth-of-type(2):before {
content: '';
display: block;
width: 40px;
height: 40px;
border-radius: 50%;
background-color: #fff;
position: absolute;
bottom: -20px;
left: -20px;
}
style>
<div class="father">
<div>div>
<div>div>
div>
<style>
h3::after {
content: "rocks!";
}
</style>
<h3>generated content</h3>
<script>
let h3 = document.querySelector('h3'),
result = getComputedStyle(h3, '::after').content;
alert(`the generated content is: ${result}`);
console.log(`the generated content is: ${result}`);
// the generated content is: "rocks!"
</script>
内联>id>类>标签>通配符>继承>浏览器默认
!important(仅可直接选中):使得优先级最大
p{color:red !important;}
1、只能直接选中,不能用于间接选中
2、通配符选中标签也是直接选中的
3、仅提升选中的样式,而其他样式不会提升
4、必须写分号前面
内联 style(1000) > id多看id(100)>类名多看类名(10)>标签多看标签(1)(都一样时 谁写后面听谁的)通配符权重为0 不计入
注:一般只有选择器直接选中才会用到权重计算
1、以color/font-/text-/line开头属性可继承
2、只要是后代就可继承
3、a标签文字颜色和下划线无法继承
4、h标签的文字大小无法继承