探究 HTML元素的水平垂直居中

HTML:css

<body>
    <div class="maxbox">
        <div class="minbox align-center"></div>
    </div></body>

父元素web

.maxbox{
    position: relative;
    width: 500px;
    height: 500px;
    margin: 5px;
    box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.8), -1px -1px 1px rgba(0, 0, 0, 0.8);}

子元素:佈局

.minbox{
    width: 200px;
    height: 200px;
    box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.8), -1px -1px 1px rgba(0, 0, 0, 0.8);}

效果圖(下面幾種方法效果圖同樣):
圖片描述flex

第一種: CSS絕對定位
主要利用絕對定位,再用margin設置爲auto
水平垂直居中對齊:spa

.align-center{
    position: absolute;
    top: 0;
    left: 0;
    bottom: 0;
    right: 0;
    margin: auto;}

第二種: CSS絕對定位
主要利用絕對定位,再用margin調整到中間位置。code

水平垂直居中對齊:orm

.align-center{
    position: absolute;
    left: 50%;
    top: 50%;
    margin-left: -100px;   /*width/-2*/
    margin-top: -100px;    /*height/-2*/}

第三種: CSS絕對定位 + Javascript/JQuery
主要利用絕對定位,再用Javascript/JQuery調整到中間位置。相比第一種方法,此方法提升了class的靈活性。圖片

水平垂直居中對齊:ip

.align-center{
    position: absolute;
    left: 50%;
    top: 50%;}

JQuery:it

$(function(){
    $(".align-center").css(
        {
            "margin-left": ($(".align-center").width()/-2),
            "margin-top": ($(".align-center").height()/-2)
        }
    );});

第四種: CSS3絕對定位 + 位移
使用絕對定位與CSS3的 transform: translate一樣也能夠達到效果。

水平垂直居中對齊:

.align-center{
    position: absolute;
    top: 50%;
    left: 50%;
    -webkit-transform: translate(-50%, -50%);
       -moz-transform: translate(-50%, -50%);
            transform: translate(-50%, -50%);  /*向左向上位移*/}

第五種: Flexbox: [伸縮佈局盒模型]
要讓元素水平垂直,對於Flexbox模型來講太容易了。

這裏得改變一下HTML:

<div class="maxbox align-center">
    <div class="minbox"></div></div>

水平垂直居中對齊:

.align-center{
    display: flex;
    display: -webkit-flex;       /*兼容問題*/
    justify-content: center;
    align-items: center; }

幾種方法的比較:

  • 第一種:使用CSS絕對定位margin設置爲auto,兼容性很好,應該是一種最好的方法了。

  • 第二種:使用CSS絕對定位margin調整,兼容性很好可是欠缺靈活性。若是有不少box裏須要水平垂直居中,因其width,height不一樣而須要寫不一樣的 .align-center 。

  • 第三種:使用腳本語言,兼容性很好且彌補了第一種的缺點。不因width,height的改變而影響水平垂直居中的效果。

  • 第四種:使用CSS3的一些新的屬性,兼容IE10, Chrome, Firefox, 和 Opera。兼容性不太很好,不因width,height的改變而影響水平垂直居中的效果。

  • 第五種:使用Flexbox模型,兼容Firefox、Opera 和 Chrome,IE全軍覆沒。也是不因width,height的改變而影響水平垂直居中的效果。

相關文章
相關標籤/搜索