CSS—總結經常使用垂直居中方法

CSS—總結經常使用垂直居中方法

一、text-align與line-hight方法實現居中

這是比較經常使用的方法。經過line-hight來設置行間距是實現垂直居中的關鍵web

.wrap{
    width: 500px;
    heidth: 200px;
    line-height:200px;
    background: #80ff80;
    text-align:center;
    fontsize: 20px
}

clipboard.png

二、利用padding和background-clip實現水平垂直居中

經過background-clip設置爲center-box,將背景裁剪到內容區外沿,再利用padding設爲外div減去內div的差的一一半來實現瀏覽器

.parent{
    margin: 0 auto;
    width: 250px;
    heidth: 250px;
    background: #80ff80;
}
.child img {
    width: 150px;
    heidth: 150px;
    padding 50px;
    background-clip: center-box;
}

clipboard.png

三、使用transform實現垂直居中

其百分比計算不是以父元素爲基準,而是以本身爲基準,適用於沒固定大小的內容,min-width、max-width、overflow:scroll等。使用這個屬性時,沒必要定義子容器的高度,其會根據內容來自適應高度。可是IE8如下的瀏覽器不支持,並且屬性須要寫瀏覽器廠商的名字,還有可能會干擾其餘transform的效果。佈局

.parent{ 
    width:300px;
    height: 300px; 
    margin: 0 auto;
    background: #89ff89; 
    position: relative;
} 
.child{ 
    position: absolute; 
    left: 50%; 
    top: 50%; 
    -webkit-transform:translate(-50%, -50%); 
    -ms-transform: translate(-50%, -50%); 
    transform: translate(-50%, -50%); 
    text-align: center
}

clipboard.png

四、絕對居中實現垂直居中

這是一個兼容性比較好的可以實現垂直居中的方法。
能夠經過設置內容元素:position: fixedz-index: 999成爲視口居中,
更改百分比寬高、最大最小寬度使其可以實現響應,
只要 margin:auto,內容塊將垂直居中,使用top、left、button、right能夠設置偏移
居中內容比父容器高時,加overflow:auto可防止內容溢出
可是惟一的肯定就是父容器的高度必須是可知的。flex

.parent{ 
   width:400px;
   min-height: 400px; 
   margin: 0 auto;
   background: #89ff89; 
   position: relative;
} 
.child{ 
   width:100%;
   height:80%;
   overflow:auto;
   margin:auto;
   position: absolute; 
   left: 0; 
   top: 0; 
   bottom: 0;
   right: 0; 
   text-align: center
}

clipboard.png

五、負外邊距實現垂直居中

這是比較流行的一種方法,當塊元素尺寸已知,外邊距margin取負數,大小爲 (width/heigth + pdding)/2,加上top和left各爲50%,這個方法兼容IE6以上的IE瀏覽器,代碼量也比較少。可是不能自適應,不支持百分比尺寸和 min-/max- 屬性設置,內容可能會溢出容器,須要計算margin的取值flexbox

.child{ 
    width:200px;
    height:300px;
    padding:20px;
    position: absolute; 
    left: 50%; 
    top: 50%; 
    margin-left: -120px;
    margin-top: -170px;
    text-align: center
}

clipboard.png

六、表單元(table-cell)實現垂直居中

其內容塊高度能夠隨着實際內容的高度而變化,內容溢出時父元素會本身撐開,在瀏覽器中的兼容性也比較好,可是須要三層元素才能使最內層的元素居中 spa

clipboard.png

.wrap .is-table {
    display: table;
}
.is-table .table-cell{
    display:table-cell;
    vertical-align: middle;
    max-width:500px;
    min-height: 400px;
    background: #0ff80
}
.table-cell .box{
    width: 80%;
    margin: 0 auto;
    text-align: center;000008
}

clipboard.png

七、使用flexbox實現垂直居中

使用flexbox實現垂直居中很方便並且代碼簡潔, align-items 使元素水平居中, justify-content 是元素垂直居中
可是其兼容性不是很好,對於IE只能兼容10以上,可是隨着IE一些比較低的版本逐漸退出市場,flexbox的佈局也將成爲趨勢code

.parent{ 
    display: flex;
    align-items: center;
    justify-content:center;
    width:400px;
    background: #89ff89; 
} 
.child{ 
    text-align: center;
    padding: 10px;
}

clipboard.png

相關文章
相關標籤/搜索