千家信息网

CSS中如何实现DIV容器垂直居中

发表于:2025-12-01 作者:千家信息网编辑
千家信息网最后更新 2025年12月01日,本篇内容主要讲解"CSS中如何实现DIV容器垂直居中",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"CSS中如何实现DIV容器垂直居中"吧!DIV CSS教
千家信息网最后更新 2025年12月01日CSS中如何实现DIV容器垂直居中

本篇内容主要讲解"CSS中如何实现DIV容器垂直居中",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"CSS中如何实现DIV容器垂直居中"吧!

DIV CSS教程:实现DIV容器垂直居中的方法

其实CSS水平居中实现还是比较简单的,反而垂直居中有点麻烦,因为我们设计页面的时候往往水平宽度都是固定的。因此我们有必要总结一下在CSS页面布局过程中实现垂直居中的方法。

在说到这个问题的时候,也许有人会问CSS中不是有vertical-align属性来设置垂直居中的吗?即使是某些浏览器不支持我只需做少许的CSSHack技术就可以啊!所以在这里我还要啰嗦两句,CSS中的确是有vertical-align属性,但是它只对(X)HTML元素中拥有valign特性的元素才生效,例如表格元素中的、、等,而像

这样的元素是没有valign特性的,因此使用vertical-align对它们不起作用。

一、单行垂直居中

如果一个容器中只有一行文字,对它实现居中相对比较简单,我们只需要设置它的实际高度height和所在行的高度line-height相等即可。如:

ExampleSourceCode

DIV{  height:25px;  line-height:25px;  overflow:hidden;  }

这段代码很简,后面使用overflow:hidden的设置是为了防止内容超出容器或者产生自动换行,这样就达不到垂直居中效果了。

SourceCodetoRun

   52CSS.com    body{font-size:12px;font-family:tahoma;}   DIV{    height:25px;    line-height:25px;    border:1pxsolid#FF0099;    background-color:#FFCCFF;   }      
现在我们要使这段文字垂直居中显示!

[可先修改部分代码再运行查看效果]

不过在InternetExplorer6及以下版本中,这和方法不支持对图片设置垂直居中。

二、多行未知高度文字的垂直居中

如果一段内容,它的高度是可变的那么我们就可以使用上一节讲到的实现水平居中时使用到的***一种方法,就是设定Padding,使上下的padding值相同即可。同样的,这也是一种"看起来"的垂直居中方式,它只不过是使文字把

完全填充的一种访求而已。可以使用类似下面的代码:

ExampleSourceCode

DIV{  padding:25px;  }

这种方法的优点就是它可以在任何浏览器上运行,并且代码很简单,只不过这种方法应用的前提就是容器的高度必须是可伸缩的。

SourceCodetoRun

   52CSS.com    body{font-size:12px;font-family:tahoma;}   DIV{    padding:25px;    border:1pxsolid#FF0099;    background-color:#FFCCFF;    width:760px;   }      
现在我们要使这段文字垂直居中显示!   DIV{    padding:25px;    border:1pxsolid#FF0099;    background-color:#FFCCFF;   }  

[可先修改部分代码再运行查看效果]

三、多行文本固定高度的居中

在本文的一开始,我们已经说过CSS中的vertical-align属性只会对拥有valign特性的(X)HTML标签起作用,但是在CSS中还有一个display属性能够模拟

,所以我们可以使用这个属性来让
模拟
就可以使用vertical-align了。注意,display:table和display:table-cell的使用方法,前者必须设置在父元素上,后者必须设置在子元素上,因此我们要为需要定位的文本再增加一个
元素:

ExampleSourceCode

DIV#wrap{  height:400px;  display:table;  }  DIV#content{  vertical-align:middle;  display:table-cell;  border:1pxsolid#FF0099;  background-color:#FFCCFF;  width:760px;  }

SourceCodetoRun

   52CSS.com    body{font-size:12px;font-family:tahoma;}   DIV#wrap{    height:400px;    display:table;   }   DIV#content{    vertical-align:middle;    display:table-cell;    border:1pxsolid#FF0099;    background-color:#FFCCFF;    width:760px;   }       
现在我们要使这段文字垂直居中显示!   DIV#wrap{    height:400px;    display:table;   }   DIV#content{    vertical-align:middle;    display:table-cell;    border:1pxsolid#FF0099;    background-color:#FFCCFF;    width:760px;   }  

[可先修改部分代码再运行查看效果]
这个方法应该是很理想了,但是不幸的是InternetExplorer6并不能正确地理解display:table和display:table-cell,因此这种方法在InternetExplorer6及以下的版本中是无效的。嗯,这让人很郁闷!不过我们还其它的办法。

四、在InternetExplorer中的解决方案

在InternetExplorer6及以下版本中,在高度的计算上存在着缺陷的。在InternetExplorer6中对父元素进行定位后,如果再对子元素进行百分比计算时,计算的基础似乎是有继承性的(如果定位的数值是绝对数值没有这个问题,但是使用百分比计算的基础将不再是该元素的高度,而从父元素继承来的定位高度)。例如,我们有下面这样一个(X)HTML代码段:

ExampleSourceCode

     

如果我们对subwrap进行了绝对定位,那么content也会继承了这个这个属性,虽然它不会在页面中马上显示出来,但是如果再对content进行相对定位的时候,你使用的100%分比将不再是content原有的高度。例如,我们设定了subwrap的position为40%,我们如果想使content的上边缘和wrap重合的话就必须设置top:-80%;那么,如果我们设定subwrap的top:50%的话,我们必须使用100%才能使content回到原来的位置上去,但是如果我们把content也设置50%呢?那么它就正好垂直居中了。所以我们可以使用这中方法来实现InternetExplorer6中的垂直居中:

ExampleSourceCode

DIV#wrap{  border:1pxsolid#FF0099;  background-color:#FFCCFF;  width:760px;  height:400px;  position:relative;  }  DIV#subwrap{  position:absolute;  border:1pxsolid#000;  top:50%;  }  DIV#content{  border:1pxsolid#000;  position:relative;  top:-50%;  }

当然,这段代码只能在InternetExlporer6等计算存在问题的浏览器中才会有作用。(不过我不解,我查阅了很多文章,不知道是因为出处相同还是什么原因,似乎很多人都不愿意去解释InternetExlporer6中这这个Bug的原理,我也只是了解了一点皮毛,还要再研究)

SourceCodetoRun

   52CSS.com    body{font-size:12px;font-family:tahoma;}   DIV#wrap{    border:1pxsolid#FF0099;    background-color:#FFCCFF;    width:760px;    height:400px;    position:relative;   }   DIV#subwrap{    position:absolute;    top:50%;   }   DIV#content{    position:relative;    top:-50%;   }           
现在我们要使这段文字垂直居中显示!   DIV#wrap{    border:1pxsolid#FF0099;    background-color:#FFCCFF;    width:760px;    height:500px;    position:relative;   }   DIV#subwrap{    position:absolute;    border:1pxsolid#000;    top:50%;   }   DIV#content{    border:1pxsolid#000;    position:relative;    top:-50%;   }

[可先修改部分代码再运行查看效果]

五、***的解决方案

那么我们综合上面两种方法就可以得到一个***的解决方案,不过这要用到CSShack的知识。

ExampleSourceCode

DIV#wrap{  display:table;  border:1pxsolid#FF0099;  background-color:#FFCCFF;  width:760px;  height:400px;  _position:relative;  overflow:hidden;  }  DIV#subwrap{  vertical-align:middle;  display:table-cell;  _position:absolute;  _top:50%;  }  DIV#content{  _position:relative;  _top:-50%;  }

至此,一个***的居中方案就产生了。

SourceCodetoRun

   52CSS.com    body{font-size:12px;font-family:tahoma;}   DIV#wrap{    display:table;    border:1pxsolid#FF0099;    background-color:#FFCCFF;    width:760px;    height:400px;    _position:relative;    overflow:hidden;   }   DIV#subwrap{    vertical-align:middle;    display:table-cell;    _position:absolute;    _top:50%;   }   DIV#content{    _position:relative;    _top:-50%;   }           
现在我们要使这段文字垂直居中显示!   DIV#wrap{    border:1pxsolid#FF0099;    background-color:#FFCCFF;    width:760px;    height:500px;    position:relative;   }   DIV#subwrap{    position:absolute;    border:1pxsolid#000;    top:50%;   }   DIV#content{    border:1pxsolid#000;    position:relative;    top:-50%;   }

[可先修改部分代码再运行查看效果]

垂直居中vertical-align的值是middle,而水平居中align的值是center,虽然同是居中但关键字不同。

到此,相信大家对"CSS中如何实现DIV容器垂直居中"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

方法 元素 代码 高度 文字 容器 属性 效果 定位 运行 部分 可先 内容 方案 水平 作用 就是 时候 浏览器 版本 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 软件开发代码都不认识怎么办 网络安全未来就业规划 惠州游戏软件开发 游戏客户端和服务器连接值 数据库测试验收细则 手机app一般用的什么服务器 临沂市委网信办网络安全 行车记录仪软件开发公司 环境保护数据库的设计与开发 服务器能连接多少个无线网 长宁区市场软件开发信息中心 幻塔有红石柱的服务器是什么服 网络安全道德品质内容怎么写 数据库系统怎么构建 下载的阳光校园为什么服务器异常 数据库为什么引入除运算 微信中心服务器异常怎么解决 华为服务器进入临时启动 浙江安卓软件开发要多少钱 网络安全法则小报 弹性云服务器搭建免流 供批地数据库 哪个数据库查论文好用 我的世界服务器图片插件下载 幼儿园安全风险隐患数据库 上海信息网络技术常见问题 网络安全漏洞扫描报告 网络安全市场特点 正睿服务器远程管理地址 东城区网络安全培训
0