如何删除CSS中元素的最后一个字母的字母间距?

des*_*est 37 css css-selectors css3

这是我的HTML页面的问题图像.文本菜单位于右对齐的div内,并具有1.2em字母间距.这有伪选择器吗?我不想诉诸相对定位.

我希望文本菜单能够结束块结束的位置.

右侧文本对齐的div,其中字母间距适用于行的所有字符

我已经标记了最佳答案,但无论CodeBlock如何,我都被要求提供标记.这里是.

<div class="sidebar">
        <span class="menuheader">MENU</span>
        <ul>
        <li><a href="#content">Content</a></li>
        <li><a href="#attachments">Attachments</a></li>
        <li><a href="#subpages">Sub-pages</a></li>
        <li><a href="#newsubpage">New sub-page</a></li>
        </a></ul>
</div>

.sidebar{
color: rgb(150,93,101);
display: inline;
line-height: 1.3em;
position: absolute;
top: 138px;
width: 218px;
}

.menuheader{
letter-spacing: 1.1em;
margin: -1.2em;
text-align: right;
}
Run Code Online (Sandbox Code Playgroud)

Kar*_*oll 41

您可以将元素设置为具有-1.2em的右边距,这将抵消字母间距.

例如

.menu-header-selector {
  display:block;
  letter-spacing:1.2em;
  margin-right:-1.2em;
  text-align:right;
}
Run Code Online (Sandbox Code Playgroud)

要回答关于伪选择器的问题,据我所知,没有每个字符的伪选择器.(编辑:Scratch,有:First-Letter选择器,Jonas G. Drange指出).

编辑:你可以在这里找到一个基本的样本:http://jsfiddle.net/teUxQ/

  • 最终得到了这个,同时想要一个文本装饰:下划线......在这种情况下它不起作用。有什么线索吗? (2认同)
  • 这适用于这种情况,但是当您有 `text-decoration: underline;` 时,空间仍然存在。 (2认同)

LaC*_*LaC 18

实际上,我会称之为浏览器错误.该规范说,这是间距之间的字符,而您的浏览器(和我)似乎改变间距字符.您应该提交错误报告.

  • 也许你正在考虑如果你实施一个解决方法,然后修复bug就会影响你自己的网站.但要小心:这种推理是让我们多年来坚持使用IE6的原因. (4认同)

G-C*_*Cyr 7

显然是一个非常古老的问题,但当时涉及您的具体示例的 CSS 有效。

它涉及将方向重置为相反的方向,为您的内联元素提供格式上下文,并设置一个与字母间距相等的负文本缩进。

演示如下:

.sidebar {
  color: rgb(150, 93, 101);
  line-height: 1.3em;
  width: 218px;
  border:solid;
  text-align:right;
}

.menuheader {
  letter-spacing: 1.1em;
  direction:rtl;
  display:inline-block;
  text-indent:-1.1em;
  background:gold
}
Run Code Online (Sandbox Code Playgroud)
<div class="sidebar">
  <span class="menuheader">MENU</span>
  <ul>
    <li><a href="#content">Content</a></li>
    <li><a href="#attachments">Attachments</a></li>
    <li><a href="#subpages">Sub-pages</a></li>
    <li><a href="#newsubpage">New sub-page</a></li>
  </ul>
</div>
Run Code Online (Sandbox Code Playgroud)


Mac*_*rte 6

您可以在元素之后添加 :after 并将负边距设置为等于字母间距

.menuheader {
  letter-spacing: 1.1em;
}
    
.menuheader:after {
   content:" ";
   margin-left:  -1.1em;
}
Run Code Online (Sandbox Code Playgroud)

在 Chrome、Firefox 和 Edge 上测试