# 经典实现
# 居中布局
# 1.1 定位+移动
父元素包裹子元素,子元素居中
- 父元素:
position: relative
,任意宽高, - 子元素:
position: absolute
,平移50%父元素相对位置,返回50%自身位置
元素居中
Copy
# 1.2 定位+边距
- 父元素:
position: relative
,任意宽高, - 子元素:
position: absolute
,平移50%父元素相对位置,返回50%自身位置
注意: margin 需要是具体的数字,因为 margin 的百分比依然是父级的
元素居中
Copy
# 1.3 flex 居中
- 父元素
- 设置 flex 布局
- 设置项目居中排列
- 设置项目
注意: margin 需要是具体的数字,因为 margin 的百分比依然是父级的
元素居中
Copy
# 1.4 table 居中
- 使用
display: table
使 center 成为一个<table>
元素。 - 设置
height
和width
使元素填充其父元素内的可用空间。 - 使用
display: table-cell
使得子元素为一个<td>
元素。 - 在子元素上使用
text-align: center
和vertical-align: middle
使其水平和垂直居中。
Ps: 外部父级 ( .container) 必须具有固定的 width 和 height。
文字居中
Copy
# 1.5 absolute + margin auto
父元素:设置相对定位,不定宽高
子元素:
- 子元素定宽定高
- 子元素绝对定位 left:0;right:0;top:0;bottom:0; margin:auto;
注:子元素需要定宽高,否则会跟随父元素宽高
元素居中
Copy
# 1.6 absolute + calc
父元素包裹子元素,子元素居中
- 父元素:定义相对定位,任意宽高
- 子元素:
- 子元素定宽定高
- 子元素绝对定位 left:calc(50% - width/2px);top:calc(50% - height/2)
注:子元素需要定宽高,与 1.2 类似
元素居中
Copy
# 1.7 grid
利用 grid 使项目居中
- 使用
display: grid
创建网格布局。 - 用于
justify-content: center
将项目水平居中。 - 用于
align-items: center
将项目垂直居中。
居中的项目
Copy
# 三角形
原理:宽高都为 0 的正方形,设置边框颜色,当其中另外三边颜色为透明时,就会得到一个三角形
Copy
# 超出文本省略
# 4.1 单行文本溢出省略
{
white-space: nowrap; /*强制文本在一行内显示,不换行*/
overflow: hidden; /*超出部分隐藏*/
text-overflow: ellipsis; /*文本溢出时显示省略标记 */
}
注:需要设置 width 或者是 max-width
我是文本我是文本我是文本我是文本我是文本我是文本
Copy
# 4.2 多行文本溢出省略
{
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 3; /*想展示几行*/
overflow: hidden; /*超出部分隐藏*/
}
注:需要设置 width 或者是 max-width,只适用于 webkit 内核的浏览器
我是文本我是文本我是文本我是文本我是文本
我是文本我是文本我是文本我是文本我是文本
我是文本我是文本我是文本我是文本我是文本
Copy
# 翻转卡片
利用backface-visibility
属性,定义当元素不面向屏幕时是否可见。
- 正反面设置不同颜色和rotateY
- 设置hover翻转
Copy
# flex多列布局
space-between/space-around 最后一行无法左对齐
多列布局,如果最后一行没有满,无法左对齐的解决方式:
# 6.1 伪元素
1. 缺一个的时候,可以设置相同宽度的伪元素来占位
2. 缺好几个的时候,可以使用flex:auto,配合计算好的margin
1
2
3
4
Copy
# 6.2 从根本解决问题,margin计算好,不使用space-between
1
2
3
4
5
Copy
# 善用not选择器
有些情况下 所有 元素都需要一个样式,唯独 一个 不需要,这时候使用not选择器会很方便
单元格
单元格
单元格
单元格
单元格
单元格
单元格
Copy
# 一行代码将页面变成哀悼模式
在body上添加filter: grayscale(1);
即可将整个网站变为哀悼模式
多彩页面
Copy