26

Web アプリで選択したテキストの強調表示を無効にする必要があります。これを行うのには十分な理由があり、これが一般的に悪い考えであることを知っています。しかし、私はとにかくそれをする必要があります。そのために CSS を使用する必要があるか、JS を使用する必要があるかは問題ではありません。私が主に目指しているのは、ハイライトされた要素に与えられた青色を取り除くことです。

4

8 に答える 8

23

CSS 疑似クラス セレクター::selection::-moz-selectionFirefox を使用できます。

例えば:

::-moz-selection {
    background-color: transparent;
    color: #000;
}

::selection {
    background-color: transparent;
    color: #000;
}

.myclass::-moz-selection,
.myclass::selection { ... }
于 2009-08-03T20:48:16.503 に答える
15

CSS3 ソリューション:

user-select: none;
-moz-user-select: none;

ユーザー選択用の webkit プレフィックスもありますが、一部のフォーム フィールドにフォーカスできなくなるため (一時的なバグである可能性があります)、代わりに次の webkit の疑似クラスを使用できます。

element::selection
于 2012-04-04T13:35:20.117 に答える
5

私はあなたが意味しているのはテキストを選択することだと思います(例えば、マウスをドラッグしてハイライトします)。もしそうなら、これは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;
}
于 2009-08-03T20:30:42.967 に答える
1

* を使用して、すべての要素の強調表示またはアウトラインの強調表示を無効にしました

*{
 outline: none;
}

回答の参照:テキスト/入力ボックスの周りのフォーカス ボーダー (アウトライン) を削除するには? (クロム)

于 2020-06-01T14:41:07.977 に答える
0

:focus疑似クラスを探していると思います。これを試して:

input:focus {
  background-color: #f0f;
}

選択すると、入力にかなり紫/ピンクの色が表示されます。

どのプロパティを(設定解除)する必要があるかはわかりませんが、試行錯誤を繰り返すことで自分自身を見つけることができると思います。

また、強調表示または非表示はブラウザ固有であることに注意してください。

于 2009-08-03T20:31:13.730 に答える
0

マウスをドラッグしたときにテキストが強調表示されるということですか?

これを行う最善の方法は、::selection と呼ばれる CSS3 プロパティを使用することですが、CSS3 であるため、まだ十分にサポートされていません。先に進んでそれを調べてください。さもなければ、Javascript でそれを行う方法があるかもしれません。

于 2009-08-03T20:41:43.987 に答える
0

テキストのコピーと貼り付けをより困難にすることが最終的な目標である場合、ブラウザのソース表示機能を無効にすることができないため、Javascript と CSS は適切なテクノロジではありません。

その他のアイデア (どれも理想的ではありません):

  • Java アプレット (テキストの表示と取得の両方を制御します)
  • 別のブラウザプラグイン(フラッシュ、シルバーライトなど)でも同じ
  • サーバー側で作成されたイメージ (パフォーマンスが低い)
于 2009-08-03T20:42:31.507 に答える