Css3 实现居中的简单方法

2014-09-14 14:58:57 +08:00
 thonatos
实现Div居中的方法比较多,
但浏览器兼容问题使得实现方式较为多变,这里分享一种最近使用的方法。

Html代码:

<div class="box">
<div class="goods">Goods</div>
</div>

CSS代码:

<style>

.box{
position:relative;
width: 200px;
height: 100px;
background-color: yellow;
}

.goods{

position:absolute;
top:50%;
left:50%;

-ms-transform: translate(-50%,-50%); /* IE 9 */
-webkit-transform: translate(-50%,-50%); /* Safari and Chrome */
-o-transform: translate(-50%,-50%); /* Opera */
-moz-transform: translate(-50%,-50%); /* Firefox */
transform: translate(-50%,-50%);
background-color: red;
}
</style>

至于使用table-cell之类的方法,没意思,不多说了。
8247 次点击
所在节点    分享发现
18 条回复
loginv2
2014-09-14 15:01:57 +08:00
LZ的方法居中的div必须有固定高度,有没有自适应的方案
P233
2014-09-14 15:06:47 +08:00
赞,传统方法一般定宽定高才能彻底居中,这个办法不限制
Dzinlife
2014-09-14 15:11:32 +08:00
没这么复杂
相对定位用 margin:auto;
绝对定位用 top:0;bottom:0;left:0;right:0;margin:auto;
thonatos
2014-09-14 15:16:52 +08:00
@Dzinlife

只是一种思路而已,也没有限制一定要固定高度。
margin: auto; 使用于Box本身,而这种的写法,是通用的,对于images等都可用。
thonatos
2014-09-14 15:21:51 +08:00
@loginv2

goods 相对于box做绝对定位,通过向下偏移并使用css3的transform回偏实现居中。

box 的话设置一个min-height即可,width,设置成auto或者100%好了。
zjnewcity
2014-09-14 15:42:20 +08:00
太复杂了吧。table,table-cell通吃所有啊,也就几行代码
spinpx
2014-09-14 16:21:38 +08:00
table table-cell +1
thonatos
2014-09-14 16:24:42 +08:00
@zjnewcity

复杂嘛?只不过多写了几行兼容浏览器的内容,貌似也就position和transform两条~
patr0nus
2014-09-14 16:25:59 +08:00
既然都 CSS3 了,直接上 flexbox 嘛
thonatos
2014-09-14 16:31:42 +08:00
@patr0nus

嗯嗯,谢谢~
fen
2014-09-14 16:46:49 +08:00
LZ 你这种会出问题的,当 goods 高度超过 box 高度时,边界就会溢出,当 goods 超过屏幕高度时,内容就被屏幕截断了
thonatos
2014-09-14 16:52:39 +08:00
@fen

谢谢提醒,现在写的很多样式都是百分比高度,很少出现那种状况啦~

3ks 。
yangkeao
2014-09-14 17:54:52 +08:00
伸缩盒布局垂直居中简单些。。
jakwings
2014-09-14 18:50:50 +08:00
hanai
2014-09-14 19:20:10 +08:00
你用 transform 就不考虑兼容问题?负 margin 啊
Niphor
2014-09-15 09:35:34 +08:00
写CSS3 那就用flexbox
说CSS2 那就没啥万金油
xinple
2014-09-15 14:25:05 +08:00
http://css-tricks.com/centering-css-complete-guide/
这里有比较全的居中解决方案

css3的话flexbox简单好用
.parent {
display: flex;
flex-direction: column;
justify-content: center;
}
scarlex
2014-09-15 21:20:45 +08:00
flexbox大法好,居中超简单

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/133360

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX