浅谈 CSS 垂直居中的几种方法

发布于 2021-12-16 12:42:45 字数 3486 浏览 1444 评论 0

用css垂直居中元素往往给设计人员带来麻烦。然而,存在用于垂直定心的各种方法,并且每种方法都相当容易使用。今天我想介绍其中的6种方法。


1.图片水平垂直居中

html:
     <div class="parent">
	    <div class="child">
		   <img src="xxx/demo.png">
		</div>
	  </div>
css:
	 .parent{
	    display: table
	 }
	 .parent .child {
	    display: table-cell;
		*display: inline-block;
		text-align: center;
		vertical-align: middle;
	 }
	 .parent .child img{
	    border: none;
		width: 200px;
		height: 200px;
		vertical-align: middle;
	 }

注: IE修复: *display: inline-block;
由于 vertical-align 属性与表格一起使用,我们将父 DIV 设置为 display: table, 并将子 DIV 设置为单元格 display: talbe-cell.然后我 们可以安全的使用vertical-align:middle 来垂直单元格中的内容.此方法适用于多行文本,容器DIV随内容动态增长,不幸的是不工作于IE6、IE7中(该死的IE,哈哈)

2. 绝对定位和垂直拉伸

  html:
     <div class="parent">
        <div class="child">content here</div>
     </div>
  css:
      .parent {
	     position: relative;
	  }
	  .parent  .child {
	     position: absolute;
		 top: 0;
		 right: 0;
		 bottom: 0;
		 left: 0;
		 margin: auto;
		 width: 50%;
		 height: 50%;
	  }

注: 子 DIV 处于父 DIV 中,它的顶部,底部,左侧,右侧的值都设为0。因为子DIV的高度和宽度都设置为小于父DIV的高度和宽度,所以这种定位是不行的。将子DIV的4个边框都设置为auto会在顶部和底部以及左右两侧产生同等的边距,这导致子 DIV 同时水平和垂直居中,不幸的是IE7以下不支持。

3.填充

html:
	<div class="parent">
        <div class="child">content here</div>
	</div>
css:
	.parent {
	   padding: 5% 0;
	}
	.parent .child {
	   padding: 10% 0;
	}

注:相同顶部和底部填充用于使子 DIV 在父 DIV 居中,并使子 DIV 中的文本居中。padding 设置为 %,允许两个DIV动态增长。
如果任何元素的高度都设置绝对测量,则需要一些数学知识来确保顶部和底部填充相同。虽然这个方法是在容器上设置paddings,你可以翻转事物,并在包含的元素中设置边距

4.lineHeight

html:
   <div class="parent">
     <div class="child">content here</div>
   </div>
css:
   .child {
		line-height: 200px;
	}

注:垂直居中通过给子 div(包含文本的那个)一个大于字体大小的行高来实现。有些也设置一个高度等于这个div上的行高,但我还没有发现它的必要。这将工作于垂直居中一行文本,但不会工作在多行文本。

5.定位和负边距

html:
	<div class="parent">
		<div class="child"></div>
	</div>
css:
   .parent{ 
       position: relative
	}
	.parent .child { 
      position: absolute;
	  top: 50%;
	  left: 50%;
	  width: 200px;
	  height: 200px;
	  margin: -100px 0 0 -100px;
	 }

注: 子DIV通过定位和边距定位在父 DIV 中心,通过将子DIV的顶部和左侧的值设为50%,子DIV的左上角位于父DIV的中心。负顶部和左侧等于元素高度和宽度的一半,向上拉伸子DIV让它处于父DIV中心。此方法最适合于块级元素,并且它需要知道子DIV的维度。

6.浮动分区

html:
   <div class="parent">
	   <div class="floater"></div>;
	    <div class="child">content here</div>
	 </div>
css:
   .parent{
	     height: 200px;
	  }
	  .parent .floater {
	     float: left;
		 height: 50%;
		 width: 100%;
		 margin-bootm: -50px;
		 border: 1px solid red;
	  }
	  .parent .child {
	    clear: both;
	    height: 100px;
	    outline: 1px solid yellow;
	  }

注:这里,一个空的 div 设置为父 div 的一半高度并向左(或右)浮动。我们想要居中的div然后被清除,所以它的顶边将直接位于浮动 div 的底边下方。为了使子div的垂直中心向上,我们为浮动div添加一个负的下边距,它等于子 div 的一半高度。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

绝影如岚

暂无简介

文章
评论
427 人气
更多

推荐作者

夢野间

文章 0 评论 0

doggiejohn

文章 0 评论 0

就此别过

文章 0 评论 0

初见终念

文章 0 评论 0

qq_rvKjBH

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文