【CSS】IE8 中 height 与 min

测试demo 源代码:

1<!DOCTYPE html> 2<html lang="zh-CN"> 3<head> 4    <meta charset="UTF-8"> 5    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/> 6    <meta name="renderer" content="webkit"/> 7    <title></title> 8    <style> 9        html, 10        body{ 11            height:100%; 12            padding:0; 13            margin:0; 14        } 15        .div1{ 16            background:red; 17            width:500px; 18 19            height:80%; 20            min-height:300px; 21            overflow:visible; 22        } 23        .div2{ 24            background:blue; 25            width:300px; 26 27            height:100%; 28        } 29    </style> 30</head> 31<body> 32    <div class="div1"> 33        <div class="div2"></div> 34    </div> 35</body> 36</html>

关键代码:

 

  demo 中,div1 包含 div2,div1 的样式中同时定义了 height 和 min-height。效果如下图:

 

- 浏览器高度为 500 时,500 * 80% = 400 > min-height : 300,div1 高 = 400

- 浏览器高度为 320 时,320 * 80% = 256 < min-height : 300,div1 高 = 300

  代码中有一段用绿色边框标记的代码:overflow : visible,你可以尝试将其修改"auto"或"hidden",之后在 IE8 中查看 demo,效果会发生变化:

 

- 浏览器高度为 500 时,500 * 80% = 400 > min-height : 300,div1 高 = 400

- 浏览器高度为 320 时,320 * 80% = 256 < min-height : 300,div1 高 = 300,div1 高 = 300,但是 div2 高 = 256 = 320 * 80%。div2 在计算高度时使用了 div1 的height,而不是 min-height。

造成这种现象的原因应该是 ie8 的自身 bug。

【解决方法】

  第一种:在这种应用场景中,避免将 div1 的 overflow 设为 visible 以外的值。

  第二种:避免 div2 的高度通过 div1 的高度计算(比如: position:absolute;top:0;left:0 来达到类似 height:100% 的效果)

ps:

1 经过测试,max-height也会发生同样的现象,当 height 超过 max-height 时,div2 的高度会根据 height 计算而非 max-height。暂未找到合适的解决方法,好在这种使用场景似乎并不常见。

2 同时定义 width 和 min-width/ max-width 显示正常。

参考:bug记录:IE8,包含块min-height/height共存时的高度计算bug

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )

【CSS】IE8 中 height 与 min - HelloWorld