未知宽高的元素水平垂直居中

在学习CSS布局的过程中经常会碰到需要将元素垂直水平居中的情况,
通常的做法是通过设置一定的外边距,或者通过定位和负外边距来完成,


例如:
一,设置外边距
<pre>
<style>
.box1{
width: 800px;
height: 800px;
}
.box2{
width: 400px;
height: 400px;
margin: 200px 0 0 200px;
}
</style>
<body>
<div class="div1">
<div class="div2"></div>
</div>
</body>
</pre>
二,居中定位
<pre>
<style>
.box1{
width: 600px;
height: 600px;
postion: relative;
}
.box2{
width: 300px;
height: 300px;
position: absolute;
top: 50%;
left: 50%;
margin: -150px 0 0 -150px;
}
<body>
<div class="div1">
<div class="div2"></div>
</div>
</body>
</pre>
但是如果需要居中的元素的宽和高无法预先知道,以上的两种方法就无法使用了,
因此我们需要另辟蹊径,

大致有以下三种方式可以酌情使用;

方法一: 弹性盒子,通过将父盒子的display属性设置为flex,并将子盒子的margin设置为auto;这种方法的好处是代码量少,而且使用弹性盒子布局较为便捷;缺点是需要支持CSS3;

<pre><style>
.div1{
width: 100%;
height: 100%;
display: flex;
}
.div2{
width: 300px;
height: 300px;
background: black;
margin: auto;
}
</style>
<body>
<div class="div1">
<span class="div2"></span>
</div>
</body>
</pre>
方法二:使用表格;在这里可以直接使用table标签,或者可以将父盒子转换成表格单元格,需要居中的元素转换为行内块元素,单元格内可以通过vertical-align属性和text-align属性将元素垂直水平居中.(或者也可以不将元素转换成行内块元素,直接将元素的外边距设置为(0,auto)来水平居中).
这种方式的优点是兼容性强,但是需要添加较多的层级,使结构变得复杂;
<pre>
<style>
.div1{
height: 100%;
width: 100%;
position: absolute;
text-align: center;
display: table;
}
.div2{
display: table-cell;
vertical-align: middle;
}
.div3{
display: inline-block;
width: 100px;
height: 100px;
background: rgb(233,233,233);
}
</style>
<body>
<div class="div1">
<div class="div2">
<div class="div3">
</div>
</div>
</div>

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 14,693评论 1 92
  • 收听音频,戳链接,旧号itclan已暂停使用,欢迎关注微信itclanCoder公众号可收听更多音频 前言 关于网...
    itclanCoder阅读 12,540评论 3 30
  • •前端面试题汇总 一、HTML和CSS 21 你做的页面在哪些流览器测试过?这些浏览器的内核分别是什么? ...
    Simon_s阅读 6,637评论 0 8
  • 本文主要是起笔记的作用,内容来自慕课网. 认识CSS样式 CSS全称为“层叠样式表 (Cascading Styl...
    0o冻僵的企鹅o0阅读 7,528评论 0 30
  • 信息来源渠道多广 知识技能更新快捷 老师和父母不再是能力和经验和信息的权威,自然得不到孩子们的尊重和愚信了,说到底...
    子非鱼lily阅读 1,567评论 0 0

友情链接更多精彩内容