总结垂直居中各方法优缺点和使用场景
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了总结垂直居中各方法优缺点和使用场景相关的知识,希望对你有一定的参考价值。
一、容器内
1 .Center-Container { 2 position: relative; 3 } 4 5 .Absolute-Center { 6 width: 50%; 7 height: 50%; 8 overflow: auto; 9 margin: auto; 10 position: absolute; 11 top: 0; left: 0; bottom: 0; right: 0; 12 }
二、负外边距
.is-Negative { width: 300px; height: 200px; padding: 20px; position: absolute; top: 50%; left: 50%; margin-left: -170px; /* (width + padding)/2 */ margin-top: -120px; /* (height + padding)/2 */ }
优点:
1. 良好的跨浏览器特性,兼容IE6-IE7。
2. 代码量少。
缺点:
1. 不能自适应。不支持百分比尺寸和min-/max-属性设置。
2. 内容可能溢出容器。
3. 边距大小与padding,和是否定义box-sizing: border-box有关,计算需要根据不同情况。
三、变形
.is-Transformed { width: 50%; margin: auto; position: absolute; top: 50%; left: 50%; -webkit-transform: translate(-50%,-50%); -ms-transform: translate(-50%,-50%); transform: translate(-50%,-50%); }
优点:
1. 内容可变高度
2. 代码量少
缺点:
1. IE8不支持
2. 属性需要写浏览器厂商前缀
3. 可能干扰其他transform效果
4. 某些情形下会出现文本或元素边界渲染模糊的现象
四、表格单元格
#wrapper {display:table;} #cell {display:table-cell; vertical-align:middle;}
优点:
1. 高度可变
2. 内容溢出会将父元素撑开。
3. 跨浏览器兼容性好。
缺点:
需要额外html标记
五、行内块元素
.Center-Container.is-Inline { text-align: center; overflow: auto; } .Center-Container.is-Inline:after, .is-Inline .Center-Block { display: inline-block; vertical-align: middle; } .Center-Container.is-Inline:after { content: ‘‘; height: 100%; margin-left: -0.25em; /* To offset spacing. May vary by font */ } .is-Inline .Center-Block { max-width: 99%; /* Prevents issues with long content causes the content block to be pushed to the top */ /* max-width: calc(100% - 0.25em) /* Only for IE9+ */ }
优点:
1. 高度可变
2. 内容溢出会将父元素撑开。
3. 支持跨浏览器,也适应于IE7。
缺点:
1.需要一个容器
2.水平居中依赖于margin-left: -0.25em;该尺寸对于不同的字体/字号需要调整。
3.内容块宽度不能超过容器的100% - 0.25em。
六、flex布局
.center-container{ display:flex; justify-content:center; align-item:center } .center-content{ width:50%; height:50% }
优点:
1. 高度宽度可变
缺点:
1.需要一个容器
2.ie7/8 不兼容
以上是关于总结垂直居中各方法优缺点和使用场景的主要内容,如果未能解决你的问题,请参考以下文章