代码之家  ›  专栏  ›  技术社区  ›  John Smith

如何获得高度等于自由空间2/3的布局

  •  -5
  • John Smith  · 技术社区  · 6 年前

    如何在CSS中实现这样的布局:

    • 第一层具有可变内容。
    • 该层下必须有约66%的剩余自由空间(高度)。
    • 最后是一个覆盖剩余自由空间的层。

    该决议应处理IE11。

    • 从IE网格模块的原因来看并不是一个解决方案。
    • 从原因上讲,对可变内容的第一层进行相对和绝对属性的定位也不是一个好主意。

    问题是计算第一层下自由空间的高度。

    看起来唯一的解决方案是一个全新的css模块“flex”,但我没有达到理想的效果。 有可能吗 ?

    Expected result

    1 回复  |  直到 6 年前
        1
  •  1
  •   Keydose    6 年前

    页面内容被限制在100%的可视区域内,可变内容可以随意给定,剩下的空间只会占用剩下的部分。剩下的空间被分成三分之二的一个div和三分之一的另一个div(分别为66.6%和33.3%)——我对它们进行了颜色编码,以便您可以清楚地看到它们。

    我希望这能有所帮助,我也理解你可能试图自己解决这个问题,但只是没有把它包括在你的问题中,只是试着更深入地证明你已经尽了很大努力来找到自己的答案,因为这是网站的一般礼仪:)

    body { margin: 0; }
    
    #page-contents { height: 100vh; display: flex; flex-direction: column; }
    #page-contents #variable-content { padding: 15px; background: red; color: white; flex: 0 1 auto; }
    
    #page-contents #remaining-space { flex: 0 1 100%; background: blue; display: flex; flex-direction: column; }
    
    #page-contents #remaining-space #two-thirds { flex: 0 0 66.6666%; background: yellow; }
    #page-contents #remaining-space #one-third { flex: 0 0 33.3333%; background: orange; }
    <div id="page-contents">
      <div id="variable-content">
        <p>Hi my name is Michael</p>
      </div>
      <div id="remaining-space">
        <div id="two-thirds">
        </div>
        <div id="one-third">
        </div>
      </div>
    </div>

    谢谢 迈克尔