CSSでテキスト選択を無効にする方法【user-selectプロパティの使い方】
CSSのuser-selectプロパティを使えば、Webページ上のテキスト選択を簡単に無効化できます。この記事では基本的な使い方からブラウザ対応まで、コード例とデモ付きでわかりやすく解説します。
デフォルトではテキストは自由に選択できる
通常、Webブラウザではどのサイトでもテキストを選択できます。ただし、これは本物のテキスト要素に限られます。画像の中に文字が焼き込まれているような場合は選択できません。
テキストの選択はマウスでもキーボードでも行えます。たとえばCmd + A(Mac)やCtrl + A(Windows)でページ全体を選択できますね。
user-selectプロパティでテキスト選択を無効にする
しかし、何らかの理由でテキスト選択を許可したくない場合はどうすればよいのでしょうか?
その場合は、CSSプロパティのuser-selectにnoneという値を指定します。
selector {
user-select: none;
}
たとえば、.select-noneというクラスを持つすべての要素でテキスト選択を無効にしたい場合は、次のように記述します。
.select-none {
user-select: none;
}
あとは、テキスト選択を無効にしたい任意の要素にこのクラスを追加するだけです。
<p class="select-none">このテキストは選択できません。</p>
デモ:
このテキスト要素は選択できません。実際にドラッグして試してみてください!
すべてのブラウザに対応させるためのベンダープレフィックス
user-selectプロパティをすべてのブラウザで確実に動作させるには、以下のようなベンダープレフィックスを併せて指定する必要があります。
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
なお、近年の主要ブラウザ(Chrome、Firefox、Edge、Safariなど)では、プレフィックスなしのuser-selectが標準でサポートされています。ただし、古いバージョンのSafariやiOS端末への対応が必要な場合は、-webkit-user-selectなどのプレフィックス版も忘れずに指定しておくと安心です。
-
CSSで矢印を作成する方法!borderとrotateを組み合わせた4方向矢印の実装テクニック
CSSでは、画像やアイコンフォント、外部ライブラリに頼らなくても、border(境界線)とtransform: rotate()を組み合わせるだけで、上下左右どの方向の矢印でも簡単に作成できます。境界線でL字型の角を作り、それを回転させるのが基本的な考え方です。 サンプルコード <!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width, initial-scale=1" /> <style>
-
CSSでテキスト選択時のデフォルト色を変更する方法|::selectionの使い方
Webページ上でテキストをドラッグして選択すると、通常は青っぽいハイライトが表示されます。このデフォルトの選択色は、CSSの ::selection 疑似要素を使うことで、文字色や背景色を自由に上書きできます。 以下に、選択時のハイライトを紫背景・白文字にカスタマイズするサンプルコードを示します。 サンプルコード <!DOCTYPE html> <html> <head> <style> /* Firefox向け(旧バージョン対応) */ ::-moz-selection { &