css 垂直居中的几种方法

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中。

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的一半高度。

转载自:http://frontenddev.org/article/introduction-to-vertical-in-the-css-in-several-ways.html

时间: 2025-01-06 23:59:43

css 垂直居中的几种方法的相关文章

css垂直居中的6种方法

1.通过verticle-align:middle实现CSS垂直居中. 通过vertical-align:middle实现CSS垂直居中是最常使用的方法,但是有一点需要格外注意,vertical生效的前提是元素的display:inline-block. 1 .parents{ 2 background:#ff6600; 3 height:300px; 4 } 5 .children{ 6 background:#ff0000; 7 widht:50%; 8 height:50%; 9 disp

css垂直居中:5种方法

<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title></title> </head> <style> /*方法四*/ /* This parent can be any width and height */ .block { height: 300px; text-align: center; background:

css垂直居中的四种方法

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>垂直居中</title>    <style>    .parent{width: 400px;height: 400px;border:1px solid grey;display: }    .children{width: 200p

顽石系列:CSS实现垂直居中的五种方法

顽石系列:CSS实现垂直居中的五种方法 在开发过程中,我们可能沿用或者试探性地去使用某种方法实现元素居中,但是对各种居中方法的以及使用场景很不清晰.参考的内容链接大概如下: 行内元素:https://blog.csdn.net/bwf_erg/article/details/69844527 MDN文档:https://developer.mozilla.org/zh-CN/docs/Web/CSS/vertical-align 六种方法:https://www.jianshu.com/p/08

让div盒子相对父盒子垂直居中的几种方法

div相对于父盒子垂直居中的几种方法,之前在网上看到很多种方法,确实说的很对,也很具体,但是我感觉对于初学者来说,一目了然是最重要的,所以,我把很高深的技巧,和很复杂的css样式都剔除掉,旨在让更多人能看懂. 具体事例方法如下:    1.   其实这里的重点是,一定要给父盒子设置相对定位 <!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8"> <

让DIV水平和垂直居中的几种方法

我们在设计页面的时候,经常要把DIV居中显示,而且是相对页面窗口水平和垂直方向居中显示,如让登录窗口居中显示.我们传统解决的办法是用纯CSS来让DIV居中.在本文中,我将给大家讲述如何用CSS和jQuery两种方法让DIV水平和垂直居中. CSS让DIV水平居中 说明,本文中所指的DIV包括HTML页面中所有的元素. 让一个DIV水平居中,直接用CSS就可以做到.只要设置了DIV的宽度,然后使用margin设置边距0 auto,CSS自动算出左右边距,使得DIV居中. 1 .mydiv{ 2 m

垂直居中的N种方法

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

页面中插入CSS样式的三种方法

页面中插入css样式的三种方法总结 1. 外部样式 当样式需要应用于很多页面时,外部样式表将是理想的选择.在使用外部样式表的情况下,你可以通过改变一个文件来改变整个站点的外观.每个页面使用<link>标签链接到样式表. <link>标签在(文档的)头部: <head> <link rel="stylesheet" type="text/css" href="path/myCss.css"/> <

CSS教程:div垂直居中的N种方法[转]

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