通常來講佈局咱們都是水平佈局,最多搞個垂直居中。並且對於一些 float 、 position 好像自己就不太適合垂直佈局。html
正好前段時間用 weex 作了一個頁面,weex 天生基於 flex 。且 weex 中 flex-direction
默認值爲 column
,flex-direction
定義了 flex 容器中 flex 成員項的排列方向。前端
頁面分爲三部分(header,section,footer),有一些優化的點:segmentfault
那麼咱們來看看有什麼方案能夠實現。瀏覽器
<div id="app"> <header> 我是頭部,我但願我無論大小屏幕都在最上面 </header> <section> <div>我是內容,我但願我在屏幕的中間顯示,我不但願我壓住其餘內容,我但願一屏能夠展現這個頁面</div> </section> <footer> 我是底部,我但願我能夠據底,若是屏幕超出了,我滑動可見。 </footer> </div>
先設置一下基礎條件 display: flex;flex-direction: column;
,由於瀏覽器默認是水平對齊。安全
而後咱們給盒子設置一下 min-height:500px
模擬一屏高度,正常能夠使用 min-height: 100vh
或者 html,body{height: 100%;}
。微信
地址:https://www.lilnong.top/static/html/flex-direction-column-sf.htmlweex
咱們能夠直接暴躁的設置兩端對齊 #app{justify-content: space-between;}
justify-content: space-between;
第一個沒有前padding,最後一個沒有後paddingjustify-content: space-around;
每個塊先後padding同樣大,也意味着相鄰之間是雙倍 paddingjustify-content: space-evenly;
每一個空白區域同樣大app
看上去是實現了,可是若是咱們還但願微調位置,那麼就很難搞(變大,而後設置 min-height
,容許縮小)。
地址:https://www.lilnong.top/static/html/flex-direction-column-sf.1.html佈局
flex
是什麼意思呢?是 flex-grow
(放大)、flex-shrink
(縮小)、flex-basis
(基準大小) 的縮寫。測試
那咱們能夠考慮用 section 撐開,而後內容垂直居中便可。
注意看這個方案和上一個方案的背景色就能看出差異,可是一樣不太好操做。
測試地址:https://www.lilnong.top/static/html/flex-direction-column-sf.2.html
基於上面的方案,咱們知道 flex 能夠自動放大和縮小,那麼咱們用他來作空白區域不就 OK 了?
地址: https://www.lilnong.top/static/html/flex-direction-column-sf.3.html
若是爲了讓下面的空白區域更大,咱們能夠給 flex-grow: 3;
更大的縮放區域
還有什麼方案呢?
歡迎你們關注個人公衆號。有疑問也能夠加個人微信前端交流羣。