使用XHTML+CSS来实现元素的垂直居中一直是前端开发中的一个比较复杂且棘手的问题,作为网页设计师或前端开发工程师,这个垂直居中问题也是必须掌握的技巧之一,一些互联网公司面试题中也会出现这类题目。今天暴风彬彬将分享一个完美通过CSS实现垂直居中的方法,该方法是由aka Yuhů发明的,这个方法也是目前暴风彬彬觉得最完美最简洁的CSS垂直居中实现方法。下面来看看暴风彬彬曾经总结的笔记,大家有不同意见请多拍砖:
先来看看实例效果Demo
该CSS垂直居中的条件:
1.已有一个已定义高度的容器(如<div>)
2.内部有一个未知高度的对象(也许是后台动态生成的文本,放在另一个<div>中)
3.我想让内部的对象在容器内垂直居中。
4.不使用HTML的表格(table元素),也不使用Javascript。
该CSS垂直居中的方法:
最大的问题:IE浏览器的Bug。
大部分浏览器能理解CSS中的display:table之类的表格方式声明,但IE7及其以下的旧版IE无法理解这个声明。
解决办法:让大部分能理解display:table声明的浏览器使用vertical-align属性达到垂直居中,让IE7及以下版本用自己理解高度的Bug来解决居中问题。
IE Bug:
IE7及以下版本理解高度的Bug:如果a容器内有b对象,a容器并没有设置高度值,如果b对象有实际内容(如文字),那么就会将a的高度理解为与b相等。那么如果对b采取相对定位,b就会相对于在a中的原始位置移动(主要利用百分比高度)。
eg:a未定义高度,b的高度为100px,将b相对定位,并设top:-50%
在这种情况下:标准浏览器由于未知a的高度,所以b不动。而IE7及以下版本则会让b相对a的高度(其实等于b的高度)上移50%,也就是50px 。
如何仅让IE7及以下版本理解对它们的声明?
1.Pixy曾发明underscore hack,就是在每个CSS属性前加一个下划线”_”,这个hack是专门针对IE6及以下版本的,也就是说IE7无法理解。如:_position:absolute; 所以这种hack就PASS!
2.在属性前加“#”的声明正好可以仅让IE7及以下版本理解,而其它任何浏览器都无法理解这个”#”,所以”#”后的声明就会被其它浏览器忽略掉。 OK~~就这个!
兼容性:
目前为止兼容直到IE8.x的所有IE浏览器、Gecko核心浏览器(Mozilla,Firefox,Netscape 7)、Opera 7、Webkit核心浏览器(Safari及Google Chrome)。
代码:
CSS部分:
#outer {
display:table;
height:400px;
#position:relative;
overflow:hidden;
}
#middle {
display:table-cell;
vertical-align:middle;
#position:absolute;
#top:50%;
}
#inner {
#position:relative;
#top:-50%;
}
XHTML部分:
<div id=”outer”>
<div id=”middle”>
<div id=”inner”>
<!–这里是要垂直居中的内容–>
</div>
</div>
</div>
预览效果Demo(在Demo源代码中附加了一些用于修饰的CSS声明,大家可以忽略)
经测试,该方法也适用于图片垂直居中,建议大家在使用的时候定义好outer层的宽度。
本文链接:http://blog.bingo929.com/css-vertical-center.html
分享到:
相关推荐
以上是CSS实现完美垂直居中的主要方法,理解并熟练运用这些技术,可以应对各种复杂场景下的垂直居中需求。同时,随着CSS规范的不断演进,新的布局模式如Grid和Flexbox将使得垂直居中变得更加简单和灵活。在实际应用...
"CSS 实现垂直居中水平居中的几种方式" CSS 中实现垂直居中水平居中的几种方式是非常重要的,以下是几种常见的实现方式: 1. 容器内(Within Container) 在容器内实现垂直居中水平居中可以通过设置容器的 ...
在压缩包中的"垂直居中显示"文件可能包含了示例代码、CSS样式或者HTML结构,通过查看这些文件,你可以更深入地理解每种方法的实现细节。学习并熟练掌握这些技巧,将有助于你在实际开发中更好地处理垂直居中问题,...
"垂直居中布局 Vertical-aligned 应用测试:兼容IE6/8/FF"这个主题涉及到如何在各种浏览器环境下,包括Firefox和较旧的Internet Explorer版本,实现元素的完美垂直居中。 在CSS中,传统的垂直居中方法可能包括使用...
要实现一个DIV元素在网页中水平和垂直居中,可以使用不同的CSS方法。这些方法的兼容性决定了它们能够适用于哪些浏览器版本。在上述文件中,给出了几种不同的实现方式,其中一些兼容现代浏览器如Chrome,同时也兼容较...
在说到这个问题的时候,也许有人会问CSS中不是有vertical-align属性来设置垂直居中的吗?即使是某些浏览器不支持我只需做少许的CSS Hack技术就可以啊!所以在这里我还要啰嗦两句,CSS中的确是有vertical-align属性,...
总结来说,当需要将DIV元素在网页中水平垂直居中时,可以根据实际情况选择使用基于负margin的方法或CSS3 transform方法。前者在兼容性上有优势,后者在自适应布局方面表现更为出色。在设计现代网页布局时,推荐使用...
div做的界面时,又出现CSS hack(CSS兼容浏览器问题)在IE内核浏览器或者firefox浏览器中都能居中,没有居中的可以用其特殊标签来设定居中,如下划线 _ IE6优先识别,!important 仅火狐firefox浏览器识别。可是在...
下图是理想中的效果图,外部容器的宽度和高度是固定的,中间的图片宽度和高度未知,但是图片要始终要相对于外部的容器垂直居中。 但是实际中实现的效果并不是很完美,由于各浏览器的解析都各不相同,所以各浏览器...
### CSS完美兼容通用方法 #### 一、CSS Hack详解 CSS Hack是一种技术手段,用于解决不同浏览器对CSS解析差异导致的兼容性问题。通过特定的语法编写CSS样式,可以实现针对不同浏览器显示相同或相似的效果。 ##### ...
本文将详细介绍一种基于CSS的垂直居中对齐方法,并结合Less预处理器来实现复用性更高的代码。 首先,核心的CSS代码如下: ```css .elment { position: relative; top: 50%; transform: translateY(-50%); } ```...
总结来说,实现表单元素垂直居中的完美解决方案主要包括正确使用`vertical-align`属性、合理设置元素的`margin`、清除默认样式、添加交互提示以及利用快捷键增强可访问性。通过这些方法,可以显著提升表单的易用性和...
本文主要探讨的是如何使用CSS来实现`div`元素的水平和垂直居中。我们将通过两种不同的方法来详细讲解这一主题。 首先,我们来看一种简单的方法,即实现水平居中。通过设置`div`的`margin`属性,可以轻松地使其在父...
### CSS完美兼容IE6_IE7_FF的通用方法 在网页设计与开发过程中,浏览器兼容性问题一直是前端开发者面临的重要挑战之一。特别是在早期的Web开发中,如何让网站同时兼容Internet Explorer 6(简称IE6)、Internet ...
此外,为了使图片在圆形区域内居中,我们可以利用CSS的`position`、`top`、`left`属性,或者更简洁地使用`margin: auto`来实现水平和垂直居中。 在实际应用中,我们可能会结合HTML结构,如创建一个包含图片的容器,...
在这个示例中,`class="my"`的`<div>`通过以下CSS样式实现了垂直居中: ```css .my { width: 1000px; height: 200px; margin: 0 auto; background-color: #fff; text-align: center; display: table-cell; ...
如果需要实现垂直居中,还需要采取额外的CSS技巧或布局方法,如使用Flexbox或Grid布局。 在使用这些方法的时候,也需要注意浏览器的兼容性问题,不同版本的浏览器可能对某些CSS属性的支持程度不同。一般而言,现代...