简体   繁体   中英

Filling up remaining height with CSS flexbox

I have a scenario as follow, where i have div with content 1, div with content 2, and a image that takes 100% width (height varies). What i want to achieve is to fit div 1 on top, the image on bottom and remaining with content 2. Do note that all 3 should be fit perfectly into the device view.

I know that using flexbox could help me acheiving above, but i am not sure how to implement it.

Note that i am expecting a pure css solution.

Plunker: Click here

<ion-view title="Welcome">
  <ion-content has-header="true" style="display: flex; flex-flow: column;">
    <div style="height: 100%">
      <div style="background-color: red;">
        Content 1 (height based on content)
      </div>
      <div style="background-color: blue; flex: 2;">
        Content 2 (remaining height)
      </div>
      <div>
        <img style="width: 100%;" src="http://dummyimage.com/600x400/000/fff" />
      </div>
    </div>
  </ion-content>
</ion-view>

在此处输入图片说明

You should remove <div style="height: 100%"> to make the flexbox layout to work, otherwise that div would be the only flex item, then set height: 100vh; on <ion-content> .

Or, set that div as the flex container directly if you can't remove it, again need to define the height too. Another option would be nested flexbox layout but seems it won't be necessary.

jsFiddle

<ion-view title="Welcome">
  <ion-content has-header="true" style="display: flex; flex-flow: column; height: 100vh;">
    <div style="background-color: red;">
      Content 1 (height based on content)
    </div>
    <div style="background-color: blue; flex: 1;">
      Content 2 (remaining height)
    </div>
    <div>
      <img style="width: 100%;" src="http://dummyimage.com/600x400/000/fff" />
    </div>
  </ion-content>
</ion-view>

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM