## 水平居中有哪些方式
**考察点**
1. 水平居中的方式
2. 各种居中方式的优缺点
**回答**
1. css中的`text-align:center`可以设置文本和行内元素居中。缺点是:内容参差不齐,排版比较难看,且子元素默认也是水平居中。
2. css中同时设置`margin-left:auto` 和 `margin-right: auto`。缺点是: `margin-left`和`margin-right`被占用,无法设置。
3. css设置`margin-left:50%`, `transform: translateX(-50%)`。 缺点是:元素宽度为单数像素时,在某些浏览器下会模糊。
4. 对于`position: absolute`或者`position:fixed`设置`left`和`right`的值相等。缺点是:只能适用于非文档流元素。
5. 对于`position: absolute`或者`position:fixed`设置`left:50%`。 `margin-left`设置为元素宽度的一半的负数, 或者`transform: translateX(-50%)`。 `margin-left`的缺点是:需要知道元素的具体宽度,不利于兼容大小不一致的屏幕。`transform`的缺点是:元素宽度为单数像素时,在某些浏览器下会模糊。另外,同4一样,只适用于非文档流
6. 上一层元素的css设置`display:flex`, `justify-content: center`. 缺点是:当前元素的兄弟元素会与当前元素同一行排列。
## 如何垂直居中
**考察点**
1. 垂直居中的方式
2. 各种垂直居中方式的优缺点
**回答**
1. 如果内容只有一行, 那么可以设置`line-height`的高度和`height`的高度一致。 这样的缺点是:无法使多行文字垂直居中。
2. 对于`position: absolute`或者`position:fixed`设置`top`和`bottom`的值相等。缺点是:只能适用于非文档流元素。
3. 对于`position: absolute`或者`position:fixed`设置`top:50%`。 `margin-top`设置为元素高度的一半的负数, 或者`transform: translateY(-50%)`。 `margin-top`的缺点是:需要知道元素的具体高度度,不利于兼容大小不一致的屏幕。`transform`的缺点是:元素高度为单数像素时,在某些浏览器下文字会模糊。另外,同2一样,只适用于非文档流
4. `position:relative`, `margin-top`设置为元素高度的一半的负数, 或者`transform: translateY(-50%)`。 `margin-top`的缺点是:需要知道元素的具体高度度,不利于兼容大小不一致的屏幕。`transform`的缺点是:元素高度为单数像素时,在某些浏览器下文字会模糊。另外,由于`relative`的性质,元素原来位置处会出现空白,无法被其他元素使用,同时又有可能盖住其他元素。
5. 使用`margin-top: 50%`, `tranform: translateY(-50%)`, 缺点是:元素高度为单数像素时,在某些浏览器下文字会模糊。
6. 上一层元素设置`display:flex`, `align-items: center`. 缺点是: 当前元素
- 前言
- 基础
- HTML
- 标签语义化
- 行标签和快标签
- 常用标签
- 页面结构
- CSS
- 选择器
- 盒模型
- 定位
- 单位
- 居中
- 布局
- 扩展:弹性布局详解
- 扩展:多列布局详解
- 扩展:网格布局详解
- 扩展:媒体查询
- 清除浮动
- 动画
- 自适应(响应式)
- 兼容性
- 背景
- 文本
- 转化器
- JavaScript基础
- 闭包
- 作用域
- 继承
- 事件
- DOM
- this
- 网络通信
- ajax
- 跨域
- HTTP状态码
- HTTP请求响应头
- HTTP 2.0
- 请求方法
- Cookie
- 常见框架
- Bootstrap
- jQuery
- Vue
- React
- 性能优化
- 常见安全问题
- 进阶
- 工程化
- 前端架构
- 同构
- 高级
- 前端团队管理
- 技术/框架选型
- 持续集成/持续交付
- 经典面试题