[CSS]使用绝对定位属性来实现CSS内部子容器高度随着外部父容器高度变化而变化
2017-07-31 14:55
716 查看
测试demo 源代码:
现象1: 父容器存在min-height ,父容器高度使用position:absolute;来确定
缩放屏幕至div1的高度出现滚动条
正常浏览器下,div1,div2的高度都是400px(图1)
IE8中,div1是以min-height:400px显示的。div2 的高度等于屏幕的高度(图2)
![](http://img.blog.csdn.net/20170731144512782?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcWluZ3dlbnhpdXRvbmc=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
图1
![](http://img.blog.csdn.net/20170731144554714?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcWluZ3dlbnhpdXRvbmc=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
图2
现象2 修改div2的高度height为auto 时
div1仍然是以min-height来读取高度,div2 的高度为 0
![](http://img.blog.csdn.net/20170731144828060?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcWluZ3dlbnhpdXRvbmc=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
现象3
父容器存在min-height ,父容器高度使用position:relative;来设置,结果同现象2是一样的。
div2 正确显示时
css应该用position:absolute;来设置他的高度,如下代码
正解1
![](http://img.blog.csdn.net/20170731145420996?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcWluZ3dlbnhpdXRvbmc=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
总结:让子容器高度跟随外部父容器高度变化而变化,如果我们纯粹使用使用height:100%;或者height:auto;来定义内部容器自适应高度,貌似都无法实现让子容器高度随着外部父容器高度变化而变化,所以我们必需要使用position绝对定位属性来配合协助实现。
<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/> <meta name="renderer" content="webkit"/> <title></title> <style> html, body{ height:100%; padding:0; margin:0; } .div1{ position:absolute; top:0; right:0; left:0; bottom:0; min-height:400px; background:red; } .div2{ height:100%; /*e8下 div->b的高度并没有撑满整个div->a容器*/ background:#abb904; } </style> </head> <body> <div class="div1"> <div class="div2"></div> </div> </body> </html>
现象1: 父容器存在min-height ,父容器高度使用position:absolute;来确定
缩放屏幕至div1的高度出现滚动条
正常浏览器下,div1,div2的高度都是400px(图1)
IE8中,div1是以min-height:400px显示的。div2 的高度等于屏幕的高度(图2)
图1
图2
现象2 修改div2的高度height为auto 时
div1仍然是以min-height来读取高度,div2 的高度为 0
.div1{ position:absolute; top:0; right:0; left:0; bottom:0; min-height:400px; background:red; } .div2{ height:auto; background:green; }
现象3
父容器存在min-height ,父容器高度使用position:relative;来设置,结果同现象2是一样的。
.div1{ position:relative; min-height:400px; background:red; } .div2{ height:100%; background:#abb904; }
div2 正确显示时
css应该用position:absolute;来设置他的高度,如下代码
正解1
.div1{ position:absolute; top:0; right:0; left:0; bottom:0; min-height:400px; background:red; } .div2{ position:absolute; top:0; right:0; left:0; bottom:0; background:green; }正解2:
.a{ position:relative; min-height:400px; background:red; } .b{ position:absolute; top:0; right:0; left:0; bottom:0; background:#abb904; }
总结:让子容器高度跟随外部父容器高度变化而变化,如果我们纯粹使用使用height:100%;或者height:auto;来定义内部容器自适应高度,貌似都无法实现让子容器高度随着外部父容器高度变化而变化,所以我们必需要使用position绝对定位属性来配合协助实现。
相关文章推荐
- CSS实现子级窗口高度随低级窗口高度变化及js控制左右容器高度一致
- css基础 出现层叠的两个绝对定位元素 使用z-index属性设置层叠顺序
- CSS学习笔记:使用绝对定位实现横向两列布局
- css基础 出现层叠的两个绝对定位元素 使用z-index属性设置层叠顺序
- CSS让内部容器高度随着父容器高度变化的解决办法
- CSS 布局实例系列(四)如何实现容器中每一行的子容器数量随着浏览器宽度的变化而变化?
- div+css布局中父层div高度不随子div高度变化的解决方法(clear属性使用方法)
- CSS 布局_如何实现容器中每一行的子容器数量随着浏览器宽度的变化而变化?
- 使用CSS布局定位属性轻松实现优美站点布局
- 使用纯CSS实现未知尺寸的图片(但高宽都小于200px)在200px的正方形容器中水平和垂直居中。
- div+css基础——7.采用div定位技术对div进行排版(绝对定位,指定父容器)
- DIV+CSS处理DIV设置float后,父容器无法定位高度的问题解决
- css中绝对定位中的left和top属性
- div+css中设置了float属性后如何让外层的高度随着内层的高度大小自动调整
- CSS 绝对定位属性absolute用法初探
- 盘点8种CSS实现垂直居中水平居中的绝对定位居中技术
- div+css基础——6.采用div定位技术对div进行排版(绝对定位,不指定父容器)
- 通过使用绝对定位和相对定位,实现div底部对齐
- CSS之通过定位简单实现div绝对居中
- CSS布局浮动(float)和定位(position)属性的区别和使用