父元素设置max-height,子元素高度设置百分比,子元素继承父元素高度失败

这篇具有很好参考价值的文章主要介绍了父元素设置max-height,子元素高度设置百分比,子元素继承父元素高度失败。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

需求描述:

小程序里碰到的,最外层page高度 100%,里边第一层盒子高度为 max-height: 60%; 第一层盒子里有 title,content,这个 content 高度要随着第一层盒子高度走,最高为第一层盒子的高度减去 title 的高度,如果高度超出第一层盒子高度了需要做滚动处理。

写了一个 html 模拟一下高度失效场景:就是继承 max-height 的 height 无效

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        *{
            padding: 0;
            margin: 0;
            line-height: 1;
            font-size: 14px;
        }
        .out{
            width: 380px;
            height: 580px;
            background: greenyellow;
            margin: 0 auto;
            margin-top: 20px;
        }
        .box{
            max-height: 60%;
            background: orangered;
        }
        .box-top{
            height: 32px;
            line-height: 32px;
            background: purple;
        }
        .box-list{
            height: calc(100% - 32px - 24px);
            /* height: 30%; */
            overflow: auto;
            box-sizing: border-box;
            padding: 12px;
            background: rgba(0,0,0,0.35);
        }
        .box-list-item{
            margin-bottom: 8px;
            background: rgba(233,233,233,0.75);
            line-height: 1.4;
            border-radius: 6px;
            box-sizing: border-box;
            padding: 8px;
        }
        .box-list-item:last-child{
            margin-bottom: 0px;
        }
        .box-btm{
            height: 24px;
            line-height: 24px;
            background: pink;
        }
    </style>
</head>
<body>
    <div class="out">
        <div class="box">
            <div class="box-top">top</div>
            <div class="box-list">
                <div class="box-list-item">Lorem ipsum dolor sit amet consectetur adipisicing elit. Hic quo corporis minus laudantium consectetur unde vero sunt perferendis impedit. Nulla quae atque eaque expedita tempore cupiditate reiciendis odio corrupti tenetur!</div>
                <div class="box-list-item">Lorem ipsum dolor sit, amet consectetur adipisicing elit. Suscipit illo, sint cupiditate quis quae in eius tempore aspernatur nostrum minima vero beatae id, iusto non quos nemo consequuntur veniam officia.</div>
                <div class="box-list-item">Lorem ipsum dolor sit amet consectetur adipisicing elit. In officia porro, consequuntur incidunt iusto eligendi expedita. In excepturi repellat libero quia sunt impedit vero alias cupiditate, temporibus, quod itaque mollitia?</div>
                <div class="box-list-item">Lorem ipsum, dolor sit amet consectetur adipisicing elit. Fugit sit quis, cumque numquam illo, delectus dolorum illum asperiores dolorem tenetur, facilis doloremque? Doloremque, ipsa ab. Veniam laudantium minima doloremque molestias!</div>
                <div class="box-list-item">Lorem ipsum dolor sit amet consectetur adipisicing elit. Quisquam quam pariatur a est ratione, deserunt voluptatum, rem obcaecati, molestias quas velit autem fuga veritatis? Quae quibusdam cumque impedit minima non.</div>
                <div class="box-list-item">Lorem ipsum dolor sit, amet consectetur adipisicing elit. Porro cumque aliquid delectus, aut voluptatum maxime perferendis nemo adipisci reprehenderit accusantium nisi doloribus iste, natus iure sit sint officiis debitis amet?</div>
            </div>
            <div class="box-btm">bottom</div>
        </div>
    </div>
</body>
</html>

父元素设置max-height,子元素高度设置百分比,子元素继承父元素高度失败
可以看到这个高度是没继承下来的,设置了百分比或者 calc 百分比计算也没用。

解决方案

利用 flex ,只需要加三行代码即可,甚至如果布局再简单一点,只需要加一行代码就可以

.box{
 max-height: 60%;
    background: orangered;
    
    /* 这里 start */
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    /* 这里 end*/

}

父元素设置max-height,子元素高度设置百分比,子元素继承父元素高度失败文章来源地址https://www.toymoban.com/news/detail-501535.html

完整代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        *{
            padding: 0;
            margin: 0;
            line-height: 1;
            font-size: 14px;
        }
        .out{
            width: 380px;
            height: 580px;
            background: greenyellow;
            margin: 0 auto;
            margin-top: 20px;
        }
        .box{
            max-height: 60%;
            background: orangered;
            
            /* 这里 start */
            display: flex;
            flex-direction: column;
            justify-content: space-between;
            /* 这里 end*/

        }
        .box-top{
            height: 32px;
            line-height: 32px;
            background: purple;
        }
        .box-list{
            height: calc(100% - 32px - 24px);
            /* height: 30%; */
            overflow: auto;
            box-sizing: border-box;
            padding: 12px;
            background: rgba(0,0,0,0.35);
        }
        .box-list-item{
            margin-bottom: 8px;
            background: rgba(233,233,233,0.75);
            line-height: 1.4;
            border-radius: 6px;
            box-sizing: border-box;
            padding: 8px;
        }
        .box-list-item:last-child{
            margin-bottom: 0px;
        }
        .box-btm{
            height: 24px;
            line-height: 24px;
            background: pink;
        }
    </style>
</head>
<body>
    <div class="out">
        <div class="box">
            <div class="box-top">top</div>
            <div class="box-list">
                <div class="box-list-item">Lorem ipsum dolor sit amet consectetur adipisicing elit. Hic quo corporis minus laudantium consectetur unde vero sunt perferendis impedit. Nulla quae atque eaque expedita tempore cupiditate reiciendis odio corrupti tenetur!</div>
                <div class="box-list-item">Lorem ipsum dolor sit, amet consectetur adipisicing elit. Suscipit illo, sint cupiditate quis quae in eius tempore aspernatur nostrum minima vero beatae id, iusto non quos nemo consequuntur veniam officia.</div>
                <div class="box-list-item">Lorem ipsum dolor sit amet consectetur adipisicing elit. In officia porro, consequuntur incidunt iusto eligendi expedita. In excepturi repellat libero quia sunt impedit vero alias cupiditate, temporibus, quod itaque mollitia?</div>
                <div class="box-list-item">Lorem ipsum, dolor sit amet consectetur adipisicing elit. Fugit sit quis, cumque numquam illo, delectus dolorum illum asperiores dolorem tenetur, facilis doloremque? Doloremque, ipsa ab. Veniam laudantium minima doloremque molestias!</div>
                <div class="box-list-item">Lorem ipsum dolor sit amet consectetur adipisicing elit. Quisquam quam pariatur a est ratione, deserunt voluptatum, rem obcaecati, molestias quas velit autem fuga veritatis? Quae quibusdam cumque impedit minima non.</div>
                <div class="box-list-item">Lorem ipsum dolor sit, amet consectetur adipisicing elit. Porro cumque aliquid delectus, aut voluptatum maxime perferendis nemo adipisci reprehenderit accusantium nisi doloribus iste, natus iure sit sint officiis debitis amet?</div>
            </div>
            <div class="box-btm">bottom</div>
        </div>
    </div>
</body>
</html>

到了这里,关于父元素设置max-height,子元素高度设置百分比,子元素继承父元素高度失败的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Element UI 使用 table 组件设置 el-table-column 宽度width为百分比无效的问题解决方案

    使用 Element el-table 组件时,给列 el-table-column 设置百分比 % 宽度无效( width=\\\"30%\\\" ) Vue中要将 el-table-column 的宽度设置成百分比的话,不能通过设置 width 来实现,而是要设置 min-width ,并且每一列都必须设置 min-width 。 el-table 组件会被 vue 解析成 html ,Vue直接把百分号去掉把数值当

    2023年04月08日
    浏览(89)
  • element-ui设置高度height属性与style属性设置的区别

    在 element-ui 表格中,可以通过 style 属性和 heigh t属性来设置表格的高度。这两种方式的区别如下: 使用 style 属性可以设置表格容器的样式,包括高度、宽度、边框等。例如: 这里将表格容器的高度设置为 300px ,表格的高度是固定的,如果表格内容高度超过了 300px ,不会出

    2024年02月07日
    浏览(48)
  • MYSQL 统计停车时长百分比

    2024年02月11日
    浏览(49)
  • Echarts 柱状图显示百分比

    要求:每个数值显示具体百分比,计算方式为: effect_cnt/total_cnt 数据结构为:{ \\\"dt\\\": \\\"20240110\\\", \\\"effect_cnt\\\": 725, \\\"total_cnt\\\": 1387, \\\"both_effect_cnt\\\": 912, \\\"green_cnt\\\": 650 }, 打印 formatter 的 params 里面只有 “effect_cnt” 的值,如果要进行计算,需要 params 里面包含 “total_cnt” 

    2024年01月20日
    浏览(39)
  • 【matplotlib 实战】--百分比柱状图

    百分比堆叠式柱状图 是一种特殊的柱状图,它的每根柱子是等长的,总额为100%。 柱子内部被分割为多个部分,高度由该部分占总体的百分比决定。 百分比堆叠式柱状图 不显示数据的“绝对数值”,而是显示“相对比例”。 但同时,它也仍然具有柱状图的固有功能,即“比

    2024年02月08日
    浏览(46)
  • 在视频中选定/截取部分区域画面,然后将左上角坐标百分比和选定区域宽高所占百分比传给后端

    在视频中选定部分区域,然后将左上角坐标百分比和选定区域宽高所占百分比传给后端 播放 flv 格式视频 点击“截取”按钮,将视频当前画面截取为一张图片并回显图片, 使用 Cropper 插件截取图片部分区域(可以获取到截取图片左上角点坐标和截取部分的宽高) cropperjs 参数

    2024年02月03日
    浏览(35)
  • (vue)多级表头且转为百分比显示

    2024年02月11日
    浏览(38)
  • 移动端布局之流式布局1(百分比布局)

    流式布局,就是百分比布局,也称非固定像素布局 通过盒子的宽度设置成百分比来根据屏幕的宽度来进行伸缩,不受固定像素的限制,内容向两侧填充 流式布局方式是移动web开发使用的比较常见的布局方式 max-width 最大宽度(max-height 最大高度) min-width 最小宽度(min-height

    2024年02月06日
    浏览(41)
  • 鸿蒙OS应用开发之百分比显示组件

    前面学习了动态加载的组件,在本文里将要学习百分比显示组件,这个组件可以把数据按百分比的情况进行图形显示出来。百分比图形显示还是很有用的,比如一个班里学生的成绩占比,还有软件项目开发进度的情况,还有软件下载进度等等。 在鸿蒙系统里定义这个组件接口

    2024年01月20日
    浏览(44)
  • 一文搞懂:viewpoint与rem、百分比、px

    ​一个表总结: 名称 定义 使用示例 viewpoint 是指用户在网页上实际可见和可交互的区域,通常指的是浏览器窗口或移动设备的屏幕尺寸。 width:100vw;height:100vh rem (root em)是相对于根元素(通常是 html 元素)的字体大小来计算的单位。 width:100rem;height:100rem 百分比 是

    2024年03月19日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包