CSS 基础
选择器
是一个标识,告诉浏览器如何选择要设置样式的元素。选择器分为基础选择器、复合选择器、伪类选择器、伪元素选择器、属性选择器、结构选择器、UI 选择器等
- 选择器列表
h1 {
color: blue;
}
.special {
color: blue;
}
h1,
.special {
color: blue;
}
当使用选择器列表时,如果任何一个选择器无效(存在语法错误),那么整条规则都会失效。
- 选择器种类
- 类型、类和 ID 选择器
h1 {
}
.box {
}
#unique {
}
- 标签属性选择器
a[title] {
}
a[href='https://example.com']
{
}
- 伪类与伪元素
a:hover {
}
p::first-line {
}
- 全局选择器
* {
}
- 后代选择器
body p {
}
- 子代关系选择器
article > p {
}
- 邻接兄弟选择器
选择紧邻<p>
元素之后的<img>
元素。
p + img {
}
- 通用兄弟
选择一个元素的兄弟元素,即使它们不直接相邻。
p ~ img
- 关系选择器
ul > li[class="a"] {
}
层叠、优先级与继承
层叠 同级别的规则应用到一个元素的时候,写在后面的就是实际使用的规则。
优先级 优先级高的规则会覆盖优先级低的规则。
继承 子元素会继承父元素的样式。不过一些特殊的是不能继承的,比如 width 1. inherit 继承父元素的值 2. initial 将属性重置为它的默认值 3. revert 重制为浏览器的默认样式 4. revert-layer 将应用于选定元素的属性值重制为在上一个层叠层中建立的值。 5. unset 将属性重置为自然值,也就是如果属性是自然继承那么就是 inherit,否则就是 initial。
all 撤销所有属性
blockquote {
background-color: orange;
border: 2px solid blue;
}
.fix-this {
all: unset;
}
<blockquote>
<p>This blockquote is styled</p>
</blockquote>
<blockquote class="fix-this">
<p>This blockquote is not styled</p>
</blockquote>
- 理解层叠 - 资源顺序:同权重的规则后面的规则会覆盖前面的规则 - 优先级:不同选择器优先级不同,权重高的会影响权重低的 - 重要程度 有三个因素会影响一条规则是否适用于一个元素
优先级
一个选择器的优先级可以说是由三个不同的值(或分量)相加,可以认为是百(ID)十(类)个(元素)------三位数的三个位数
- ID:选择器中包含 ID 选择器则百位得一分。
- 类:选择器中包含类选择器、属性选择器或者伪类则十位得一分
- 元素:选择器中包含元素、伪元素选择器则个位得一分
- 内联样式:则千位得一分
- !important:优先级最高,会覆盖掉普通规则的层叠
备注:通用选择器(*)、组合符(+、>、~、'')和调用优先级的选择器(:where())不会影响优先级。
(:not())和任意匹配(:is())伪类本身对优先级没有影响,但它的参数则会带来影响。参数中,对优先级算法有贡献的参数的优先级的最大值将作为该伪类选择器的优先级。
选择器 | ID | 类 | 元素 | 优先级 |
---|---|---|---|---|
h1 | 0 | 0 | 1 | 0-0-1 |
h1 + p::first-letter | 0 | 0 | 3 | 0-0-3 |
li > a[href*="en-US"] > .inline-warning | 0 | 2 | 2 | 0-2-2 |
#identifier | 0 | 0 | 1 | 1-0-0 |
button:not(#mainBtn, .cta) | 0 | 0 | 1 | 1-0-1 |
层叠层
盒模型
区块盒子与行内盒子
区块盒子(div、p):盒子会产生换行,可以设置宽高。内边距、外边距和边框会影响其他元素。不设置width,默认为auto,会根据内容撑开宽度。
行内盒子(span、i):不产生换行,widht和height无效。垂直方向内边距外边距和边框会被应用但是不回将
inline
状态的盒子推开。水平方向会被应用并且会把inline
状态的盒子推开。
注:display可以改变盒子的类型。
盒模型具体包括哪些
- 内容
- 内边距
- 边框
- 外边距
分类
- 标准盒模型:width和height指的是内容区域的宽度和高度。盒子的总宽度=width+左右padding+左右border
- IE盒模型(怪异盒模型):width和height指的是内容区域+padding+border的宽度和高度。盒子的总宽度=width
CSS值和单位
值的分类
- integer:整数,比如1024或-55
- number:数字,比如1.02或-30
- dimension:带单位的数字,比如30px、50em、60%
- percentage:百分比,比如50%
长度
最常见的就是 px
相对长度单位
em:相对本元素的字体大小,或者在用于font-size时相对于父元素的字体大小。rem相对于跟元素的字体大小
vh和vw:分别相对于视口的高度和宽度
百分比:相对于父级的宽度来设定。
数字:不透明度、颜色等
颜色
- 颜色名:red、blue、green等
- 十六进制:#ff0000、#f00等
- RGB:rgb(255, 0, 0)、rgba(255, 0, 0, 0.5)
- HSL:hsl(0, 100%, 50%)、hsla(0, 100%, 50%, 0.5)。色相、饱和度、亮度
样式化链接
- link:链接未被访问时的样式
- visited:链接被访问过后的样式
- hover:鼠标悬停在链接上时的样式
- active:链接被点击时的样式
web字体
- @font-face:使用自定义的字体
@font-face{
font-family: 'myFont';
src:url("myFont.ttf");
}
html{
font-family: 'myFont';
}
- 查找字体
- 免费的字体经销商:Font Squirre、dafont、Everything Fonts
- 在线字体服务:使用在线字体服务