CSS制作水平垂直居中对齐

特别声明:小站已开通年费VIP通道,年费价格为 ¥365.00元。如果您喜欢小站的内容,可以点击开通会员进行全站阅读。如果您对付费阅读有任何建议或想法,欢迎发送邮件至: airenliao@gmail.com!(^_^)

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

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

方法一:

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

Html Markup

				<div class="vertical">content</div>
			

CSS Code:

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

优点:

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

缺点:

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

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

方法二:

这种方法将在需要给容器设置绝对定位(position:absolute),并且定位高度(top:50%)和margin-top为高度的一半(margin-top:-height/2)。这就意味着使用这种方法来实现垂直居中的效果,那么元素必须要有一个固定的高度。这样一来,你给元素设置了固定高度,如果你又给他设置了“overflow:auto”,那么当元素内容超过容器后,这样元素的就会出现滚动,而不会自适应内容的高度。

HTML Markup

				<div class="vertical">content</div>
			

CSS Code

				.vertical {
					height: 100px;/*元素的高度*/
					position: absolute;
					top: 50%;/*元素的顶部边界离父元素的的位置是父元素高度的一半*/
					margin-top: -50px;/*设置元素顶边负边距,大小为元素高度的一半*/
				}
			

优点:

能在各浏览器下工作,结构简单明了,不需增加额外的标签

缺点:

由于固定死元素的高度,致使没有足哆的空间,当内容超过容器的大小时,要么会消息,要么会出现滚动条(如果元素在body内,当用户缩小浏览器窗口时,body的滚动条将不会出现)。

这种方法主要是针对多行元素来进行元素的垂直居中,而并非是此元素的内容垂直居中,这一点先要理解并分开清楚。另外此方法是通过绝对定位来实现的,那么用这种方法实现元素的垂直居中需要注意以下几点:其一元素定位关系到一个相对定位参考,所以要保证元素是相对于哪个为参考坐标;另外需要设置给元素明确定一个高度值并且给元素设置一个负值的margin-top,而且值为元素高度的一半。这里我建议大家给元素定一个宽度值,因为元素进行绝对定位后脱离文档流,其宽度是根据元素内容所占宽度来计算的,为这能让其视觉效果更好,最好给元素定义一个宽度值。

根据这种方法,我们稍作修改就能使元素不单是垂直居中,而且还可以水平居中,如:

HTML Markup

				<div id="wrap">test</div>
			

CSS Code

				#wrap {
					width: 200px;/*元素的宽度*/
					height:200px;/*元素的高度*/
					position: absolute;
					left: 50%;/*配合margin-left的负值实现水平居中*/
					margin-left: -100px;/*值的大小等于元素宽度的一半*/
					top:50%;/*配合margin-top的负值实现垂直居中*/
					margin-top: -100px;/*值的大小等于元素高度的一半*/
				}
			

这种方法可以实现元素的水平垂直居中,常用于页面在最中间的布局,使用这种方法一定要把握住:水平垂直居中的元素要有明确的大小(换句话说就是要有确切的宽和高度值);给元素进行绝对定位,并设置left,top值为“50%”(此处最好使用 对定位,如果只是单单水平居中,此处可以换成相对定位);最后设置margin-top和margin-left的负值,而且其值分别为元素高度和宽度的一半

方法三:

方法三是使用的的div模拟表格效果,也就是说将多个<div>的“display”属性设置为禾“table”和“table-

剩余80%内容付费后可查看

如需转载,烦请注明出处:https://www.w3cplus.com/css/vertically-center-content-with-css

如果文章中有不对之处,烦请各位大神拍正。如果你觉得这篇文章对你有所帮助,打个赏,让我有更大的动力去创作。(^_^)。看完了?还不过瘾?点击向作者提问!

赏杯咖啡,鼓励他创作更多优质内容!
返回顶部