为什么不高度:100%工作将div扩展到屏幕高度?

Ear*_*son 264 html css height

我希望旋转木马DIV(s7)扩展到整个屏幕的高度.我不知道它为什么没有成功.要查看该页面,您可以访问此处.

body {
  height: 100%;
  color: #FFF;
  font: normal 28px/28px'HelveticaWorldRegular', Helvetica, Arial, Sans-Serif;
  background: #222 url('') no-repeat center center fixed;
  overflow: hidden;
  background-size: cover;
  margin: 0;
  padding: 0;
}
.holder {
  height: 100%;
  margin: auto;
}
#s7 {
  width: 100%;
  height: 100%: margin: auto;
  overflow: hidden;
  z-index: 1;
}
#s7 #posts {
  width: 100%;
  min-height: 100%;
  color: #FFF;
  font-size: 13px;
  text-align: left;
  line-height: 16px;
  margin: auto;
  background: #AAA;
}
Run Code Online (Sandbox Code Playgroud)
<div class="nav">
  <a class="prev2" id="prev2" href="#">
    <img src="http://static.tumblr.com/ux4v5bf/ASslogxz4/left.png">
  </a>
  <a class="next2" id="next2" href="#">
    <img src="http://static.tumblr.com/ux4v5bf/swslogxmg/right.png">
  </a>
</div>

<div class="holder">
  <tr>
    <td>
      <div id="s7">
        {block:Posts}
        <div id="posts">
Run Code Online (Sandbox Code Playgroud)

Mad*_*iha 368

为了使百分比值适用于身高,必须确定父亲的身高.唯一的例外是元素<html>,它可以是百分比高度..

所以,除了你之外,你已经给出了所有元素的高度<html>,所以你应该做的就是添加:

html {
    height: 100%;
}
Run Code Online (Sandbox Code Playgroud)

你的代码应该可以正常工作.

* { padding: 0; margin: 0; }
html, body, #fullheight {
    min-height: 100% !important;
    height: 100%;
}
#fullheight {
    width: 250px;
    background: blue;
}
Run Code Online (Sandbox Code Playgroud)
<div id=fullheight>
  Lorem Ipsum        
</div>
Run Code Online (Sandbox Code Playgroud)

JsFiddle的例子.

  • @Joey:HTML*是一个实际的元素.您可以使用CSS对其进行样式化,在JavaScript中将事件挂钩,向其中添加类和ID,并将其显示在DOM中.即使没有`<html>`标签,浏览器也会假设一个HTML文档,甚至没有`<head>`或`<body>`元素.但是HTML规范认为`<html>`标签是强制性的.简而言之,是的,它像所有其他HTML元素一样是一个成熟的元素. (24认同)
  • 好的,所以这可能让我看起来非常愚蠢,但_whatever_:你的意思是说`<html>`是一个_actual_元素 - 就像`<p>`或`<img rel="nofollow noreferrer" />`?我认为`<html>`的唯一目的是定义HTML文档的开头和结尾.我的意思是,我认为它存在,而不是布局,但只是因此浏览器知道它正在查看的whar类型的文档?我完全被人惊呆了. (21认同)
  • @SecondRikudo:不,根据规范(例如 HTML4 和 HTML5),`&lt;html&gt;` 标签是可选的。是的,无论如何都会创建元素。 (3认同)
  • 嗯...对我来说,唯一的方法是将'html`和`body`设置为`height:100%`(当然还有具体的`div`我要继承100%的高度) (2认同)

Jos*_*ier 133

既然没人提到这个......

现代方法:

作为将html/ bodyelement的高度设置为的替代方法100%,您还可以使用视口百分比长度:

5.1.2.视口百分比长度:'vw','vh','vmin','vmax'单位

视口百分比长度相对于初始包含块的大小.当初始包含块的高度或宽度改变时,它们相应地缩放.

在这种情况下,您可以使用该值100vh(视口的高度) - (示例)

body {
    height: 100vh;
}
Run Code Online (Sandbox Code Playgroud)

设置min-height也有效.(例)

body {
    min-height: 100vh;
}
Run Code Online (Sandbox Code Playgroud)

大多数现代浏览器都支持这些单元 - 可在此处找到支持.

  • @RobertWent有好处.例如,`height:100%`仅在父元素具有定义的高度时才有效.在某些情况下,元素的父级没有定义的高度,视口百分比单位可以解决这个问题.换句话说,如果你有一个深层嵌套的元素,你可以简单地设置`100vh`,它的浏览器高度为'100%`.*您*可能看不到任何好处,但我遇到过很多情况,他们是唯一的解决方案.这些单元可能不会对诸如`html` /`body`之类的根元素有益,但尽管如此,这是另一种选择. (11认同)
  • 但是,我们谈论的是身体元素,而不是深层嵌套的元素。只有一个可能的父元素html元素。这就是为什么我提到我看不到任何好处,而且可能比设置100%更糟。您的评论并没有使我变瘦。仅仅因为新事物并不能使它变得更好。但是,这是另一种选择。 (2认同)
  • 这种方法的一个问题是iPhone从视图高度中排除了地址栏和底部导航,这意味着`body {height:100vh}`将在初始页面加载时有一个滚动条. (2认同)
  • 好的。我尝试了另一种方法,我将 `height: 100% !important" 放到每个父级直到 `html` 没有成功,我可以在 dom 中看到树的每个节点实际上是 `100%` 但我无法管理在所需元素中设置 100%,但使用视口样式很容易 (2认同)

sha*_*hat 24

您还需要在html元素上设置100%的高度:

html { height:100%; }
Run Code Online (Sandbox Code Playgroud)


Ste*_*ber 20

或者,如果你使用position: absolute那么height: 100%将工作得很好.

  • 如果我不使用flexbox来创建我的布局,那将是一个很好的修复.:/ (4认同)
  • 不要忘记设置“ width:100%;”和父项“ position:relative;”。 (2认同)

HQt*_*izy 7

你应该尝试使用父元素;

html, body, form, main {
    height: 100%;
}
Run Code Online (Sandbox Code Playgroud)

那就足够了:

#s7 {
   height: 100%;
}
Run Code Online (Sandbox Code Playgroud)


小智 5

例如,如果您想要左列(高度100%)和内容(高度自动),则可以使用absolute:

#left_column {
    float:left;
    position: absolute;
    max-height:100%;
    height:auto !important;
    height: 100%;
    overflow: hidden;

    width : 180px; /* for example */
}

#left_column div {
    height: 2000px;
}

#right_column {
    float:left;
    height:100%;
    margin-left : 180px; /* left column's width */
}
Run Code Online (Sandbox Code Playgroud)

在html中:

  <div id="content">
      <div id="left_column">
        my navigation content
        <div></div>
      </div>

      <div id="right_column">
        my content
      </div>
   </div>
Run Code Online (Sandbox Code Playgroud)