height与min-height的百分比问题和铺满屏幕的布局方法

1.height的百分比

当我们给块元素设置百分比高度时,往往没能看到效果.因为百分比的大小是相对其最近的父级元素的高的大小,也就是说,其最近的父级元素应该有一个明确的高度值才能使其百分比高度生效.

<div id="container1">
    <div id="wrap">
        wrap‘s height work
    </div>
</div>
<br>
<div id="container2">
    <div id="wrap2">
        wrap2‘s height doesn‘t work
    </div>
</div>
#container1 {
  height: 100px;
  background-color: red;
}
#wrap {
  height: 50%;
  background-color: green;
}

#container2 {
}

#wrap2 {

/*该height属性无效,因为其父元素没有一个明确的高度*/
height: 50%;
background-color: green;
}

子元素的百分比高度也可以基于父元素的百分比高度,前提是父元素的父元素必须有一个明确的高度:

<div id="#container">
    <div id="wrap">
      <div id="content">
        content‘s percent height work only when does the wrap‘height work
     </div>
   </div>
</div>
#container {
  height: 500px;
}

#wrap {
  height: 100%;
}

#content {
  height: 50%;
}

但是,我们应该尽量避免这种多层百分比高度嵌套的风格.

2.min-height的百分比

再说说min-height吧.设置min-height的元素即使内容的高度很少时也能撑开到min-height设置的高度;当内容的高度大于min-height时就设置为内容的高度.

要使min-height的百分比值生效,其父元素的height值必须为一个固定的高度或者是一个有效的百分比高度.

值得注意的是,父元素设置了有效的min-height但没有设置height属性时,子元素的height和min-height的百分比不会生效.因为设置height和min-height必须基于一个设置了固定高度或者是一个有效百分比高度的父元素.

<div id="container1">
    <div id="wrap">
        wrap‘s min-height work
    </div>
</div>
<br>
<div id="container2">
    <div id="wrap2">
        wrap2‘s min-height doesn‘t work
    </div>
</div>
#container1 {
            height: 100px;
            background-color: red;
        }
        #wrap {
            /*该min-height生效,因为其父元素设置了有效height属性*/
            min-height: 50%;
            background-color: green;
        }

        #container2 {
            min-height: 100px;
        }

        #wrap2 {
            /*该min-height无效,因为其父元素没有设置有效的height属性(即使设置了min-height属性)*/
            min-height: 50%;
            }

3.铺满屏幕的布局方法

我们可以通过设置html和body的高度来填满整个浏览器屏幕的高度:

html {
  height: 100%;
}

body {
  min-height: 100%;
}

如果我们将html和body都设置为height: 100%时,body的高度仅会被设置为浏览器屏幕的高度.当body里的内容高度大于浏览器屏幕高度时,会因为默认的设置overflow:visible使得高出的部分被隐藏起来.

如果我们将html和body都设置为min-height: 100%时,body元素不会扩展到浏览器屏幕的高度,因为html设置为百分比值的height不会生效(因为html没有父元素了,也就不会符合父元素有明确的高度值的条件),body元素也就因为html没有一个明确的高度使得min-height不会生效.

4.布满屏幕的凝胶状布局

如果你想实现一种铺满屏幕,两边留空的凝胶状布局的话,可以使用如下方式

<html>
<body>
    <div id="container">

    </div>
</body>
</html>
html,body{
            /*将height设置为100%,使得内容铺满屏幕*/
            /*且#container有高度基于的父元素*/
            height: 100%;
            background-color: #dddddd;
        }

        #container {
            /*即使内容很少,也能铺满整个屏幕*/
            /*当内容高度大于屏幕高度时,内容会延伸*/
            min-height: 100%;
            background-color: #ffffff;
            width: 500px;
            margin-left: auto;
            margin-right: auto;
        }

效果:

时间: 2024-12-10 07:52:08

height与min-height的百分比问题和铺满屏幕的布局方法的相关文章

height:100%和height:auto的区别

一直不明白height:100%和height:auto的区别,最近在制作前端页面时都用了height:100%;overflow:hidden; ,可是有些浏览器出现莫名的奇妙的问题,但换成height:auto就好了,百度过这个问题,却一直没有细看. 今天又浮现了同样的问题,百度细看和群里的朋友指点,终于明白其中的道理,记录一下. height:auto,是指根据块内内容自动调节高度.height:100%,是指其相对父块高度而定义的高度,也就是按照离它最近且有定义高度的父层的高度来定义高度

height:100%与height:inherit的区别

一.兼容性 首先,inherit这个属性只是在ie8+才支持:100%支持ie6: 二.大多数情况下没有区别 在正常情况下height:100%与height:inherit没有任何区别: 1.父元素:height:auto:height:100%与inherit也都是auto: 2.父元素定高:height:100px; height:100%与inherit也都是100px: 三.绝对定位情况下大不同 如果子元素为绝对定位元素,则height:100%:参考的父级是离它最近的有定位属性的父级

$(document).height()、$(&quot;body&quot;).height()、$(window).height()区别和联系

前言:在此以高度为示例,宽度问题可类推.在移动端开发中,经常遇到需要把一块内容定位于底部的情况,当页面内容不满一屏时,需要设为fixed,而超过 一屏时,需要设为static随页面顶到底部,此时就需要通过判断$(document).height()和$(window).height()的大 小来区分内容是否超屏. $(document):整个文档 $("body"):body $(window):视口(有设doctype的前提下) 1).页面内容大于视口(浏览器窗口)时:$(docum

网页上弹出pop窗口实例,(document).height()与$(window).height()的区别

#dvbg{background-color:#666666; position:absolute; z-index:99; left:0; top:0; display:none; width:100%; height:1000px;opacity:0.5;filter: alpha(opacity=50);-moz-opacity: 0.5;}        #dvpop{position:absolute;display:none;width:auto; height:auto; z-in

$(document).height 与$(window).height的区别

$(document).scrollTop() 获取垂直滚动的距离 (即当前滚动的地方的窗口顶端到整个页面顶端的距离)$(document).scrollLeft() 这是获取水平滚动条的距离 要获取顶端 只需要获取到scrollTop()==0的时候 就是顶端了 要获取底端 只要获取scrollTop()>=$(document).height()-$(window).height() 就可以知道已经滚动到底端了 注意:$(window).height() 和 $(document).heig

div height 自适应高度 占满剩余高度的方法

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> html, body { margin: 0; padding: 0; height: 100%; } .if-top { display: block; border: none; width: 10

(document).height()与$(window).height()的区别,以及如何判断滚动条是否触顶或触底

jQuery(window).height()代表了当前可见区域的大小,而jQuery(document).height()则代表了整个文档的高度,可视具体情况使用. 注意当浏览器窗口大小改变时(如最大化或拉大窗口后) jQuery(window).height() 随之改变,但是jQuery(document).height()是不变的. $(document).scrollTop() 获取垂直滚动的距离 即当前滚动的地方的窗口顶端到整个页面顶端的距离$(document).scrollLef

(document).height()与$(window).height()

jQuery(window).height()代表了当前可见区域的大小,而jQuery(document).height()则代表了整个文档的高度,可视具体情况使用. 注意当浏览器窗口大小改变时(如最大化或拉大窗口后) jQuery(window).height() 随之改变,但是jQuery(document).height()是不变的. $(document).scrollTop() 获取垂直滚动的距离 即当前滚动的地方的窗口顶端到整个页面顶端的距离$(document).scrollLef

CSS百分比padding实现比例固定图片自适应布局 (转载)

一.CSS百分比padding都是相对宽度计算的 在默认的水平文档流方向下,CSS margin和padding属性的垂直方向的百分比值都是相对于宽度计算的,这个和top, bottom等属性的百分比值不一样. 这么设计的原因在我的新书(应该不出几个月就要出版了)中会有说明,这里不展开. 对于padding属性而言,任意方向的百分比padding都现对于宽度计算可以让我们轻松实现固定比例的块级容器,举个例子,假设现在有个<div>元素: div { padding: 50%; } 或者: di