html - width大于100vw出现垂直滚动条

标签 html css

<分区>

我想做的是创建几个水平对齐的彩色框。

<div class="outer">
  <div class="bg bg1">
  </div>
  <div class="bg bg2">
  </div>
  <div class="bg bg3">
  </div>
  <div class="bg bg4">
  </div>
</div>

--> complete code on Codepen


几个事实:

  1. 外部的位置:相对
  2. bg 的位置:绝对
  3. left bg1 到 bg4 不同

如果我将“outer”的宽度设置为 100vw,一切都会好起来的。

但是如果它大于100vw,例如101vw,就会有一点额外的空间我可以向下滚动(奇怪的是,没有垂直滚动条)。

如果是 300vw,我可以看到从左到右三个框,垂直滚动条就会出现。


所以我的问题是:

为什么宽度会影响垂直滚动条?

如果无法避免,是否还有其他方法可以实现我的想法? (我想创建多个 div 不是一个好方法)

最佳答案

视口(viewport)单位是相对于视口(viewport)的,所以如果出现水平滚动条,则意味着该滚动条将占用空间,因此我们需要垂直滚动才能看到水平滚动条隐藏的部分。

为避免这种情况,请仅使用 vw 单位并使用 % 而不是 vh,这样高度将相对于父级而不是视口(viewport)。我还删除了边距并调整了 topleft 值以使 block 居中

* {
  padding: 0;
  margin: 0;
}

body,
html {
  height: 100%;
}

.outer {
  position: relative;
  top: 0;
  left: 0;
  height: 100%;
  width: 105vw; /* This won't create a vertical scroll*/
  overflow: hidden;
  background-color: lightyellow;
}

.bg {
  height: 80%;
  width: 80vw;
  top: 50%;
  transform: translateY(-50%);
  position: absolute;
}

.bg1 {
  background-color: #80c9be;
  left: 10vw;
}

.bg2 {
  background-color: #e99790;
  left: 110vw;
}

.bg3 {
  background-color: #f2e2cd;
  left: 210vw;
}

.bg4 {
  background-color: #48697f;
  left: 310vw;
}
<div class="outer">
  <div class="bg bg1">
  </div>
  <div class="bg bg2">
  </div>
  <div class="bg bg3">
  </div>
  <div class="bg bg4">
  </div>
</div>

如果你需要更好的方法,你可以像这样使用 flexbox:

* {
  padding: 0;
  margin: 0;
}

body,
html {
  height: 100%;
}

.outer {
  position: relative;
  height: 100%;
  display:flex;
  background-color: lightyellow;
}

.bg {
  height: 80%;
  width: 80vw;
  margin:auto 10vw;
  flex-shrink:0;
}

.bg1 {
  background-color: #80c9be;
}

.bg2 {
  background-color: #e99790;
}

.bg3 {
  background-color: #f2e2cd;
}

.bg4 {
  background-color: #48697f;
}
<div class="outer">
  <div class="bg bg1">
  </div>
  <div class="bg bg2">
  </div>
  <div class="bg bg3">
  </div>
  <div class="bg bg4">
  </div>
</div>

关于html - width大于100vw出现垂直滚动条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51655759/

相关文章:

javascript - 通过 Azure 存储以 HTML 格式获取 JSON 文件

javascript - 如何在javascript中使表格可滚动

jquery - Owl Carousel 2 - 中心和覆盖

javascript - 这些天什么更容易使用或更容易实现 a :hover or javascript coding for changes on links?

Html/Css 图像无法在 IE 中正确显示并调整大小(左而不是右)

php - 如何从html中获取图片的src和值,并将其存储到php变量中?

CSS:图像和描述之间的差距

html - 在 Bootstrap 框的中心对齐文本和图标

javascript - 在 iframe 中查找 div

html - overflow-y 在 webkit 浏览器(Chrome 和 Safari)中隐藏页面内容