利用height和min-height实现高度自适应

需要实现以下效果:

  • 子元素高度小于窗口高度时,父元素高度为窗口高度;
  • 子元素高度大于窗口高度时,父元素高度自适应,由子元素高度决定。

可以这样实现:

  1. 依据DOM结构逐层设置目标元素的所有父元素height="100%",直至根元素html,浏览器在渲染过程中会将窗口的实际高度值传递给html元素,然后再根据DOM结构逐层传递,由于height值不能继承,height="100%"也不能隔代传递,因此必须 逐层设置,此步骤中的height不能用min-height代替,因为min-height值无法向下传递。
  2. 设置目标元素min-height="100%",使目标元素的最小高度为窗口高度,当内容高度超过窗口高度时,目标元素高度则由内容高度确定,从而实现了高度自适应。此步骤中的min-height不能用height代替,否则当内容高度超过窗口高度时,会出现内容溢出。如图:

  3. 该方法可结合flex创建高度自适应布局。

DOM:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>try</title>
        <link rel="stylesheet" href="try.css">
    </head>
    <body>
        <div id="outer">
            <div id="inner">
                <p>文本高度可自行调整</p>
            </div>
        </main>
    </body>
</html>

CSS:

html {
    height: 100%;
}

body {
    height: 100%;
}

#outer {
    height: 100%;
}

#inner {
    height: 100%;
}

p {
    width: 300px;
    min-height: 100%;
    background-color: aqua;
}

--内容自己瞎琢磨的,如有纰漏,请不吝赐教。

原文地址:https://www.cnblogs.com/lixiang12/p/10611531.html

时间: 2024-08-01 05:50:01

利用height和min-height实现高度自适应的相关文章

div高度自适应的问题

对象height:100%并不能直接产生效果,是因为跟其父对象有关. #center{height:100%;} 上面的css样式是无效的,不会产生任何效果. 需要改写: html,body{ margin:0px; height:100%;}#center{width:200px;height:100%;background-color:#666666;border:1px solid red;} 对#center对象设置了height:100%,同时设置了html与body的height:1

CSS高度自适应 height:100%;

在初次尝试高度自适应时都会遇到这样的问题: 对象的heith:100%; 并不能直接产生实际效果 为什么呢?之所以没有效果,与浏览器的解析方式有一定关系,查看下面代码 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>一列布局</title> <style> html, body { margin: 0; padding: 0; wi

jqeury height()获取高度自适应div高度有关问题

问题记录: http://www.myexception.cn/javascript/1169489.html jqeury height()获取高度自适应div高度问题1.div写在页面上,用js给他填充内容之后,然后.height()获取他的高度,不管怎么样取到的高度都是页面上原来没有填充内容之前的div的高度(我没有给div设置高度)2.如果给div设置一个min-height,这样不管div高度怎么变化,取到的高度都是min-height的值 问题:那div高度自适应,有没有办法取得高度

div高度自适应(总结:min-height:100px; height:auto;的用法)

对于div高度自适应问题,我总是用一句话:height:auto来解决. 但是很多时候我们需要的是当div内部有内容时,高度会随着内容的增加和增加,当div中没有内容时,div能够保持一个固定的高度. 具体可以用以下方法解决: height:auto !important; min-height:100px; height:100px; 详细讲解参见:总结:min-height:100px; height:auto;的用法

解决Iframe跨域高度自适应,利用window.postMessage()实现跨域消息传递页面高度(JavaScript)

在iframe跨域引用高度自适应这块写的js方式都试了不管用,最终使用的是window.postMessage() 跨域获取高度 传递信息 1.首先,在主页面上使用iframe引入子页面:也就是A.html页面引入B.html页面,下面看看A.html <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> </head>

利用padding-top/padding-bottom百分比,进行占位和高度自适应

在css里面,padding-top,padding-bottom,margin-top,margin-bottom取值为百分比的时候,参照的是父元素的宽度. 比如:父元素宽度是100px, 子元素padding-top:50%,那么padding-top的实际值就是100*50%=50px 这个小小的知识点,其实有很大的用处,应用也很广泛,就是进行提前占位,避免资源加载时候的闪烁,还可以让高度自适应. 举例: 一般来说,想要自适应屏幕大小,我们设置元素的宽度自适应是完全没有问题的,比如希望一行

利用padding-top/padding-bottom百分比OA幸运飞艇平台,进行占位和高度自适应

在css里面,padding-top,padding-bottom,margin-top,margin-bottom取值为百分比的时候,参照的是父元素的宽度. 比如:父元素宽度是100px, 子元素padding-top:50%,那么padding-top的实际值就是100*50%=50px 这个小小的知识点,其实有很大的用处,应用也很广泛,就是进行提前占位,避免资源加载时候的闪烁,还可以让高度自适应. 举例: 一般来说,想要自适应屏幕大小,我们设置元素的宽度自适应是完全没有问题的,比如希望一行

input高度自适应。

转载:http://www.xuanfengge.com/textarea-on-how-to-achieve-a-high-degree-of-adaptive.html 今天需要些一个回复评论的页面,设计师给的初始界面就是一个只有一行的框.然后当时就想这个交互该怎么实现比较好,然后想起了新浪微博的做法:点击评论,默认显示一行,当输入的文字超过一行或者输入Enter时,输入框的高度会随着改变,直到输入完毕.顿时觉得这个细节做得挺不错的,可以效仿下.下面分享2种实现textarea高度自适应的做

textarea如何实现高度自适应?

转自:http://www.xuanfengge.com/textarea-on-how-to-achieve-a-high-degree-of-adaptive.html 今天需要些一个回复评论的页面,设计师给的初始界面就是一个只有一行的框.然后当时就想这个交互该怎么实现比较好,然后想起了新浪微博的做法:点击评论,默认显示一行,当输入的文字超过一行或者输入Enter时,输入框的高度会随着改变,直到输入完毕.顿时觉得这个细节做得挺不错的,可以效仿下.下面分享2种实现textarea高度自适应的做