zoukankan      html  css  js  c++  java
  • 简单易实现的水平居中、垂直居中方法

    在页面布局中,经常会面临垂直水平居中问题。网络上有很多方法,但是大多数情况下,我们找到合适的解决方法后,复制粘贴了事,并没有对各种方法的原理、利弊进行研究。本着“双鸟在林,不如一鸟在手”的宗旨,从各种方法中找出一种简单易懂的方法,让大家一目了然,以后再遇到也能立即想出来。
    1、水平居中:
    使div02在div01中水平居中。
    ```
    <div id="div01">
    <div id="div02"></div>
    </div>
    ```
    ```
    #div02 {
    200px;
    height: 200px;
    border: 1px solid red;
    background: #fc0;
    margin: 0 auto;
    }
    ```
    原理: 首先,div02作为块级元素会充满div01,即二者宽度相等。如果div02在div01中居中,那么div02的宽度应小于div01的宽度,所以应先设置好div02的宽度( 200px;)。设置好宽度后,利用元素的左右外边距使其水平居中。当div02居中时,两侧的外边距应相等,所以设置左右外边距为auto(margin: 0 auto;),div02会自动计算左右外边距使自己居中。

    2、垂直居中
    使div02在div01中垂直水平居中。
    ```
    <div id="div01">
    <div id="div02"></div>
    </div>
    ```
    ```
    #div01 {
    100%;
    height: 500px;
    border: 1px solid green;
    position: absolute;
    }
    #div02 {
    200px;
    height: 200px;
    border: 1px solid red;
    background: #fc0;
    position: absolute;
    top: 50%;
    left: 50%;
    margin-top: -100px;
    margin-left: -100px;
    }
    ```
    原理:使用绝对定位(position: absolute)结合负外边距实现。定位之前设置好div02的尺寸,再对div02相对于div01左上角进行绝对定位(前提是其父元素div01设置position:absolute;),top:50%;left:50%,此时div02的左上角处于div01中心,而不是div02垂直水平居中,需要用负外边距进行调节。将marjin-top设置为div02的height的一半的负值(- height/2),将marjin-left设置为div02的width的一半的负值(- width/2),即是将div02的中心向div01的中心移动,二者重合后div02也就垂直水平居中了。
    这种方法是水平居中、垂直居中两种效果同时实现,也可以根据需要实现某一种效果。

  • 相关阅读:
    [noi31]MST
    [noi34]palindrome
    如何下载InfoQ的视频
    ESRI.Arcgis.esrisystem.AoInitializeClass编译错误解决方法
    Engine中如何把没有Z值的Gemetry转为有Z值的Geomtry:报错"the geometry has no Z values"
    安装 Silverlight 5 出错的解决方法
    屏蔽优酷广告
    ESRI.Arcgis.esrisystem.AoInitializeClass编译错误解决方法
    屏蔽优酷广告
    安装 Silverlight 5 出错的解决方法
  • 原文地址:https://www.cnblogs.com/zhengxj1991/p/6486525.html
Copyright © 2011-2022 走看看