Web アプリで選択したテキストの強調表示を無効にする必要があります。これを行うのには十分な理由があり、これが一般的に悪い考えであることを知っています。しかし、私はとにかくそれをする必要があります。そのために CSS を使用する必要があるか、JS を使用する必要があるかは問題ではありません。私が主に目指しているのは、ハイライトされた要素に与えられた青色を取り除くことです。
8 に答える
CSS 疑似クラス セレクター::selection
と::-moz-selection
Firefox を使用できます。
例えば:
::-moz-selection {
background-color: transparent;
color: #000;
}
::selection {
background-color: transparent;
color: #000;
}
.myclass::-moz-selection,
.myclass::selection { ... }
CSS3 ソリューション:
user-select: none;
-moz-user-select: none;
ユーザー選択用の webkit プレフィックスもありますが、一部のフォーム フィールドにフォーカスできなくなるため (一時的なバグである可能性があります)、代わりに次の webkit の疑似クラスを使用できます。
element::selection
私はあなたが意味しているのはテキストを選択することだと思います(例えば、マウスをドラッグしてハイライトします)。もしそうなら、これはIEとMozillaの選択アクションをキャンセルします:
window.onload = function() {
if(document.all) {
document.onselectstart = handleSelectAttempt;
}
document.onmousedown = handleSelectAttempt;
}
function handleSelectAttempt(e) {
var sender = e && e.target || window.event.srcElement;
if(isInForm(sender)) {
if (window.event) {
event.returnValue = false;
}
return false;
}
if (window.event) {
event.returnValue = true;
}
return true;
}
function isInForm = function(element) {
while (element.parentNode) {
if (element.nodeName.ToUpperCase() == 'INPUT'
|| element.nodeName.ToUpperCase() == 'TEXTAREA') {
return true;
}
if (!searchFor.parentNode) {
return false;
}
searchFor = searchFor.parentNode;
}
return false;
}
* を使用して、すべての要素の強調表示またはアウトラインの強調表示を無効にしました
*{
outline: none;
}
:focus疑似クラスを探していると思います。これを試して:
input:focus {
background-color: #f0f;
}
選択すると、入力にかなり紫/ピンクの色が表示されます。
どのプロパティを(設定解除)する必要があるかはわかりませんが、試行錯誤を繰り返すことで自分自身を見つけることができると思います。
また、強調表示または非表示はブラウザ固有であることに注意してください。
マウスをドラッグしたときにテキストが強調表示されるということですか?
これを行う最善の方法は、::selection と呼ばれる CSS3 プロパティを使用することですが、CSS3 であるため、まだ十分にサポートされていません。先に進んでそれを調べてください。さもなければ、Javascript でそれを行う方法があるかもしれません。
テキストのコピーと貼り付けをより困難にすることが最終的な目標である場合、ブラウザのソース表示機能を無効にすることができないため、Javascript と CSS は適切なテクノロジではありません。
その他のアイデア (どれも理想的ではありません):
- Java アプレット (テキストの表示と取得の両方を制御します)
- 別のブラウザプラグイン(フラッシュ、シルバーライトなど)でも同じ
- サーバー側で作成されたイメージ (パフォーマンスが低い)