【css】居中方案

html-css010

【css】居中方案,第1张

前言:根据最近学习的课程,简单总结一下学习到的css左右布局以及居中方案。后期学习深入之后再回来进行css居中的完整总结。

给所有子元素添加 float: left ,给父元素加 clearfix 类,清除浮动

html:

css:

将内联元素外部的块级元素的 text-align 设置为 center ,即可实现内联元素( inline 、 inline-block )的水平居中。

演示

将固定宽度的块级元素的 margin-left 和 margin-right 设置为 auto ,即可实现块级元素的水平居中。

演示

将每个块级元素的 display 设置为 inline-block ,然后将它们的父容器的 text-align 设置为 center ,即可使多个块级元素水平居中。

演示

设置内联元素的行高( line-heigt )和内联元素的父元素的高度( height )相等,且内联元素的字体大小远小于行高,即可使内联元素垂直居中。

演示

通过绝对定位元素距离顶部50%,并设置margin-top向上偏移元素高度的一半,即可实现垂直居中。

演示

借助CSS3中的transform属性向Y轴反向偏移50%的方法实现垂直居中

演示

水平居中:

1、单独文字垂直居中只需要设置CSS样式line-height属性即可。

2、文字与图片同排,在设置div高度同时再对此css样式的图片“img”样式设置vertical-align:middle垂直居中属性,如.yangshi img{vertical-align:middle} 。

3 不确定宽度的块级元素设置水平居中的方法:

(1)、是使用table作为容器的方法来实现。当然不大推荐使用这种方法,因为添加了无意义的标签。介绍一下。Table标签本身并不是块级元素,当不设置table的宽度的话,里面的宽度是由他内部元素的宽度撑起来的。但即使没有设置table的宽度,直接设置table的外边距margin:0 auto就可以实现水平居中了!这样就可以通过设置table水平居中,间接使里面的内容居中。

(2)、相对于用table的方法的好处是不用增加无语义标签,简化标签嵌套深度。这个思路是这样的,通过改变块级元素的display属性值为inline类型,然后设置text-align:center来实现居中。这种方法也有一定不妥之处就是把块级元素改为行内元素后,行内元素比块元素少了一些功能。比如说设定长宽值等,在项目运用中可能会有一些限制,可以自行选择。

(3)、通过给父元素设置浮动float,再设置父元素的position属性为relative和left:50%子元素设置position:relative和left:-50%来实现水平居中。这个好处是可以保留块级元素仍然是以display:block的形式显示,不会添加无意义的标签,不添加嵌套深度。确点是设置了position:relative带来了一些副作用。下面是第三种方法的实例代码,放到body标签里面就可以了。

垂直居中:

1.对这个CSS居中问题,可以使用设置背景图片的方法。举例:

body {BACKGROUND: url(”图片文件”) #FFF no-repeat center}

关键就在于这个Center属性,它表示让该背景图片在容器中居中。也可以把Cener换成Top Left或者直接写上数字来调整它的位置。

2.如何使文本在DIV中垂直居中

对于文字,便不能用背景方法,可以用增高行距的办法变通实现垂直居中,示范代码如下:

#center{ MARGIN-RIGHT: auto MARGIN-LEFT: auto height:200px vertical-align:middle line-height:200px }

<div id=”center”><p>test content</p></div>

说明:

vertical-align:middle表示行内垂直居中,将行距增加到和整个DIV一样高line-height:200px然后插入文字,就垂直居中了。

图片垂直居中的实例:

CSS 代码   复制

.new_proimg{

 display: table-cell /*非IE的主流浏览器识别的垂直居中的方法*/

 vertical-align:middle /*非IE的主流浏览器识别的垂直居中的方法*/

 text-align:center /*设置水平居中*/

 *display: block /* 针对IE的Hack */

 *font-size: 104px /*约为高度的0.873,120*0.873 约为104*/

 *font-family:Arial  /*防止非utf-8引起的hack失效问题,如gbk编码*/

 width:120px 

 height:120px

 margin-bottom: 5px

 border: 1px solid #eee

}

图片垂直居中建议:

1、单独文字垂直居中只需要设置CSS样式line-height属性即可。

2、文字与图片同排,在设置div高度同时再对此css样式的图片“img”样式设置vertical-align:middle垂直居中属性,

如.yangshi img{vertical-align:middle} 。

<style>

ul,li{margin:0padding:0list-style:none}

.menu{width:960pxheight:25pxbackground:#46B421margin-left:automargin-right:auto}

.menu ul{width:960pxheight:auto}

.menu ul li{display:inline-blockwidth:120pxline-height:25pxtext-align:centerfont-size:12pxcolor:#ffffff}

</style>

<div class="menu">

<ul>

<li>首页</li><li>分类</li><li>公社</li><li>问医生</li><li>问律师</li><li>企业</li><li>经验</li><li>买什么</li>

</ul>

</div>

<style>

ul,li{margin:0padding:0list-style:none}

.menu{width:960pxheight:25pxbackground:#46B421margin-left:automargin-right:auto}

.menu ul{width:960pxheight:auto}

.menu ul li{display:blockfloat:leftwidth:120pxline-height:25pxtext-align:centerfont-size:12pxcolor:#ffffff}

</style>

<div class="menu">

<ul>

<li>首页</li>

<li>分类</li>

<li>公社</li>

<li>问医生</li>

<li>问律师</li>

<li>企业</li>

<li>经验</li>

<li>买什么</li>

</ul>

</div>

上面那段li之间不能回车,,因为回车后,宽度会增加,好处是没有做浮动,不会出现浮动错位,下面是用浮动,放到你网页的时候要检查好。