值和单位
em
- 在 font-size 中使用是相对于父元素的 font-size 大小,比如父元素 font-size: 16px,当给子元素指定 font-size: 2em 的时候,经过计算后它的字体大小会是 32px;
- 在其他属性中使用是相对于自身的字体大小,如 width/height/padding/margin 等;
em 在计算的时候是会层层计算的,比如:
1 | <div> |
wm、vh
- 1vw = 视口宽度均分成 100 份中 1 份的长度;100vw = window.innerWidth
- 1vh = 视口高度均分成 100 份中 1 份的长度;100vh = window.innerHeight
vmin、vmax
- vmin:取 vw 和 vh 中值较小的;
- vmax:取 vw 和 vh 中值较大的;
颜色体系
transparent 关键字
transparent 关键字表示一个完全透明的颜色,即该颜色看上去将是背景色。从技术上说,它是带有 alpha 通道为最小值的黑色,是 rgba(0,0,0,0) 的简写。
实现三角形
1 | div { |
增大点击区域
常常在移动端的时候点击的按钮的区域特别小,但是由于现实效果又不太好把它做大,所以常用的一个手段就是通过透明的边框来增大按钮的点击区域
1 | .btn { |
清除浮动
BFC 清除浮动
1 | .parent { |
通过 clear 清除浮动
长文本处理
超出部分换行
1 | overflow-wrap:break-word; |
字符超出位置使用连字符
1 | hyphens: auto |
单行文本超出省略
1 | white-space: nowrap; |
多行文本超出省略
1 | overflow:hidden; |
水平垂直居中
单行的文本、inline 或 inline-block 元素
水平居中
1 | text-align: center |
垂直居中
- 通过设置上下内边距一致达到垂直居中的效果
1 | padding-top: 10px; |
- 通过设置
height
和line-height
一致达到垂直居中
1 | height: 100px; |
固定宽高的块级盒子
- absolute + 负 margin
- absolute + margin auto
- absolute + calc
不固定宽高的块级盒子
absolute + transform
1
2
3
4
5
6
7
8
9.parent {
position:relative;
}
.child {
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
}line-height + vertical-align
1 | .parent{ |
- writing-mode
1 | .parent{ |
- table-cell
1 | .parent { |
- flex
1 | .parent { |
- grid
1 | .parent { |
常用布局
两栏布局
- float + overflow(BFC 原理)
1 | aside { |
- float + margin
1 | aside { |
- flex
1 | .layout { |
- grid
1 | .layout { |
三栏布局(两侧栏定宽主栏自适应)
- flex
1 | <layout> |
- grid
1 | .layout{ |
三行布局
- flex
- grid
flex
父容器
justify-content:定义如何沿着主轴方向排列子容器
flex-start: 起始端对齐
flex-end: 末尾端对齐
center: 居中对齐
space-around:子容器沿主轴均匀分布 位于首尾末端的子容器到父容器的距离是子容器间距的一半
space-between:子容器沿主轴均匀分布 位于首位两端的子容器与父容器相切
align-items:设置子元素如何沿交叉轴排列
flex-satrt:起始端对齐
flex-end:末尾段对齐
center:居中对齐
baseline:基线对齐 这里的
baseline
默认是值首行文字 即first baseline
所有子容器向基线对齐 交 叉轴起点到元素基线距离最大的子容器会将交叉轴起始端相切以确定基线stretch:子容器沿交叉方向的尺寸拉伸至与父容器一致
子容器
每个子容器也可以单独定义沿交叉轴排列的方式,此属性的可选值与父容器 align-items
属性完全一致,如果两者同时设置则以子容器的 align-self
属性为准。
flex-start:起始端对齐
flex-end:末尾段对齐
center:居中对齐
baseline:基线对齐
stretch:拉伸对齐
轴
jusitify-content
决定子容器沿主轴排列方式 align-items 决定子容器沿交叉轴的排列方向 flex-dirextion
决定主轴的方向
主轴的起始端由flex-start
表示 末尾以flex-end
表示
向右:flex-direction: row
向下:flex-direction: column
向左:flex-direction: row-reverse
向上:flex-direction: column-reverse
flex 进阶概念
- 设置换行方式: flex-wrap
nowrap:不换行
wrap:换行
wrap-reverse:逆序换行
- 轴向与换行组合设置:flex-flow
- 多行沿交叉轴对齐:
align-content
flex-start:起始端对齐
flex-end:末尾端对齐
center:居中对齐
space-around:等边距均匀分布
space-between:等间距均匀分布
strench:拉伸对齐
Grid
display 属性
通过声明display:grid
该容器是一个块级元素 display: inline-grid
则容器元素为行内元素
grid-template-columns 属性和 grid-template-rows 属性
grid-template-columns
属性设置列宽,grid-template-rows
属性设置行高
1 | .wrapper { |
auto-fill 关键字:表示自动填充 让一行或者一列中尽可能地容纳更多的单元格
1 | grid-template-columns: repeat(auto-fill, 200px); |
fr 关键字: fr
单位代表网格容器中可用空间的一等份
1 | grid-template-columns: 200px 1fr 2fr;//表示第一个列宽设置为 200px,后面剩余的宽度分为两部分,宽度分别为剩余宽度的 1/3 和 2/3。 |
minmax()函数:产生一个范围 表示长度在这个范围之中都可以应用到网格项目中 接收两个参数表示最大值和最小值
1 | grid-template-columns: 1fr 1fr minmax(300px, 2fr);//,第三个列宽最少也是要 300px,但是最大不能大于第一第二列宽的两倍 |
auto 关键字:由浏览器决定长度
1 | grid-template-columns: 100px auto 100px;//第一列和第三列为100px 中间由浏览器长度决定 |
grid-row-gap 属性、grid-column-gap 属性以及 grid-gap 属性
grid-row-gap
属性、grid-column-gap
属性分别设置行间距和列间距。grid-gap
属性是两者的简写形式。
1 | grid-row-gap: 10px;//行间距是10px |
grid-template-areas 属性
rid-template-areas
属性用于定义区域,一个区域由一个或者多个单元格组成
一般这个属性跟网格元素的 grid-area
一起使用 grid-area
属性指定项目放在哪一个区域
1 | .wrapper { |
grid-auto-flow 属性
grid-auto-flow
属性控制着自动布局算法怎样运作,精确指定在网格中被自动布局的元素怎样排列。默认的放置顺序是”先行后列”,即先填满第一行,再开始放入第二行
1 | grid-auto-flow: row; |
justify-items 属性、align-items 属性以及 place-items 属性
justify-items
属性设置单元格内容的水平位置(左中右),align-items
属性设置单元格的垂直位置(上中下)
1 | .container { |
justify-content 属性、align-content 属性以及 place-content 属性
justify-content
属性是整个内容区域在容器里面的水平位置(左中右),align-content
属性是整个内容区域的垂直位置(上中下)
1 | .container { |
space-around - 每个项目两侧的间隔相等。所以,项目之间的间隔比项目与容器边框的间隔大一倍
space-between - 项目与项目的间隔相等,项目与容器边框之间没有间隔
space-evenly - 项目与项目的间隔相等,项目与容器边框之间也是同样长度的间隔
stretch - 项目大小没有指定时,拉伸占据整个网格容器
各种简写形式
Border-radius
1 | border-radius: 1em 2em 3em 4em;//top-left、 top-right、 bottom-right 、bottom-left |
Background
1 | background: #000 url(images/bg.gif) no-repeat top right;//color-image-repeat-position |
Font
1 | font: italic bold .8em/1.2 Arial, sans-serif;//style-weight-size-height-family |
Border
1 | border: 1px solid #000;//wdth-style-color |
Margin
和Padding
1 | margin: 10px 5px 10px 5px; |
all
1 | initial 该关键字代表该元素或其父元素的所有属性至初始值 |