純粋な CSS を使用してユーザーが Web ページのコンテンツをコピーするのを防ぐ方法

純粋な CSS を使用してユーザーが Web ページのコンテンツをコピーするのを防ぐ方法

序文

私自身の個人ブログを入力しているときに、ブログの詳細ページでさまざまなコンテンツをコピーするさまざまな方法を用意したいと考えました。たとえば、コードブロックはクリックひとつでコピーできるようにして、ローカルでのデバッグが簡単にできるようにしたいです。テキストの説明部分については、コピーできないようにしたいと思っています。 JS よりも CSS を使うべきだと信じる頑固な過激派として、私は最終的に CSS3 で user-select を見つけました。

互換性

ユーザー選択

ユーザーがテキストを選択できるかどうかを制御するために使用されます。すべて選択、一部選択。

すべて選択

多くの場合、ユーザーは、コードの一部、パスワード、またはいくつかのキーなどのコンテンツ全体を一度にコピーしたい場合があります。
user-select:all : ユーザーが 1 回のクリックで要素を選択できるようにします。
ここでは、3 つの異なる HTML タグの効果を示します。

 h2 {
        ユーザー選択: すべて;
      }

      コード {
        ユーザー選択: すべて;
        幅: 500ピクセル;
        表示: ブロック;
        パディング: 10px;
        色: #31808c;
        背景色: #f5f4ef;
      }

      div {
        ユーザー選択: すべて;
      }

  <h2>クリックして試す</h2>
    <前>
        <コード>
        定数num = 1;

        const 結果 = (関数 () {
          番号を削除します。
          数値を返します。
        })();
        
        console.log(結果);
        </code>
    </pre>
    <p>
      const num = 1; const result = (function () { delete num; return num; })();
      console.log(結果);
    </p>

しかし、all には残念な欠点もあります。all を設定すると、一部のコンテンツを選択できなくなります。

選択を無効にする

Web ページ上の要素の場合、user-select: none; を使用して、ユーザーがコンテンツを選択できないようにすることができます。

部分的に選択

なぜこのようなことわざがあるのでしょうか? 通常の Web ページの場合、特定のコンテンツを選択できます。たとえば、次のページでは、コンテンツを部分的に選択できます。

しかし、ここでのタイトル部分は主に反対側では選択できない要素を指します。たとえば、HTML には sup というタグがあり、これは主に要素に上付き文字を追加するために使用されます。

<p>私の後ろにはコーナーマークがあります<sup>1</sup>私の前にはコーナーマークがあります</p>

このテキストをコピーする場合: 後ろにコーナー マーク 1 があり、前にもコーナー マークがあります。このコーナー マークもコピーされます。
この時点で、コーナー マークを設定する必要があります。この設定により、p タグが user-select:all の場合、コピー時にコーナー マークが無視されることも保証されます。

すする {
  -webkit-user-select: なし;
  ユーザー選択: なし;
}

拡張機能: 選択したスタイルを設定する

CSS は、テキスト選択のスタイルを設定するための ::selection 疑似要素を提供します。::selection 疑似要素をターゲットにすることで、テキスト選択のスタイルを設定できます。ただし、設定できるのは次のプロパティのみです。


背景色
カーソル
キャレット色
アウトラインとその長手
テキスト装飾とそれに関連するプロパティ
テキスト強調色 (en-US)
テキストシャドウ

例えば

p::選択{
  色: #fffaa5;
  背景色: #f38630;
  テキストシャドウ: 2px 2px #31808c;
}

選択後の効果は以下のとおりです。

これで、純粋な CSS を使用してユーザーが Web ページのコンテンツをコピーできないようにする方法についての記事は終了です。CSS を使用してユーザーがコンテンツをコピーできないようにする方法の詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

<<:  MySQL のタイムスタンプと日付時刻のタイムゾーンの問題によって生じる DTS の落とし穴の詳細な説明

>>:  Linux sftp コマンドの使用法

推薦する

Dockerイメージを構築する2つの方法

目次既存のイメージからイメージを更新します。イメージを最初から構築する: Docker イメージ リ...

カスタム変数を使用した MySQL クエリの最適化

目次並べ替えクエリの最適化変更されたばかりのデータ行を繰り返し取得しないようにする遅延ロードされた結...

Webデザインチュートリアル(5):Webビジュアルデザイン

<br />前回の記事:Webデザイン講座(4):素材と表現について Webデザイン上級...

ubuntu20.04 上の CLion2020.1.3 での ROS のインストールと設定の詳細な説明

1. CLionをダウンロード、インストール、アクティベートするオンラインで提供されるチュートリアル...

mysql データはどこに保存されますか?

MySQLデータベースの保存場所: 1. MySQLがMyISAMストレージエンジンを使用する場合...

Docker イメージを削除できません エラー: そのようなイメージはありません: xxxxxx 解決策

序文docker イメージを削除できません。docker docker imagesを確認すると、イ...

JSで実現したページサイドバーの効果に関する研究

目次発見: ディスプレイアニメーションの応用実装:記事の1行目を表示する効果を実現する方法実際、その...

JavaScriptは入力ボックスコンポーネントを実装します

この記事では、入力ボックスコンポーネントを手動で実装するための具体的なコードを参考までに紹介します。...

Dockerは同じIPネットワークセグメントとの接続を実現する

最近、Docker とホストが同じネットワーク セグメント上で通信する問題を解決し、そのプロセス全体...

Vue の計算プロパティの詳細な説明

目次補間式方法計算された要約する今日は、Vue の計算プロパティについてお話ししましょう。計算プロパ...

Baidu百科事典UIの開発動向について議論する

<br />百度百科事典の正式版がついにオンラインになりました。2年間の「テスト版」の帽...

ウェブページの表の分割線を削除する方法

<br />Web テーブルの分割線を削除する方法。実際、上記の 3 つの表はいずれも ...

Vue はシームレスなカルーセル効果を実現

この記事では、シームレスなカルーセル効果を実現するためのVueの具体的なコードを参考までに紹介します...

CentOS 8/RHEL 8 に Cockpit をインストールして使用する方法

Cockpit は、CentOS および RHEL システムで使用できる Web ベースのサーバー管...

Reactイベントスロットリング効果が失敗する理由と解決策

目次ここでの問題は次の通りです:解決策1:解決策2: コンストラクタで初期化を割り当てる採掘場の概要...