垂直居中
2016-03-24 17:38
441 查看
display:table-cell
通过将父元素设置为display:table-cell,并添加vertical-align: middle,它的子元素就可以实现垂直居中。测试框架
<div id="wrap"> <div id="subwrap"> </div> </div>
div#wrap { vertical-align: middle; display: table-cell; border: 1px solid #FF0099; background-color: #FFCCFF; width: 760px; height: 400px; overflow: hidden; } div#subwrap { border: 1px solid #000; background-color: #fff; }
本方法对于单行文本/多行文本均有效
position:absolute
给子元素设置绝对定位,并将top设置为50%,然后margin-top设置为负的元素高度的一半测试框架
<div id="wrap"> <div id="subwrap"> </div> </div>
div#wrap { position:relative; border: 1px solid #FF0099; background-color: #FFCCFF; width: 760px; height: 400px; overflow: hidden; } div#subwrap { position:absolute; left:50%; top:50%; width:100px; height:100px; margin-top:-50px; margin-left:-50px; border: 1px solid #000; background-color: #fff; }
这个方法必须在已知子元素高度的情况下才可以用
line-height
把文字的line-height设为文字父容器的高度,适用于只有一行文字的情况。测试框架
<div id="wrap"> <div id="subwrap"> </div> </div>
div#wrap { position:relative; border: 1px solid #FF0099; background-color: #FFCCFF; width: 760px; height: 400px; overflow: hidden; } div#subwrap { line-height:400px; text-align:center; border: 1px solid #000; background-color: #fff; }
display:inline-block/inline
这种方法需要将父元素的font-size设置为一个合适的值,再结合vertical-align: middle来进行测试框架
<div id="wrap"> <div id="subwrap"> </div> </div>
div#wrap { border: 1px solid #FF0099; background-color: #FFCCFF; width: 760px; height: 400px; overflow: hidden; font-size:300px; } div#subwrap { vertical-align: middle; display:inline-block; border: 1px solid #000; background-color: #fff; width: 100px; height: 100px; }
因为涉及到父元素font-size的更改,所以要注意可能造成的影响
另一个:
<div id="demo"> <p>这是一个终极实现的水平垂直居中实例</p> <!--[if lt IE 8]><span></span><![endif]--> </div> #demo{ height:100px; text-align:center; font-size:0; } #demo:after,#demo span{ display:inline-block; *display:inline; *zoom:1; width:0; height:100%; vertical-align:middle; } #demo:after{ content:''; } #demo p{ display:inline-block; *display:inline; *zoom:1; vertical-align:middle; font-size:16px; }
背景图片居中
元素本身确定高宽拉伸至所需要的大小,然后给这个元素一个background- position:center center的属性。background-image设置为要呈现的图片。测试框架
<div id="wrap"> </div>
div#wrap { width: 760px; height: 400px; background:url(0.png) no-repeat center; border:solid 1px blue; }
flex布局
父元素设置为display:flex和align-items:center测试框架
<div id="wrap"> <div id="subwrap"> </div> </div>
div#wrap { display:flex; align-items:center; border: 1px solid #FF0099; background-color: #FFCCFF; width: 760px; height: 400px; } div#subwrap { border: 1px solid #000; background-color: #fff; width: 100px; height: 100px; }
相关文章推荐
- Web布局连载——两栏固定布局(五)
- [div+css]晒晒最新制作专题推广页模板
- 盒子模型
- CSS选择器
- CSS样式优先权
- [css] line-height 百分比单位和数值单位的区别
- Apple官网研究之使用Justify布局导航
- 设计更快的网页(三):字体和 CSS 调整
- 纯CSS制作的新闻网站中的文章列表
- 10条影响CSS渲染速度的写法与使用建议第1/3页
- BS项目中的CSS架构_仅加载自己需要的CSS
- 很不错的 CSS Hack 又学了一招
- 发一个css比较清爽的写法
- CSS expression控制图片自动缩放效果代码[兼容 IE,Firefox]
- css布局网页水平居中常用方法
- CSS经典技巧十则第1/2页
- css 兼容性问题this.style.cursor=''hand''
- IE6不能正常解析CSS文件问题的解决方法及原因分析
- 欲练CSS ,必先解决IE的一些细节分析
- CSS文字截取功能实现代码