如何在给定高度之后而不是在视口高度之后在正文中设置 overflow:hidden?

how to set overflow:hidden in body after given height not after viewport height?

我有一个页面,我在其中将 <body> 的高度设置为 800px,但实际上内容超过了 800px

我希望 body 应该显示内容到 800px 之后内容应该隐藏但是问题是如果我在 body 中使用 overflow:hidden 它隐藏了视口之外的所有内容但是我的视口高度是678px 所以我希望滚动条最大为 800px。

这是我的代码

HTML

<div class="block">
</div>
<div class="block">
</div>
<div class="block">
</div>
<div class="block">
</div>
<div class="block">
</div>
<div class="block">
</div>
<div class="block">
</div>
<div class="block">
</div>
<div class="block">
</div>
<div class="block">
</div>
<div class="block">
</div>
<div class="block">
</div>
<div class="block">
</div>
<div class="block">
</div>

CSS

body{
    height: 800px;
    overflow: hidden;
}
.block{
    background: #000;
    height: 100px;
    width: 100%;
    margin-bottom: 10px;
}

这是有问题的 fiddle:https://jsfiddle.net/0b6g6886/

我认为它不适用于 body。尝试将所有块 div 放在一个包含 div 中,并针对此发送相同的样式。我更新了 fiddle 以向您展示

https://jsfiddle.net/0b6g6886/1/

.blocks {
  height: 800px;
  overflow: hidden;
  position: relative;
}

.block {
  background: #000;
  height: 100px;
  width: 100%;
  margin-bottom: 10px;
}



<div class="blocks">
  <div class="block">
  </div>
  <div class="block">
  </div>
  <div class="block">
  </div>
  <div class="block">
  </div>
  <div class="block">
  </div>
  <div class="block">
  </div>
  <div class="block">
  </div>
  <div class="block">
  </div>
  <div class="block">
  </div>
  <div class="block">
  </div>
  <div class="block">
  </div>
  <div class="block">
  </div>
  <div class="block">
 </div>

根据注释说 div 需要直接在 body 部分中,没有换行 div,这有点 hacky,但你可以玩这样的东西:

body:after {
  content:'';
  position:absolute;
  top:800px;
  left:0;
  width:100%;
  height:1000px;
  background:#fff;
}

这将用白色部分覆盖 divs,覆盖它。

或者使用 jQuery 在其周围添加 div(如果可以添加 jQuery):

$('body').prepend('<div class="blocks">');
$('body').append('</div>');

然后您就可以像上面那样设置样式了。

我认为您不能在 <body> 标签上执行此操作。

将所有内容包装在 'wrapper' div 中,它会如您所愿地工作:

https://jsfiddle.net/0b6g6886/

HTML:

<div class="wrapper">
  <div class="block"></div>
  <div class="block"></div>  
  <div class="block"></div>
  <div class="block"></div>
  <div class="block"></div>
  <div class="block"></div>
  <div class="block"></div>
  <div class="block"></div>
  <div class="block"></div>
  <div class="block"></div>
  <div class="block"></div>
  <div class="block"></div>
  <div class="block"></div>
  <div class="block"></div>
</div>

CSS:

.wrapper{
  height: 200px;
  overflow: hidden;
}
.block{
  background: #000;
  height: 100px;
  width: 100%;
  margin-bottom: 10px;
}

您需要在 body 标签内添加 DIV。给体内的 DIV 高度。

<!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Document</title>
        <style>
            .bod{
                   height: 800px;
                   overflow: scroll;

                }
                .block{
                    background: #000;
                    height: 100px;
                    width: 100%;
                    margin-bottom: 10px;
                }
        </style>
    </head>
    <body>
    <div class="bod">
        <div class="block"></div>
        <div class="block"></div>
        <div class="block"></div>
        <div class="block"></div>
        <div class="block"></div>
        <div class="block"></div>
        <div class="block"></div>
        <div class="block"></div>
        <div class="block"></div>
        <div class="block"></div>
        <div class="block"></div>
        <div class="block"></div>
        <div class="block"></div>
        <div class="block"></div>
        </div>
    </body>
    </html>