admin 管理员组

文章数量: 887021


2023年12月19日发(作者:鼠标代码43的问题解决方法)

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

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

CSS网页布局DIV水平居中的各种方法

一、单行垂直居中

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

(爱摩客)提供的代码片段:

div {

height:25px;

line-height:25px;

overflow:hidden;

}

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

(爱摩客)提供的代码片段:

"/TR/xhtml1/DTD/">

单行文字实现垂直居中

现在我们要使这段文字垂直居中显示!

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

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

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

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

(爱摩客)提供的代码片段:

div {

padding:25px;

}

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

(爱摩客)提供的代码片段:

"/TR/xhtml1/DTD/">

多行文字实现垂直居中

现在我们要使这段文字垂直居中显示!  

div {

padding:25px;

border:1px solid #FF0099;

background-color:#FFCCFF;

}

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

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

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

(爱摩客)提供的代码片段:

div#wrap {

height:400px;

display:table;

}

div#content {

vertical-align:middle;

display:table-cell;

border:1px solid #FF0099;

background-color:#FFCCFF;

width:760px;

}

(爱摩客)提供的代码片段:

"/TR/xhtml1/DTD/">

多行文字实现垂直居中

现在我们要使这段文字垂直居中显示!  

div#wrap {

height:400px;

display:table;

}

div#content {

vertical-align:middle;

display:table-cell;

border:1px solid #FF0099;

background-color:#FFCCFF;

width:760px;

}

这个方法应该是很理想了,但是不幸的是Internet Explorer 6 并不能正确地理解display:table和display:table-cell,因此这种方法在Internet Explorer 6及以下的版本中是无效的。嗯,这让人很郁闷!不过我们还其它的办法。

四、在Internet Explorer中的解决方案

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

(爱摩客)提供的代码片段:

如果我们对subwrap进行了绝对定位,那么content也会继承了这个属性,虽然它不会在页面中马上显示出来,但是如果再对content进行相对 定位的时候,你使用的100%分比将不再是content原有的高度。例如,我们设定了subwrap的position为40%,我们如果想使 content

的上边缘和wrap重合的话就必须设置top:-80%;那么,如果我们设定subwrap的top:50%的话,我们必须使用100%才 能使content回到原来的位置上去,但是如果我们把content也设置50%呢?那么它就正好垂直居中了。所以我们可以使用这中方法来实现 Internet Explorer

6中的垂直居中:

(爱摩客)提供的代码片段:

div#wrap {

border:1px solid #FF0099;

background-color:#FFCCFF;

width:760px;

height:400px;

position:relative;

}

div#subwrap {

position:absolute;

border:1px solid #000;

top:50%;

}

div#content {

border:1px solid #000;

position:relative;

top:-50%;

}

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

(爱摩客)提供的代码片段:

"/TR/xhtml1/DTD/">

多行文字实现垂直居中

现在我们要使这段文字垂直居中显示!  

div#wrap {

border:1px solid #FF0099;

background-color:#FFCCFF;

width:760px;

height:500px;

position:relative;

}

div#subwrap {

position:absolute;

border:1px solid #000;

top:50%;

}

div#content {

border:1px solid #000;

position:relative;

top:-50%;

}

五、完美的解决方案

那么我们综合上面两种方法就可以得到一个完美的解决方案,不过这要用到CSS hack的知识。对于如果使用CSS Hack来区分浏览器,你可以参考这篇“简单CSS hack:区分IE6、IE7、IE8、Firefox、Opera”:

(爱摩客)提供的代码片段:

div#wrap {

display:table;

border:1px solid #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%;

}

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

(爱摩客)提供的代码片段:

"/TR/xhtml1/DTD/">

多行文字实现垂直居中

现在我们要使这段文字垂直居中显示!  

div#wrap {

border:1px solid #FF0099;

background-color:#FFCCFF;

width:760px;

height:500px;

position:relative;

}

div#subwrap {

position:absolute;

border:1px solid #000;

top:50%;

}

div#content {

border:1px solid #000;

position:relative;

top:-50%;

}

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


本文标签: 居中 垂直 高度 文字

更多相关文章

html文字居中代码

10月前

html文字居中代码

子div高度变化引起父div垂直滚动条 不正确

10月前

子div高度变化引起父div垂直滚动条 不正确

如何用CSS实现一个令人惊叹的文字效果

10月前

如何用CSS实现一个令人惊叹的文字效果

div中文字对齐方式

10月前

div中文字对齐方式

居中定位 css 方法

10月前

居中定位 css 方法

如何利用matlab画等高线

10月前

如何利用matlab画等高线

怎样用matlab画等高线

10月前

怎样用matlab画等高线

vue 项目vh用法

9月前

vue 项目vh用法

premierepro中四种滚动字幕的方法

9月前

premierepro中四种滚动字幕的方法

wps文字变成了乱码解决方法

9月前

wps文字变成了乱码解决方法

vb6的垂直滚动条用法

9月前

vb6的垂直滚动条用法

网页两边悬浮窗广告代码

9月前

网页两边悬浮窗广告代码

AE 软件中英文翻译

9月前

AE 软件中英文翻译

PDF编辑器 Foxit PDF Editor V3.0 简体中文版附图文使用教程

9月前

PDF编辑器 Foxit PDF Editor V3.0 简体中文版附图文使用教程

路虎消息中心显示中英文对照

9月前

路虎消息中心显示中英文对照

ChatGPT+Word的智能化文字生成和应用

4月前

[db:摘要]

【vue2】纯前端实现本地的pdfwordepub文件预览(包括pdf选中文字,epub高亮等)

3月前

[db:摘要]

Windows安装Tesseract OCR与Python中使用pytesseract进行文字识别

3月前

文章目录 前言一、下载并安装Tesseract OCR二、配置环境变量三、Python中安装使用pytesseract总结 前言 Tesseract OCR是一个开源OCR(Optical Character Rec

复制粘贴之后出现问号怎么办_复制粘贴文字变乱码解决

2月前

在Windows 2000和Windows XP系统中,经常会在执行“复制”、“粘贴”操作时,粘贴到文本文件里的文字都是乱码,这实际是系统设置问题。解决该问题的方法操作如下几

JS 文字转语音 谷歌内核浏览器,实现音频与文字展示时间同步

2月前

功能问题概述 项目中用到了谷歌内核浏览器的文字转语音功能,需要把要朗读的文字展示出来,因此出现了语音还未读完文字已经展示结束的问题(开始使用的setTimeout函数倒计时展示文字,这种方式并不好用,倒计时结束文字收起展示,但是语音还在朗

发表评论

全部评论 0
暂无评论