#### **如何实现一个元素的垂直水平居中**
**第一种方法:定位加上margin**
```
div.box{
weight:200px;
height:400px;
<!--把元素变成定位元素-->
position:absolute;
<!--设置元素的定位位置,距离上、左都为50%-->
left:50%;
top:50%;
<!--设置元素的左外边距、上外边距为宽高的负1/2-->
margin-left:-100px;
margin-top:-200px;
}
```
* 兼容性好;缺点:必须知道元素的宽高
-------------
#### **第二种方法:定位加上transform**
```
div.box{
weight:200px;
height:400px;
<!--把元素变成定位元素-->
position:absolute;
<!--设置元素的定位位置,距离上、左都为50%-->
left:50%;
top:50%;
<!--设置元素的相对于自身的偏移度为负50%(也就是元素自身尺寸的一半)-->
transform:translate(-50%,-50%);
}
```
* 这是css3里的样式;缺点:兼容性不好,只支持IE9+的浏览器
---------------
#### **第三种方法:定位加上margin:auto**
```
div.box{
weight:200px;
height:400px;
<!--把元素变成定位元素-->
position:absolute;
<!--设置元素的定位位置,距离上、下、左、右都为0-->
left:0;
right:0;
top:0;
bottom:0;
<!--设置元素的margin样式值为 auto-->
margin:auto;
}
```
* 兼容性较好,缺点:不支持IE7以下的浏览器
*****
#### **第四种方法:改变子元素为行内块元素**
场景: 一个块状元素A内 有若干个块状元素B,要达到的效果是 ,所有块状元素B 在 元素A 内水平居中显示。
```
<div class="A">
<div class="B"></div>
<div class="B"></div>
<div class="B"></div>
</div>
```
首先,我们要设置元素A的大小为500px,设置背景色为green方便查看
```
.A{
width:500px;
backgrond-color:green;
}
```
然后, 设置所有元素B 的宽度为100px,高度为100px,外边据都为5px,背景色为#000方便查看
```
.B{
width:100px;
height:100px;
magin:5PX;
backgrond-color:green;
}
```
我们要做的就是,先把所有元素B设置为行内块元素,让他们都排成一行, display:inline-block;
最后就是给父容器加一个text-align:center的样式。
#### **第五种方法:flex布局**
给父元素样式:
```
.parent{
justify-content: center;
align-items: center;
}
```
#### **第六种方法:grid布局**
给父元素样式:
```
.parent{
justify-items: center;
align-items: center;
}
```
#### **第七种方法:table布局**
```
.parent{
display: table-cell;
vertical-align: middle;
text-align: center;
}
```
- 面试自我介绍
- 面试常规题
- HTML,CSS
- 1.动画animation有哪些属性及其基本使用
- 2.transform有哪些属性及其基本使用
- 3.::before 和 :after中双冒号和单冒号 有什么区别
- 4. 如何实现一个元素的垂直水平居中
- 5. position的值relative和absolute定位原点是?
- 6. 用纯CSS创建一个三角形的原理是什么?
- 7. title与h1的区别、b与strong的区别、i与em的区别?
- 8. 使用 CSS 预处理器吗?喜欢那个?
- 9. 如果需要手动写动画,你认为最小时间间隔是多久,为什么?
- 10. 对HTML5的了解
- 11. img与文本之间的留白
- 12. 给唯一子元素margin-top,父元素跟随移动
- 13. 什么是重构和架构
- 14. css选择器的优先级别
- JavaScript
- 1. js变量声明提升
- 2.数组的方法有哪些?这些方法中不改变原数组的有哪些?
- 3. 理解undefined 和 null 区别
- 4. http与https的区别
- 5.https的原理及其局限性
- 6. let/const/var的区别
- 7. JS的内存机制与垃圾回收机制
- 8. 值类型和引用类型的区别
- 9. document.writer和innerHTML
- 10. document.ready和window.onload的区别
- 11. js有几种方法创建一个对象
- 12. 什么是面向对象?其三大特性是什么?
- 13. 数组遍历的方法
- 14. js字符串反转
- 15. 类型转换
- 1. 如何JSON对象转为字符串
- 2. 字符串转化为数字
- 3. 数组与字符串之间的相互转换
- 16. 深拷贝和浅拷贝的区别
- 17. DOM的加载顺序
- 18. call、apply、bind的区别
- 19. ES5和ES6中类的实现
- 10. new操作符的作用
- 21. 事件冒泡和事件捕获
- 22. 同步和异步
- 23. this关键字怎么理解
- 浏览器以及服务端
- 1. 前端开发有哪些优化问题
- 2. AJAX请求总共有多少种CALLBACK
- 3. 输入URL到看到页面发生的全过程
- 4. CSS和JS的位置会影响页面效率
- 5. 前端页面有哪三层
- 6. 说一下浏览器的缓存机制
- 7. 对web标准及w3c的了解和认识
- 8. 什么是路由
- 9. 状态码
- 10. 浏览器内核
- 11. MVC和MVVM的区别
- 12. cookie、session的区别
- 算法
- 1. 如何判断一个对象是否为数组
- 2. 数组去重的方法
- 3. 数组排序
- 4. 数组去重
- 5. 反转数组
- 6. 数组复制
- 7. 取偶数
- 8. 字符串去重
- 全局性问题
- 1. 谈谈对前端模块化的理解
- 2. 移动布局的单位rem,vw,rpx等
- 3. css 动画和 js 动画的差异
- 4. 谈谈对ES6的理解
- 网络数据请求
- 1. 原生Ajax请求
- 2. jQuery-Ajax请求
- 3. Vue-Ajax请求
- 4. React-Ajax请求
- vue和react
- 1. vuex的工作流
- 2. redux工作流