How can you set the height of an outer div to always be equal to a particular inner div?

后端 未结 2 1901
温柔的废话
温柔的废话 2020-11-22 04:41

I have an outer div which contains three inner divs.

I want the left-most inner div to always determine the height of the outer div. If the other in

2条回答
  •  悲&欢浪女
    2020-11-22 05:43

    An idea is to make some of the content out of the flow using absolute position so it won't have any impact on the height and then use flexbox for the main layout:

    .container {
      display: flex;
      border: 1px solid;
      padding: 5px;
      box-sizing: border-box;
    }
    
    .container>div {
      flex: 1;
      margin: 5px;
      border: 1px solid;
      box-sizing: border-box;
    }
    div.inner {
      border-color:red;
    }
    
    .inner-alt {
      position: relative;
      overflow: auto;
    }
    
    .inner-alt>div {
      position: absolute;
      top: 0;
      right: 0;
      left: 0;
      bottom: 0;
    }
    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec dignissim ipsum orci,
    ut volutpat ligula finibus a. Maecenas ut pharetra ante. Nunc volutpat est eu odio vestibulum, eget bibendum risus commodo. Nullam tristique nibh sed iaculis vulputate. Vivamus ac tincidu
    eget bibendum risus commodo. Nullam tristique nibh sed iaculis vulputate. Vivamus ac tincidu
    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec dignissim ipsum orci, io vestibulum, eget bibendum risus commodo. Nullam tristique nibh sed iaculis vulputate
    ut volutpat ligula finibus a. Maecenas ut pharetra ante. Nunc volutpat est eu odio vestibulum, eget bibendum risus commodo. Nullam tristique nibh sed iaculis vulputate. Vivamus ac tincidu
    eget bibendum risus commodo. Nullam tristique nibh sed iaculis vulputate. Vivamus ac tincidu
    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec dignissim ipsum orci, io vestibulum, eget bibendum risus commodo. Nullam tristique nibh sed iaculis vulputate , eget bibendum risus commodo. Nullam tristique nibh sed iaculis vulputate
    ut volutpat ligula finibus a. Maecenas ut pharetra ante. Nunc volutpat est eu odio vestibulum, eget bibendum risus commodo. Nullam tristique nibh sed iaculis vulputate. Vivamus ac tincidu
    eget bibendum risus commodo. Nullam tristique nibh sed iaculis vulputate. Vivamus ac tincidu

    Here is another trick using height:0;min-height:100%

    .container {
      display: flex;
      border: 1px solid;
      padding: 5px;
      box-sizing: border-box;
    }
    
    .container>div {
      flex: 1;
      margin: 5px;
      border: 1px solid;
      box-sizing: border-box;
    }
    div.inner {
      border-color:red;
    }
    
    .inner-alt {
      position: relative;
      overflow:auto;
    }
    
    .inner-alt>div {
      height:0;
      min-height:100%;
    }
    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec dignissim ipsum orci,
    ut volutpat ligula finibus a. Maecenas ut pharetra ante. Nunc volutpat est eu odio vestibulum, eget bibendum risus commodo. Nullam tristique nibh sed iaculis vulputate. Vivamus ac tincidu
    eget bibendum risus commodo. Nullam tristique nibh sed iaculis vulputate. Vivamus ac tincidu
    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec dignissim ipsum orci, io vestibulum, eget bibendum risus commodo. Nullam tristique nibh sed iaculis vulputate
    ut volutpat ligula finibus a. Maecenas ut pharetra ante. Nunc volutpat est eu odio vestibulum, eget bibendum risus commodo. Nullam tristique nibh sed iaculis vulputate. Vivamus ac tincidu
    eget bibendum risus commodo. Nullam tristique nibh sed iaculis vulputate. Vivamus ac tincidu
    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec dignissim ipsum orci, io vestibulum, eget bibendum risus commodo. Nullam tristique nibh sed iaculis vulputate , eget bibendum risus commodo. Nullam tristique nibh sed iaculis vulputate
    ut volutpat ligula finibus a. Maecenas ut pharetra ante. Nunc volutpat est eu odio vestibulum, eget bibendum risus commodo. Nullam tristique nibh sed iaculis vulputate. Vivamus ac tincidu
    eget bibendum risus commodo. Nullam tristique nibh sed iaculis vulputate. Vivamus ac tincidu

    The same idea as above without extra wrapper and using CSS grid:

    .container {
      display: grid;
      grid-template-columns:1fr 1fr 1fr;
      grid-gap:10px;
      border: 1px solid;
      padding: 10px;
      box-sizing: border-box;
    }
    
    .container>div {
      border: 1px solid;
      box-sizing: border-box;
    }
    div.inner {
      border-color:red;
    }
    
    .inner-alt {
      overflow:auto;
      height:0;
      min-height:100%;
    }
    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec dignissim ipsum orci,
    ut volutpat ligula finibus a. Maecenas ut pharetra ante. Nunc volutpat est eu odio vestibulum, eget bibendum risus commodo. Nullam tristique nibh sed iaculis vulputate. Vivamus ac tincidu
    eget ibendum risus commodo. Nullam tristique nibh sed iaculis vulputate. Vivamus ac tincidu
    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec dignissim ipsum orci, io vestibulum, eget bibendum risus commodo. Nullam tristique nibh sed iaculis vulputate
    ut volutpat ligula finibus a. Maecenas ut pharetra ante. Nunc volutpat est eu odio vestibulum, eget bibendum risus commodo. Nullam tristique nibh sed iaculis vulputate. Vivamus ac tincidu
    eget bibendum risus commodo. Nullam tristique nibh sed iaculis vulputate. Vivamus ac tincidu
    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec dignissim ipsum orci, io vestibulum, eget bibendum risus commodo. Nullam tristique nibh sed iaculis vulputate , eget bibendum risus commodo. Nullam tristique nibh sed iaculis vulputate
    ut volutpat ligula finibus a. Maecenas ut pharetra ante. Nunc volutpat est eu odio vestibulum, eget bibendum risus commodo. Nullam tristique nibh sed iaculis vulputate. Vivamus ac tincidu
    eget bibendum risus commodo. Nullam tristique nibh sed iaculis vulputate. Vivamus ac tincidu

提交回复
热议问题