• 父元素高度设置为min-height,子元素高度设置为100%,但实际上子元素高度你知道是多少吗?(2019-10-26更新)


    前言

    给父元素一个min-height,子元素设置height:100%。

    代码

    <!DOCTYPE html>
    <html>
    <head>
        <title></title>
        <style type="text/css">
        #div1{ 100%;min-height: 50px;background-color: yellow;}
        #sp1{ 20%;height: 100%;display: inline-block;background-color: blue;}
        #sp2{ 50%;height: 100%;display: inline-block;background-color: red;}
        </style>
    </head>
    <body>
    <div id="div1">
        <span id="sp1">aaa</span>
        <spanv id="sp2">bbb</span>
    </div>
    </body>
    </html>

    结果

    发现子元素高度并没有撑开,如下图:

    如果我们稍作改变,将父元素的min-height改为height,子元素高度就会撑开,如下图:

    剖析

    min-height表示盒子的最小高度,并不表示盒子的最终高度,站在外部盒子的角度理解是外部最终高度是由盒子的内部元素的高度与当前盒子的最小高度共同决定。
    在外部盒子等待内部元素计算出高度时并不知道自己的高度,内部盒子高度相对外部盒子设置高度时也未知外部高度,所以按照自己的内容的情况渲染了,最终的效果就是内部盒子高度与外部无关。

    结论

    子元素的 height 或是 min-height 百分比是否生效,基于父元素是否设置了固定高度或者是一个有效百分比高度,总结来说就是一个有效高度!!!
    参考:剖析height百分比和min-height百分比

    补充【2019-10-26】:

    对子元素设置决定定位也可行即position:absolute

    如果父元素的高度是auto,子元素的高度是百分比值,结果就是子元素的高度为0,原因同上,在进一步分析,规范中有提到:如果包含块的高度没有显示的指定(高度由内容决定),并且不是绝对定位元素,则计算值为auto,我们要知道高度和百分比值是没办法进行计算的!!!

    auto * 100/100 = NaN

  • 相关阅读:
    Trie树-0/1字典树-DFS-1624. 最大距离
    图-连通分量-DFS-749. 隔离病毒
    贪心-谷歌-857. 雇佣 K 名工人的最低成本
    图-搜索-DFS-51. N皇后
    图-连通分量-DFS-并查集-695. 岛屿的最大面积
    图-最小生成树-629. 最小生成树
    codeforces 493 D Vasya and Chess【 博弈 】
    POJ 2155 Matrix【 二维树状数组 】
    HDU 5273 Dylans loves sequence【 树状数组 】
    POJ 1195 Mobile phones【 二维树状数组 】
  • 原文地址:https://www.cnblogs.com/kunmomo/p/10600662.html
Copyright © 2020-2023  润新知