佈局實際上是一個很玄學的東西,你說會,可是佈局出來總感受缺點什麼,要麼層級嵌套太複雜,要麼class名太多,都想不出來名字。個人佈局其實也通常,可是經過最近幾個項目的鍛鍊,我本身總結了一套的移動佈局的實現的方法。核心是百分比+remcss
html{
font-size:26.67vw;
}
html,body,#app{
width:100%;
height:100%;
}
複製代碼
這裏最關鍵的一句話就是那個font-size,26.67是如何算出來的呢。首先,咱們拿到設計稿,例如設計稿寬度是375px。咱們知道屏幕的寬度是100vw,因此1vw=3.75px,那麼1px約等於0.2667vw,咱們再假設1rem=100px,所以就能夠得出html的根字體大小,26.67vw.html
p{
/* 字體大小約等於16像素*/
font-size:.16rem;
}
複製代碼
固然,這個方法也不是萬能的,實踐中,會有1-2px的偏差,我以爲仍是能夠接受的。 我這個方法還有個好處,就是能夠實現pc和移動端同時兼容。咱們能夠經過媒體查詢,重設根字體大小來實現兼容pc端,固然不是那麼好看。建議出圖的時候就出2套,經過nginx去判斷,跳轉,能夠參見我以前的博文經過userAgent切換訪問地址的3種方法nginx
@media screen and (min-width:768px) {
html {
font-size: 100px;
}
}
複製代碼
在個人實踐中,彈性盒如今已經兼容的很好了,尤爲是移動端上的IE---UC。 這樣的寫法在某些版本UC種,文字會偏下,建議直接使用彈性盒解決bash
/*某些UC中不兼容*/
p{
height:.2rem;
line-height:.2rem;
}
/*兼容性較好*/
p{
display:flex;
justify-content:center;
align-items:center;
}
複製代碼
經常使用的聖盃佈局,須要注意:從html開始檢查,元素須要有寬高。上部和底部須要設定固定高,中間flex:1;app
.wrap{
width:100%;
height:100%;
display:flex;
flex-direction: column;
justify-content: space-between
}
.top,.bottom{
height:1rem;
}
.middle{
flex:1;
}
複製代碼