字母间距错误的文本中心对齐

pas*_*ine 26 html css letter-spacing

我注意到使用letter-spacing和text-align:center的奇怪行为.
增加空间,使文本更接近元素的左边距.

HTML

<div>
  <p>- Foo Bar Zan -</p>
</div>
Run Code Online (Sandbox Code Playgroud)

CSS

div {
  width: 400px;
  height:400px;
  background-color: #3b0d3b;
  text-align:center;
  margin:auto;
}

p {
  color:#fff;
  margin-top: 40px;
  text-align:center;
  padding-top:30px;
  font-size: 1.2em;
  letter-spacing:.9em;  <--- Here is the problem
}
Run Code Online (Sandbox Code Playgroud)

我已经创建了一个codepen来展示我的意思.
我在上一次Firefox和Chrome上发现了相同的行为.有没有办法解决这个问题?

Hua*_*ism 70

看来你需要将文本缩进与字母间距相同的数量.第一个字母没有应用于左侧的间距

div {
  width: 400px;
  height: 400px;
  background-color: #3b0d3b;
  text-align: center;
  margin: auto;
}

p {
  color: #fff;
  background: black;
  text-align: center;
  font-size: 1.2em;
  padding: 0;
  margin: 0;
}

.spacing {
  letter-spacing: .4em;
}

.spacing-large {
  letter-spacing: 0.9em;
  text-align: center;
  text-indent: 0.9em;
}
Run Code Online (Sandbox Code Playgroud)
<div>
  <p>- Foo Bar Zan -</p>
  <p class="spacing">- Foo Bar Zan -</p>
  <p class="spacing-large">- Foo Bar Zan -</p>
</div>
Run Code Online (Sandbox Code Playgroud)

我想出的逻辑解释是 - 因为它是第一个字母,左侧的间距将不适用.


小智 7

使用填充会更安全,以防文本分成两行。text-indent 只会缩进文本的第一行。

p { 
  padding-left: 0.9em; 
}
Run Code Online (Sandbox Code Playgroud)

  • 这是一个被低估的贡献,在我看来/案例中是更好的解决方案 (2认同)