フィドルを見てみましょうhttp://jsfiddle.net/joplomacedo/UPjQL/3/
.button-rendered-as-a-link {
position: relative; <-------------
border: none;
padding: 0;
margin: 0;
background: none;
-moz-border-radius: none;
-webkit-border-radius: none;
border-radius: none;
-moz-box-shadow: none;
-webkit-box-shadow: none;
box-shadow: none;
color: #8A89BA;
font-weight: bold;
left: 2em; <-------------
}
.button-rendered-as-a-link:hover {
text-decoration: underline;
cursor: pointer;
}
.button-rendered-as-a-link:before {
content:" — ";
position: absolute; <-------------
right: 100%; <-------------
padding: 0 5px;
color: grey;
cursor: default !important;
pointer-events: none; <-------------
}
矢印は、私が追加したものを表します。
基本的に、position: absolute を使用してフローから疑似要素を削除しました。これにより、ボタンの幅は疑似要素がない場合と同じになり、したがって、下線はその幅以下になります。left および right プロパティによって元の位置に戻されます。
次に、ボタンのホバーをトリガーしないように、疑似要素のポインター イベントを none に設定します。詳細については、https://developer.mozilla.org/en/CSS/pointer-events/を参照してください。