html - 为什么绝对位置会导致页面溢出?

标签 html css css-position

我的理解是,一旦元素被绝对定位(即使位置值为负),它将完全脱离正常的内容流。但是为什么还是让页面溢出呢?当您运行下面的代码片段时,会出现水平滚动条,我认为它不应该出现。

.relative {
  position: relative;
  background: pink;
}
.absolute {
  position: absolute;
  top: 0;
  right: -100px;
  width: 200px;
  height: 100px;
  background: rgba(0,0,0,.5);
}
<div class="relative">
  Placeholder <div class="absolute"></div>
</div>

最佳答案

我想我知道这个问题从何而来。当人们希望一个元素在屏幕外没有水平滚动条时,你一定会对在屏幕左侧使用(负)绝对定位的人感到困惑。这是 slider 、菜单和模式的常用技术。

问题是,负向左对齐不会在主体上显示溢出,而负向右对齐会。不太合逻辑……我知道。

为了说明这一点,我在左侧创建了一支带有绝对元素的笔:left: -100px; http://codepen.io/anon/pen/vGRxdJ和右边带有绝对元素的笔:right: -100px; http://codepen.io/anon/pen/jqzBZd .

我希望这能消除您的困惑。

至于为什么会出现这种情况:我一直理解屏幕的左上角是x:0,y:0:坐标系的原点,只包含正值(在RTL情况下是水平镜像的) ).此坐标系中的负值是“ Canvas 外”的,因此不需要滚动条,而“ Canvas 上”元素则需要。换句话说: Canvas 上的元素会放大您的页面并使您的 View 自动滚动(除非另有说明),而 Canvas 外的元素则不会。

关于html - 为什么绝对位置会导致页面溢出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36531708/

相关文章:

java - 仅显示 <p> 标签中的 3 行,其中包含多个 <p></p>

html - 固定在 div 元素上的位置

html - 绝对定位元素 - 最高百分比不起作用

jquery - 如何根据窗口大小用表格单元格换行

javascript - jQuery 元素适用于 append() 但不适用于 after()

javascript - 我想单击一个按钮并在我的容器中的随机位置出现一个随机图像

jquery - 如何在动态添加和删除textarea时避免与其他元素重叠?

html - 滚动时背景颜色消失

css - 将 FontAwesome 或 Glyphicons 与 css 一起使用 :before

html - 如何使用 css 更改 html 表格中每个单词实例的颜色?