如何让元素居中

水平垂直居中问题,在css中margin: 0 auto;可以实现水平居中,但是在垂直居中方面一直没有特定的属性,直到css3的出现,有了弹性盒,可以通过设置弹性盒直接设置居中位置,做浏览器兼容的话可以通过使用一些hack处理负margin方法,table-cell方法,位移方法。

1.负margin的方法

css代码:

.box{
width: 800px;
height: 600px;
border: 3px solid #000;
position: relative;
}
img{
width: 320px;
height: 438px;
position: absolute;
top: 50%;
left: 50%;
margin-left: -160px;
margin-top: -219px;
}

html代码:

<div class="box">
    <img src="../img/mmexport1493913001859.jpg" alt="">
</div>

效果如下


微信截图_20190715210436.png

这里,我们首先用top:50%和left:50%让img的坐标原点(左上角)移动到box的中心,然后再利用负margin让它往左偏移自身宽的一半,再往上偏移自身高的一半,这样img的中心点就跟box的中心点对齐了。

2.table-cell方法

css代码:

.box{
width: 800px;
height: 600px;
border: 3px solid #000;
display: table-cell;
vertical-align: middle;
text-align: center;
}
img{
vertical-align: middle;
}

html代码同上

通过将盒子转换为table元素,table元素本身是可以通过属性来控制位置,div上面的vertical-align: middle是控制垂直方向上的居中的,而text-align: center是控制水平方向的

3.弹性盒子法

css代码

.box{
width: 800px;
height: 600px;
border: 3px solid #000;
display: flex;
align-items: center;
justify-content: center;

}

html代码同上
align-items控制垂直方向的居中,justify-content控制水平方向的居中。这是CSS3的新方法

4.位移方法
位移方法和margin定位方法一样,只不过吧margin改成了位移不需要计算一半是多少,直接transform:translate(-50%,--50%)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,865评论 1 92
  • H5移动端知识点总结 阅读目录 移动开发基本知识点 calc基本用法 box-sizing的理解及使用 理解dis...
    Mx勇阅读 4,703评论 0 26
  • 移动开发基本知识点 一.使用rem作为单位 html { font-size: 100px; } @media(m...
    横冲直撞666阅读 3,585评论 0 6
  • CSS 是什么 css(Cascading Style Sheets),层叠样式表,选择器{属性:值;属性:值}h...
    崔敏嫣阅读 1,520评论 0 5
  • 这世界很大,很美,也很可怕。 你永远不知道未来会怎么样? 从自然来,入红尘中,心系自然,又怎么知道向什么地方前行。...
    阑珊处看下雨阅读 204评论 0 1