他の人が述べているように、これは純粋にCSSを介して行うことはできません。ただし、これがJavaScriptソリューションです。これは、jquery 1.4.1+を使用していることを前提としています(おそらく多くのバージョンで動作しますが、これは私がテストしたものです)。
これは少し不格好ですが、マウス入力で選択されたテキストにスタイルを適用できるのは、選択されている間だけです。機能の簡単な説明:
- reset()は、既存の選択からスタイリングを削除し、余分なスパンを取り除きます
- Highlight()は、選択範囲を新しいスパンノードにラップし、スタイルを適用します
- getSelected()は、選択オブジェクトを返すだけです。右クリックしてもreset()は何もしないことに注意してください。これは、右クリックメニューを表示できるようにするためです。選択範囲の外側を右クリックすると、探している結果が得られませんが、おそらく修正できます。
詳細が必要な場合はお知らせください。巨大なコードブロックでごめんなさい。
<script type="text/javascript">
$(document).ready(function () {
$(document).mousedown(reset);
$(document).mouseup(highlight);
});
reset = function (e) {
var st = getSelected();
if (st != '') {
if (e.which != 3) {
$("span").contents().unwrap();
}
}
};
highlight = function () {
var st = getSelected();
if (st != '') {
var newNode = document.createElement("span");
newNode.setAttribute("class", "selectionClass");
var range = st.getRangeAt(0);
range.surroundContents(newNode);
st.selectAllChildren(newNode);
}
};
getSelected = function () {
var selection = '';
if (window.getSelection) {
selection = window.getSelection();
} else if (document.getSelection) {
selection = document.getSelection();
} else if (document.selection) {
selection = document.selection.createRange().text;
}
return selection;
};
</script>