css中水平垂直居中对齐布局实例总结

 水平居中,如果知道元素的宽度,则可以使用

代码如下

.cell{width:300px; margin:0 auto; text-align:center;}

 

如果是内联元素居中,那么直接用text-align:center则行

如果未知元素宽度,并且非内联元素,那么下面给出的几种方案也适合你。

用CSS来实现元素的垂直居中效果是件苦差事,虽然说实现方法有多种,但有很多方式在某些浏览器下可能无法正常的工作。接下来我们就一起来看看这些不同方法实现垂直居中的各自优点和其不足之处。

方法一:
这种方法用来实现单行垂直居中是相当的简单的,你只要保证元素内容是单行,并且其高度是固定不变的,你只要将其“line-height”设置成和“height”值一样就Ok了。不过这种方法局限性太大,只有单行文本的元素才适用,所以在多行元素中是不能使用这种方法的。

Html Markup

代码如下

<div class="vertical">content</div>
CSS Code:

.vertical {
height: 100px;
line-height: 100px;/*值等于元素高度的值*/
}

 

优点:

适合在所有浏览器,没有足够空间时,内容不会被切掉

缺点:

仅适合应用在文本和图片上,并且这种方法,当你文本不是单行时,效果极差,差到让你感到恶心。

这种方法对运用在小元素上是非常有用的,比如说让一个button、图片或者单行文本字段

第一种:相对定位法

原理是父类浮动的同时向左left:50%,而子类则向左浮动的同时left:50%;

代码如下

<style type="text/css">
.centerlist {position:relative;left:50%;float:left;}
.centerlist li {position:relative;right:50%; z-index:2;float:left}
</style>
<ul class="centerlist">
<li><a href="#">Lorem ipsum dolor.</a></li>
<li><a href="#">Lorem ipsum dolor.</a></li>
<li><a href="#">Lorem ipsum dolor.</a></li>
<li><a href="#">Lorem ipsum dolor.</a></li>
<li><a href="#">Lorem ipsum dolor.</a></li>
<li><a href="#">Lorem ipsum dolor.</a></li>
<li><a href="#">Lorem ipsum dolor.</a></li>
<li><a href="#">Lorem ipsum dolor.</a></li>
<li><a href="#">Lorem ipsum dolor.</a></li>
</ul>

 

第二种:强制内联

代码如下

<style type="text/css">
.centerlist_inline{text-align: center;}
.centerlist_inline li{display: inline;}
</style>
<ul class="centerlist_inline">
<li><a href="">lorem1</a></li>
<li><a href="">lorem1</a></li>
<li><a href="">lorem1</a></li>
<li><a href="">lorem1</a></li>
</ul>

 

局限:块级元素改为内联元素,那么高度、宽度、margin-top,margin-bottom, padding-top,padding-bottom,等都不能用。

第三种: 使用inline-block

如果大家看过我之前写的inline-block替换float可能就会清楚这个属性的好处

代码如下

<style type="text/css">
.centerlist_inline-block{text-align: center; font-size:0; -letter-spacing:-1px;}
.centerlist_inline-block li{display: inline-block; *display: inline; *zoom:1; font-size:12px; letter-spacing:normal; word-spacing:normal;}
</style>
<ul>
<li><a href="">lorem1</a></li>
<li><a href="">lorem1</a></li>
<li><a href="">lorem1</a></li>
<li><a href="">lorem1</a></li>
</ul>

 

第四种

 

代码如下

<style type="text/css">
.centerlist_table-cell{display:table; margin:0 auto;}
.centerlist_table-cell{display:table-cell;}
</style>
<ul class="centerlist_table-cell">
<li><a href="">lorem1</a></li>
<li><a href="">lorem1</a></li>
<li><a href="">lorem1</a></li>
<li><a href="">lorem1</a></li>
</ul>

缺点是不兼容ie6,ie7

推荐使用inline-block这种水平居中的方法,既保留了块级元素特性,而且完美兼容。就是代码有点多。另外你还可以使用表格的方式来水平居中。

说完了水平居中,下面说垂直居中。

如果元素是内联元素,并且只有一行,则我们可以通过line-height来设置与其高度同样大小,则实现了垂直居中了。

多行文字的水平垂直居中

一、大小不固定,多行文字的垂直居中

① 单行文字
可能很多人都知道如何让单行文字垂直居中显示,就是使用line-height,将line-height值与外部标签盒子的高度值设置成一致就可以了。例如如下css代码:height:3em; line-height:3em; ……
显示结果如下图:

单行文本垂直居中对齐

② 多行文字
如何实现父容器高度固定,文字可能一行,两行或更多行的垂直居中对齐呢?
实现的关键是把文字当图片处理。用一个span标签将所有的文字封装起来,设置文字与图片相同的display属性(inline-block属性),然后用处理图片垂直居中的方式处理文字的垂直居中即可。
核心css代码如下,
外部div标签:

代码如下

div{display:table-cell; width:550px; height:1.14em; padding:0 0.1em; border:4px solid #beceeb; color:#069; font-size:10em; vertical-align:middle;}

内部span标签:

代码如下

span{display:inline-block; font-size:0.1em; vertical-align:middle;}

行数不固定文字垂直居中对齐
有几点简要说明:
1.此例子用em做单位,如果您对em单位了解不够,把握不来的话,可以使用px做单位,值要换;
2.外部div不能使用浮动;
3.外部div高度和文字大小比例1.14为宜;
4.内部标签的vertical-align:middle可以省略,但是外部div高度和文字大小比例要修改,我自己试了一下,高度比字体1.5左右的样子;
5.系统原因,我没能够在IE8下测试。

实现的最终效果和JavaScript演示,您可以狠狠地点击这里去看看。

二、大小不固定,图片的水平垂直居中

① 透明gif图片+背景定位的方法
这里利用了background-position:center实现图片居中显示。这是个很实用也是很聪明的办法,对于维护控制成本都很不错。微软必应图片搜索的图片排列就是使用的这种方法。
方法的原理很简单,使用一个透明的gif图片做覆盖层,高宽拉伸至所需要的大小,然后给这个gif图片一个background- position:center center的属性。而background-image建议写在页面上,因为实际项目中,这肯定是个动态的URL地址,css文件似乎不支持动态URL 地址。

时间: 2024-11-05 20:46:16

css中水平垂直居中对齐布局实例总结的相关文章

css中水平垂直居中对齐布局一些实例总结

水平居中,如果知道元素的宽度,则可以使用  代码如下 复制代码 .cell{width:300px; margin:0 auto; text-align:center;} 如果是内联元素居中,那么直接用text-align:center则行 如果未知元素宽度,并且非内联元素,那么下面给出的几种方案也适合你. 用CSS来实现元素的垂直居中效果是件苦差事,虽然说实现方法有多种,但有很多方式在某些浏览器下可能无法正常的工作.接下来我们就一起来看看这些不同方法实现垂直居中的各自优点和其不足之处. 方法一

CSS制作水平垂直居中对齐 多种方式各有千秋

在制作Web页面时都有碰到CSS制作水平垂直居中,我想大家都有研究过或者写过,平时工作收集了几种不同的方式制作垂直居中方法,但每种方法各有千秋在此与大家分享或许对初学者有所帮助   作为前端攻城师,在制作Web页面时都有碰到CSS制作水平垂直居中,我想大家都有研究过或者写过,特别的其中的垂直居中,更是让人烦恼.这段时间,我收 集了几种不同的方式制作垂直居中方法,但每种方法各有千秋呀,要正确的选择也是一件不容易的事情.我会将这几种方法一一介绍给大家,以供大家参考.或许对 于我这样的初学者有一定的帮

CSS如何水平垂直居中?CSS水平垂直居中的方法汇总

直接进入主题! 一.脱离文档流元素的居中 方法一:margin:auto法 CSS代码: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 div{       width:400px;       height:400px;       position:relative;       border:1pxsolid#465468;  }  img{       position:absolute;       margin:auto;       top:0;       l

jquery计算出left和top,让一个div水平垂直居中的简单实例_jquery

实例如下: if($("#cont1").css("position")!="fixed"){ $("#cont1").css("position","absolute"); var dw = $(window).width(); var ow = $("#cont1").outerWidth(); var dh = $(window).height(); var o

css div水平垂直居中几个例子

一.未知宽度水平居中  代码如下 复制代码 <!doctype html> <html> <head> <meta charset="utf-8"> <title>未知宽高div在页面内水平垂直居中</title> <style> *{margin:0; padding:0;} body,html{overflow:hidden; height:100%;} .box {height: 100%; ov

css 图片水平垂直居中实例小结

图片水平垂直居中是老梗,大部分人都做过,或者被面试时问过.但是下面这种0.873方法我是刚知道~~ mark一下.font-size:105 = 120*0.873 提供方法人: shenshenyan span{display:table-cell;text-align:center; vertical-align:middle;*display:block;*font-family:aiarl;width:120px;height:120px;*font-size:105px;} span

CSS网页右下角广告的布局实例

  今天介绍一个网页上常用的右下角布局实例,其实实现起来挺简单,也就是相对定位和绝对定位的用法,这里要使用绝对定位: CSS代码部分: HTML部分: 为了兼容其它浏览器,使用了position:fixed;以及_position:absolute;,大家可作下测试,我在IE8下完美实现.

CSS中vertical-align垂直对齐属性介绍

一向以来,我对vertical-align的属性都搞的不是太清楚,今天刚好碰到有朋友问我相关的问题,于是自己潜心研究了一番,发现这玩意还真不是个简单的东西,在此我分享的东西都是抛弃脑残的IE的,如果你用的是脑残的IE,请跳过此篇文章. 一.为什么我设置的vertical-align没用? 相信很多前端开发人员都遇到过这个问题,有的时候自己明明写了vertical-align属性值,但就是没效果,归其原因,是因为vertical-align是个比较奇葩的东西,想要让他起作用,就要投其所好. 我们知

【div+css】两个div,如何让内层的div在外层div中水平垂直居中

好久没有写样式,很是很生疏   ==================================================================== 方法1: .parent { width:800px; height:500px; border:2px solid #000; position:relative; } .child { width:200px; height:200px; margin: auto; position: absolute; top: 0; l