1. 程式人生 > >flex佈局:常用屬性及文字圖片對齊試驗

flex佈局:常用屬性及文字圖片對齊試驗

圖片和文字的中線對齊一直是一個頭疼的問題。之前一直用flex佈局做垂直居中對齊,但是從來沒有認真研究過。

flex佈局的相容性:


我在ios和幾款android手機上測試了一下可以相容。

常用屬性:

justify-content: flex-start | flex-end | center | space-between | space-around;
    /*主軸對齊方式:左對齊(預設) | 右對齊 | 居中對齊 | 兩端對齊 | 平均分佈*/

align-items: flex-start | flex-end | center | baseline | stretch;
    /*交叉軸對齊方式:頂部對齊(預設) | 底部對齊 | 居中對齊 | 文字基線對齊 | 上下對齊並鋪滿*/


相容寫法:

.box{
    display: -webkit-flex; /*webkit*/
    display: flex;
    -webkit-box-pack: center;
    -moz-justify-content: center;
    -webkit-justify-content: center;
    justify-content: center;
    -webkit-box-align: center;
    -moz-align-items: center;
    -webkit-align-items: center;
    align-items: center;
}


幾種屬性展示如下:

1.水平垂直居中對齊

.box {

  display:flex;

  justify-content:center;

  align-items:center;

}


由於行高line-height的影響,可以發現文字和圖片中線並沒有對齊,只是他們所佔的空間的中線對齊了。

為了使文字的中線和圖片對齊,可以設定行高等於字型的大小。


2.水平分散對齊+垂直居中對齊

.box {

  display:flex;

  justify-content:space-around;

  align-items:center;

}


3.水平兩端對齊+垂直居中對齊

.box {

  display:flex;

  justify-content:space-between;

  align-items:center;

}


4.水平平均分散+垂直居中對齊

(ps:新屬性,chrome和firefox中已經有這個屬性了,其他還沒有,暫時不要用)

.box {

  display:flex;

  justify-content:space-around;

  align-items:center;

}


5. 垂直文字基線對齊+水平居中對齊

(ps:雖說是基線對齊,但是漢字和英文底線還是沒有對齊...╮(╯3╰)╭)

.box {

  display:flex;

  justify-content:center;

  align-items:baseline;

}


6. 垂直上下鋪滿+水平居中對齊

(ps:子元素設定了高度則為設定的高度;未設定高度,則高度等於父元素的高度)

.box {

  display:flex;

  justify-content:center;

  align-items:stretch;

}