01-多個div垂直分布,其中有一個高度需要自適應手機高度

方案:flex布局

設為 Flex 布局以后,子元素的float、clear和vertical-align屬性將失效

html

<div class="play-template">
    <div class="top"></div>
    <div class="lrc"></div>
    <div class="slider"></div>
    <div class="bottom"></div>
</div>

css

思路:父控件充滿整個屏幕,第二部分的高度充滿屏幕的剩余間距,主要屬性
flex-grow 1
flex-grow 屬性決定了父元素在空間分配方向上還有剩余空間時,如何分配這些剩余空間。其值為一個權重(也稱擴張因子),默認為 0(純數值,無單位),剩余空間將會按照這個權重來分配。
flex-shrink 屬性定義空間不夠時各個元素如何收縮。其值默認為 1

.play-template
    position fixed
    margin 0px
    padding 0px
    width 100%
    height 100%
    display flex
    flex-direction column   //主軸方向
  .top
    height 70px
    background-color red
  .lrc
    flex-grow 1
    background-color blue
  .slider
    height 40px
    background-color red
  .bottom
    height 90px
    background-color blue

效果展示

57AB0E182C8BBB40F027321C2C5BDBB3.jpg

附:

flex-shrink 屬性定義空間不夠時各個元素如何收縮。其值默認為 1.
舉個例子:
父元素 500px。三個子元素分別設置為 150px,200px,300px。
三個子元素的 flex-shrink 的值分別為 1,2,3。
首先,計算子元素溢出多少:150 + 200 + 300 - 500 = -150px。
那這 -150px 將由三個元素的分別收縮一定的量來彌補。
具體的計算方式為:每個元素收縮的權重為其 flex-shrink 乘以其寬度。
所以總權重為 1 * 150 + 2 * 200 + 3 * 300 = 1450
三個元素分別收縮:

150 * 1(flex-shrink) * 150(width) / 1450 = -15.5
150 * 2(flex-shrink) * 200(width) / 1450 = -41.4
150 * 3(flex-shrink) * 300(width) / 1450 = -93.1

三個元素的最終寬度分別為:

150 - 15.5 = 134.5
200 - 41.4 = 158.6
300 - 93.1 = 206.9
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 移動開發基本知識點 一.使用rem作為單位 html { font-size: 100px; } @media(m...
    橫沖直撞666閱讀 3,507評論 0 6
  • H5移動端知識點總結 閱讀目錄 移動開發基本知識點 calc基本用法 box-sizing的理解及使用 理解dis...
    Mx勇閱讀 4,604評論 0 26
  • 前言 FlexBox是css3的一種新的布局方式,天生為解決布局問題而存在的它,比起傳統的布局方式,我們使用Fle...
    zevei閱讀 1,430評論 23 3
  • 前言 溫馨提示:本文較長,圖片較多,本來是想寫一篇 CSS 布局方式的,但是奈何 CSS 布局方式種類太多并且實現...
    sunshine小小倩閱讀 3,159評論 0 59
  • title: flex布局date: 2017-07-07 14:13:33tags: css筆記 flexbox...
    Gary23閱讀 1,548評論 0 0