html - 跨度元素向右漂移(0.25 x 字体高度)像素

标签 html css

我正在寻找以下行为的解释。

我有一个 <div>三个容器 <span>元素。第一个和第三个元素是装饰性的,它们的目的是用不同的背景颜色填充浏览器窗口的宽度。这是通过调整元素的水平填充和边距来实现的。

第二个和第三个之间有一个不需要的间隙 <span>元素。我已经确定间隙的宽度恰好是为父 <div> 设置的字体大小的四分之一。元素。

我对该问题的解决方案是为第三个 <span> 添加一个负边距元素。以下代码片段演示了该问题以及我对该问题的解决方案。

http://codepen.io/danag/pen/RKZQxE

有人可以向我解释这种行为的原因吗?

我也很乐意了解这个布局问题的更好解决方案。

body {
  margin : 0;
  padding: 0;
  overflow-x: hidden;
}
h2 { 
  font-size: 32px;
}
.bg-blue {
  background-color: #1111ee;
}
.bg-red {
  background-color: #ee1111;
}
#my-container {
  background-color: #ffffff;
}
#my-content,
#my-content-too {
  width: 80%;
  margin: auto;
  background-color: #ffffe0;
  padding: 1.5em;
}
.heading-wrapper {
  display: inline;
  font-size: 100px;
  line-height: 1.2;
  background-color: #ffff00;
}
.heading-wrapper .heading {
  display: inline;
  text-transform: uppercase;
  background-color: #eee;
}
.heading h2 {
  display: inline;
  padding-left: 0.3em;
  padding-right: 0.3em;
}
.extend-left {
  margin-left: -2000px;
  margin-right: 0;
  padding-left: 2000px;
  padding-right: 0;
}
.extend-right {
  margin-left: 0;
  margin-right: -2000px;
  padding-left: 0;
  padding-right: 2000px;
}
.left-25 {
  margin-left: -25px;
}
<div id="my-container">
  <div id="my-content">
    <div class="heading-wrapper">
      <span class="extend-left bg-blue"></span>
      <span class="heading"><h2>Heading Text</h2></span>
      <span class="extend-right bg-red"></span>
    </div>
    <div class="text-wrapper"><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p></div>
  </div>
  <div id="my-content-too">
    <div class="heading-wrapper">
      <span class="extend-left bg-blue"></span>
      <span class="heading"><h2>Heading Too</h2></span>
      <span class="extend-right bg-red left-25"></span>
    </div>
    <div class="text-wrapper"><p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p></div>
  </div>
</div>

最佳答案

您似乎遇到了空格问题,即任何空格都会导致该位置出现空格 ( )。最好的解决方案是 float(这会导致许多其他问题)或将 font-size 设置为父元素的字体,然后将其设置回您在子元素中的值。

.parent { font-size: 0; }
.parent > * { font-size: 1rem; }

希望对您有所帮助。

关于html - 跨度元素向右漂移(0.25 x 字体高度)像素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41852407/

相关文章:

css - 开发者工具 : How can I quickly check the difference in styles between normal state and :focus?

html - 在 CSS 中选择 ID 时最好具体一些吗?

javascript - Uncaught ReferenceError : TweenLite is not defined

javascript - 如何使用jquery移动多个不同的href来包装父元素和其他2个元素

javascript - CSS3 样式复选框

html - 使用css在鼠标悬停时创建下拉菜单

html - 根据先前的输入更改组合菜单的内容

html - 使 HTML 表格展开以容纳没有换行的内容

python - 如何从 Sphinx 的默认搜索中排除 RST 文件?

css - 如何在 div 元素内垂直居中图像?