2011-08-04 102 views
32

下面是我的HTML頁面中有問題的圖片。 文本菜單位於右對齊div內,並具有1.2em字母間距。 這是否有一個僞選擇器?我不想訴諸相對定位。如何刪除CSS中元素最後一個字母的字母間距?

我很喜歡文本菜單,以結束塊的結束。

Right text-aligned div where letter spacing applies for all characters of a line

我已經標記爲最佳答案,但我對代碼塊要求的標記不管。這裏是。

<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; 
} 
+0

需要看到您的標記。 – BoltClock

+0

我用標記更新了我的問題。 – desbest

回答

34

你可以設置你的元素有一個-1.2em的右邊距,這將抵消字母間距。

例如

.menu-header-selector { 
    display:block; 
    letter-spacing:1.2em; 
    margin-right:-1.2em; 
    text-align:right; 
} 

要回答你關於僞選擇器的問題,就我所知,沒有每個字符的僞選擇器。 (編輯:從頭開始,有一個:First-Letter選擇器,Jonas G. Drange指出)。

編輯:您可以在這裏找到一個基本的例子:http://jsfiddle.net/teUxQ/

+0

我嘗試了您的負利潤率值,它的工作原理! – desbest

+1

':first-letter'僞元素不完全是「每個字符」(否則它會被稱爲「:first-character」)。見http://stackoverflow.com/questions/5649296/css-pseudo-element-to-apply-the-first-characther-of-an-element/5649347#5649347 – BoltClock

+1

最終在這一個,而想要一個文本-decoration:下劃線...在這種情況下,它不起作用。任何線索? – Ben

1

您無法定位的最後一個字符,只有第一個(CSS3,:first-letter)。你可以在最後一個字母周圍添加一個範圍,但是這意味着添加無意義的標記,比向元素添加定位「更糟糕」。

CSS非常適合這樣的詭計:)

+4

Um,':first-信「自CSS1以來一直存在。 – BoltClock

+1

對不起! –

12

實際上,我稱之爲瀏覽器錯誤。 spec表示這是字符之間的間距,而您的瀏覽器(和我的)似乎正在更改字符後的間距。你應該提交一個錯誤報告。

+0

我正在使用Opera 11.50。最新版本。我喜歡在Opera中切割純CSS設計,因爲Firefox渲染得太完美了,IE9可能會有怪癖。 – desbest

+0

是的。這就是爲什麼你必須提交錯誤報告。如果它是舊版本,我會告訴你先更新。 – LaC

+0

我不認爲提交bug報告將是一個好主意,因爲IE/FF/WK/OP必須全部實現這個怪癖。此外,如果錯誤得到解決,我認爲它會對其他網站的設計產生負面影響。 – desbest

相關問題