CSS 的一些进阶小技巧
进阶CSS
背景图片
1 | body { |
或者简写
顺序为 color, image, repeat, attachment, position
1 | body { |
box-sizing: border-box;
使内边距+border+元素 = width or height
本来width设置之后,再加padding是会增加宽度的
设置高度和宽度范围
max-height: 1600px;
min-height: 500px;
max-width, min-width;
轮廓:outline
跟 border 差不多,但是它不算作是元素的宽高
outline: red solid 3px;
outline-offset: 20px; 轮廓与元素边框之间的空间;
图片与文字对齐
vertical-align: bottom; top, middle
文本
转换
text-transform: uppercase; lowercase, capitalize
间距
text-indent: 2em; 第一行的缩进
letter-spacing: 3px; 字母与字母
word-spacing: 5px; 单词与单词
white-space: nowrap; 默认是有换行
阴影
text-shadow: 2px 2px 5px red; 水平阴影,垂直阴影,模糊值,颜色
字体
在 CSS 中,有五个通用字体族:
- 衬线字体(Serif)- 在每个字母的边缘都有一个小的笔触。它们营造出一种形式感和优雅感。
- 无衬线字体(Sans-serif)- 字体线条简洁(没有小笔画)。它们营造出现代而简约的外观。
- 等宽字体(Monospace)- 这里所有字母都有相同的固定宽度。它们创造出机械式的外观。
- 草书字体(Cursive)- 模仿了人类的笔迹。
- 幻想字体(Fantasy)- 是装饰性/俏皮的字体。
1 | font-family: "Times New Roman", Times, serif; |
列表
list-style-type: upper-roman; lower-alpha
list-style-image: url(‘pig.gif’);
不展现元素的方法
display: none; 元素彻底消失
visibility: hidden; 不可见,但依旧占位
position: sticky
1 | <style> |
其作用是当 给定的 sticky 标签会像正常的位置排列,不会有任何变化,但是当滚动屏幕时,sticky 标签到达给定的 top 距离时,就不会再滚了, 定在那儿,相当于 relative + fixed
flex 双居中的方法
1 | .center { |
伪类
a:hover
必须在 CSS 定义中的a:link
和a:visited
之后,才能生效!a:active
必须在 CSS 定义中的a:hover
之后才能生效!伪类名称对大小写不敏感。
1 | div:hover p { |
图像精灵
1 | #home { |
渐变
1 | #grad { |
2D 转换
进行位移
1 | div { |
进行旋转
1 | div { |
等比缩放
1 | div { |
倾斜
1 | div { |
旋转点
1 | div { |
3D 转换
1 | #myDiv { |
属性 | 描述 |
---|---|
transform | 向元素应用 2D 或 3D 转换。 |
transform-origin | 允许你改变被转换元素的位置。 |
transform-style | 规定被嵌套元素如何在 3D 空间中显示。 |
perspective | 规定 3D 元素的透视效果。 |
perspective-origin | 规定 3D 元素的底部位置。 |
backface-visibility | 定义元素在不面对屏幕时是否可见。 |
过渡
时间
1 | div { |
过渡速度曲线
transition-timing-function
- ease - 默认,慢快慢
- linear - 匀速
- ease-in -慢快快
- ease-out - 快快慢
- ease-in-out - 慢快慢
过渡 + 转换
1 | div { |
动画
@keyframes 规则
1 | /* 动画代码 */ |
1 | /* 动画代码 */ |
简写
1 | div { |
1 | div { |
图像滤镜
filter
图像适应容器
object-fit
CSS 变量
在 root 里声明变量代表全局变量,也可以在选择器里面声明,局部变量
格式是 两个破折号+名字:变量
1 | :root { |
flex 布局
在父容器加上 display: flex;
后,就可以使用 flex 的属性了
flex-direction (父元素属性)
flex-direction 属性定义容器要在哪个方向上堆叠 flex 项目。
其值有:row, column, column-reverse, row-reverse
flex-wrap(父元素属性)
flex-wrap 属性规定是否应该对 flex 项目换行。
其值有:nowrap, wrap, wrap-reverse
上面两个可以简写为
flex-flow: row wrap;
justify-content(父元素属性)
justify-content 属性用于对齐 flex 项目。
其值有
- center 中心对齐
- flex-start / end 开头 / 末尾 对齐
- space-around 用 margin 均分剩余空间
- space-between 两边靠边,用 margin 均分剩余空间
align-items(父元素属性)
align-items 属性用于垂直对齐 flex 项目。
其值有
- center
- stretch 拉伸填充容器(默认)
- flex-start / end
align-content(父元素属性)
align-content 属性用于对齐弹性线。
同 justify-content,只是方向变了而已
order(子元素属性)
其值默认为 0,可以改成 数字
flex-grow(子元素属性)
flex-grow 属性规定某个 flex 项目相对于其余 flex 项目将增长多少。
默认为 0 ,可以改成 数字
flex-shrink(子元素属性)
flex-shrink 属性规定某个 flex 项目相对于其余 flex 项目将收缩多少。
默认为 1 ,可以改成 数字
flex-basis(子元素属性)
flex-basis 属性规定 flex 项目的初始长度。
flex-basis: 200px;
flex(子元素属性)
flex 属性是 flex-grow、flex-shrink 和 flex-basis 属性的简写属性。
align-self(子元素属性)
align-self 属性规定弹性容器内所选项目的对齐方式。
align-self 属性将覆盖容器的 align-items 属性所设置的默认对齐方式。
媒体查询
1 | @media screen and (min-width: 480px) { |
1 | @media screen and (max-width: 900px) and (min-width: 600px) { |