他のよりプロフェッショナルなブログ システムを参照すると、コード ブロックにコードのコピー ボタンがあります。コードブロック全体をすばやくコピーするコード。だから、この機能を自分のブログにも追加したいのです。 注: Chrome テストに合格しました。他のブラウザはテストされていません。 実装のアイデア: 1. ページが読み込まれたら、jsを使用して各preタグに「コードをコピー」ボタンを追加します。 2. ボタンにクリックイベントを追加します。クリックイベントの機能は、コードブロックの内容をコピーすることです。 実装コード: css部分では、btn-pre-copyはjsを使用してpreタグ内に追加された「コードをコピー」ボタンです。 CSS の役割は、pre タグの右上隅に表示されるようにすることです。ここでは、preタグとボタンの位置属性に注意する必要があります。 .content pre{ 位置: 相対的; 背景色: #f5f5f5; 境界線: 1px 実線 #ccc; 境界線の半径: 4px; パディング: 10px; } pre .btn-pre-copy{ -webkit-user-select: なし; -moz-user-select: なし; -ms-user-select: なし; -khtml-ユーザー選択: なし; ユーザー選択: なし; 位置: 絶対; 上: 10px; 右: 12px; フォントサイズ: 12px; 行の高さ: 1; カーソル: ポインタ; 色: hsla(0,0%,54.9%,.8); トランジション: カラー .1s; } js 部分は主に pre タグにボタンを追加し、コピー部分を実装します。ここでのコピー部分の実装は、最初に一時ノード textarea をインスタンス化し、次にこの一時ノードに pre のコンテンツを設定し、次にコピーするコンテンツを選択し、最後にノードを破棄することです。特定の参照コード。 js部分はjqueryに依存します $(関数(){ //コード要素の各文字列にコピー コード ノードを追加します。let preList = $(".content pre"); for (let pre of preList) { //各コード ブロックに「コードをコピー」ボタンを追加します。let btn = $("<span class=\"btn-pre-copy\" onclick='preCopy(this)'>コードをコピー</span>"); btn.prependTo(pre); } }); /** * コピーコード操作を実行する * @param obj */ 関数 preCopy(obj) { //コピーを実行 let btn = $(obj); pre = btn.parent() とします。 //コピー機能を実現するため。一時的なテキストエリアノードを追加します。コンテンツをコピーするために使用します let temp = $("<textarea></textarea>"); //コンテンツをコピーするときにボタンのテキストをコピーしないでください。まず一時的に空のbtn.text(""); temp.text(pre.text()); temp.appendTo(pre); temp.select(); document.execCommand("コピー"); temp.remove(); //ボタン名を変更します btn.text("コピーが成功しました"); //一定時間後にボタン名を元に戻す setTimeout(()=> { btn.text("コードをコピー"); },1500); } 以下は gitee の簡単なデモです。デモ例: オンラインテスト: http://demo.jb51.net/js/2021/code_copy/ これで、ウェブサイトコードブロックのpreタグにコピーコードボタンコードを追加する方法についての記事は終了です。より関連性の高いコードのハイライトとコピーコード機能の追加内容については、123WORDPRESS.COMの以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも123WORDPRESS.COMをよろしくお願いいたします。 |
<<: CSS3 でテキスト ストロークを実装する 2 つの方法 (要約)
>>: IE8を閲覧するときにウェブサイトが自動的にIE7互換モードを使用するようにする
「ウェブサイトを高級感のあるものにするにはどうすればいいでしょうか? それともデザイン重視にすればい...
問題の説明最近、Springbootプロジェクトを構築していたところ、会社のネットワークケーブルに接...
1. データベースをインストールする1) yum -y install mysql-server (...
目次Kubernetesについて基本的な環境の準備VirtualBoxをインストールするUbuntu...
MySQL 双方向バックアップはマスター-マスター バックアップとも呼ばれ、両方の MySQL サー...
Docker を実行するには root 権限が必要です。非 root ユーザーに docker コマ...
目次再実行ログディスクデータを直接更新するのではなく、最初にメモリデータを更新する必要があるのはなぜ...
今日、CSDN の Q&A セクションで友人が質問をしているのを見ました。彼は 1 次元配列...
この記事の例では、リストのシームレスなスクロールを実現するためのvueの具体的なコードを参考までに共...
この記事では、参考までに、Vuex の具体的なコードを共有して、簡単なショッピングカートを実装します...
この記事の例では、動的な時計を実装するためのJS + CSSの具体的なコードを参考までに共有していま...
1. データベースデータをシミュレートする1-1 データベースとテーブルスクリプトを作成する - v...
目次1.entires() メソッドの詳細な構文2.entires() メソッドの一般的な使用法と注...
タイムスタンプの差を計算するSQLメソッド概要場合によっては、特定のレコードを時間で検索する必要があ...
目次前提条件RNはiOSに価値を渡す方法1: ネイティブに値を通常通り渡す方法2: コールバック関数...