html - 相对定位 block 显示不存在的右边距

标签 html css css-position

简短问题:点击下面的第一个链接,向我解释为什么 Chrome 会在右侧显示边距(如果没有的话)。

长问题:

我想了解为什么 Google Chrome 显示绝对和相对定位 block 的不同图形表示。

在绝对定位 block 上,Chrome 以我预期的方式显示元素。

在相对定位 block 上,元素的宽度显示更多内容。它看起来像一些边距或填充,但我将此 div 的填充和边距归零,它在 Chrome 检查工具上看起来仍然相同。

看看相对的 div 如何对其宽度进行“扩展”。

inspected relative div screenshot

在这里,绝对 div 没有这个“扩展名”。

inspected absolute div screenshot

这是一个可以证明这一点的代码。

.wrapper {
  border: solid 1px red;
  display: block;
  width: 300px;
  position: relative;
  height: 150px;
}

.absolute-class, .relative-class {
display: block;
width: 100px;
left: 20px;
font-size: 24px;
}

.absolute-class {
position: absolute;
top: 10px;
}

.relative-class {
position: relative;
top: 30px;
}
<body>
    <div class="wrapper">
        <div class="absolute-class">Text 1</div>
        <div class="relative-class">Text 2</div>
    </div>
</body>

我对此很担心,因为我认为这个额外的“边距”会导致我正在开发的页面出现水平滚动。所以我想了解这是什么,以便能够解决这个问题。

最佳答案

这超出了 div,因为您给 left:20px 并设置了固定宽度,所以 left 会将您的 div 推到包装 div 之外。使用 padding-left:20px;

.wrapper {
  border: solid 1px red;
  display: block;
  width: 300px;
  position: relative;
  height: 150px;
}

.absolute-class, .relative-class {
display: block;
width: 100px;
padding-left: 20px;
font-size: 24px;
}

.absolute-class {
position: absolute;
top: 10px;
}

.relative-class {
position: relative;
top: 30px;
display: inline-block;
}
<body>
    <div class="wrapper">
        <div class="absolute-class">Text 1</div>
        <div class="relative-class">Text 2</div>
    </div>
</body>

或者你也可以在.relative-class中使用display: inline-block;

.wrapper {
  border: solid 1px red;
  display: block;
  width: 300px;
  position: relative;
  height: 150px;
}

.absolute-class, .relative-class {
display: block;
width: 100px;
left: 20px;
font-size: 24px;
}

.absolute-class {
position: absolute;
top: 10px;
}

.relative-class {
position: relative;
top: 30px;
display: inline-block;
}
<body>
    <div class="wrapper">
        <div class="absolute-class">Text 1</div>
        <div class="relative-class">Text 2</div>
    </div>
</body>

关于html - 相对定位 block 显示不存在的右边距,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45250668/

相关文章:

html - 使用绝对定位防止 div 进入图像下方

css - 在具有可滚动内容的 CSS 中创建可变高度 "fixed" header

javascript - Fancybox 中的 SVG

html - 缩放浏览器窗口尺寸较小时如何使用 Bootstrap 隐藏其中一个 div

css - 为什么面包屑文本不能右对齐?

html - Ipad视口(viewport)肖像问题

javascript - 具有绝对位置的CSS旋转

PHP IMAP 如何只获取正文的文本部分?不是不同的 <html> 标签等

html - 升级到 Bootstrap 4 后如何修复 header ?

html - 16 个充满整个页面的响应式 div