クリック、ドラッグ、リリース:Webページでテキストを選択したばかりです。おそらくどこかにコピーして貼り付けたり、共有したりします。そのテキストを選択して、それらのタスクを簡単にするいくつかのオプションが明らかになった場合、それはクールではないでしょうか?それが選択メニューが行うことです。
オンラインエディターを使用したことがある場合は、すでに選択メニューに精通している可能性があります。テキストを選択すると、選択をフォーマットするオプションがその上に浮かぶ場合があります。実際、私はこのドラフトを編集者に書いています。
JavaScriptの選択APIを使用して、このような選択メニューを作成する方法を見てみましょう。 APIは、Webページ上の選択された領域のスペースとコンテンツにアクセスできます。これにより、選択メニューを選択したテキストの上に正確に配置し、選択したテキスト自体にアクセスできます。
サンプルテキストを備えたHTMLスニペットは次のとおりです。
<h1 id="以下のテキストを選択します">以下のテキストを選択します</h1> <p>カスケードスタイルシート(CSS)は、HTMLなどのマークアップ言語で記述されたドキュメントのプレゼンテーションを説明するために使用されるスタイルシート言語です。 CSSは、HTMLとJavaScriptと並んで、World Wide Webの礎石テクノロジーです。 CSSは、レイアウト、色、フォントなど、プレゼンテーションとコンテンツの分離を可能にするように設計されています。この分離は、コンテンツのアクセシビリティを改善し、プレゼンテーション特性の仕様においてより柔軟性と制御を提供することができます。 </p> <span> </span>
最後にタグがあります。その中のは、選択メニューコントロールです。 タグ内のすべては、JavaScriptを使用してページに後で追加されるまでページにレンダリングされません。ユーザーがテキストを選択したときに、[選択]メニューコントロールをページに追加します。また、ユーザーがそのテキストを選択すると、選択メニューがユーザーにツイートするように促します。
これがスタイリングするCSSです:
#コントロール { バックグラウンドイメージ:url( "data:image/svg xml、<svg xmlns=" http://www.w3.org/2000/svg " width="'40px'" height="'40px'"> xmlns = 'http://www.w3.org/1999/xhtml' style = 'width:40px; height; height:40px; line-height:40px; text-align:center; color:transparent; text-shadow:0 0 yellow、2px 4px黒、-1px -1px black; font-size:35px; '>? </svg> "); カーソル:ポインター; 位置:絶対; 幅:40px; 高さ:40px; } #control :: before { 背景色:黒; 色:白; コンテンツ:「Tweet This!」; 表示:ブロック; font-weight:bold; マージン左:37px; マージントップ:6px; パディング:2px; 幅:最大含有; 高さ:20px; }
この記事をチェックして、背景画像に絵文字(?)をどのように使用したかを学びます。
これまでのところ、サンプルテキストの準備が整っており、選択メニューコントロールがスタイルを整えています。 JavaScriptに進みましょう。選択が行われたら、ページ上の選択した領域のサイズと位置を取得します。次に、これらの測定値を使用して、選択した領域の上部にある選択メニューコントロールの位置を割り当てます。
var control = document.importnode(document.queryselector( 'template')。コンテンツ、true).childnodes [0]; document.queryselector( 'p')。onpointerup =()=> { let selection = document.getSelection()、text = selection.toString(); if(text!== ""){ rect = selection.getRangeat(0).getBoundingClientRect(); control.style.top = `calc($ {rect.top} px -48px)`; control.style.left = `calc($ {rect.left} px calc($ {rect.width} px / 2)-40px)`; ['text'] = text; document.body.AppendChild(コントロール); } }
このコードでは、最初に内部の選択メニューコントロールのコピーを取得し、次に制御変数に割り当てます。
次に、サンプルテキストを運ぶ要素のonpointerupイベントのハンドラー関数を書きます。関数内で、document.getSelection()を使用して選択された文字列と選択した文字列を取得します。選択した文字列が空でない場合は、GetBoundingClientRect()を介して選択された領域のサイズと位置を取得し、rect変数に配置します。
rectを使用して、コントロールの上部と左の位置を計算して割り当てます。このようにして、選択メニューコントロールは、選択した領域の少し上に配置され、水平に中央に配置されます。また、選択した文字列をユーザー定義のコントロールプロパティに割り当てます。これは後でテキストを共有するために使用されます。
そして最後に、appendChild()を使用してWebページにコントロールを追加します。この時点で、ページ上のサンプルテキストの一部を選択すると、選択メニューコントロールが画面に表示されます。
次に、選択メニューコントロールがクリックされたときに何が起こるかをコーディングします。言い換えれば、プロンプトがクリックされたときにテキストがツイートされるようにすることになります。
control.addeventlistener( 'pointerdown'、oncontroldown、true); function oncontroldown(event){ window.open( `https://twitter.com/intent/tweet?text=$ {this.text}`) this.remove(); document.getSelection()。removeallranges(); event.stoppropagation(); }
コントロールがクリックされると、Twitterの「新しいツイート」ページでタブが開き、選択したテキストが準備が整っています。
ツイートプロンプトの後、選択メニューコントロールは不要になり、削除され、ページに作成された選択があります。この時点で、ポインターダウンイベントがDOMツリーのさらに下にカスケードする方法も停止します。
また、ページのOnpointerdownイベントのためのイベントハンドラーも必要です。
document.onpointerdown =()=> { let control = document.querySelector( '#control'); if(control!== null){control.remove(); document.getSelection()。removeallranges();} }
これで、ページ上の[選択]メニューコントロール以外の場所をクリックすると、ページに作成された選択が削除されます。
デモ
これが、クリスがまとめたより軽いバージョンです:
そして、選択メニューに複数のコントロールを示す例があります。
そのについて
私たちがそれを使用することは完全に必要ではありません。代わりに、非表示のHTML属性やCSSディスプレイなど、他の方法でコントロールを単純に隠して表示することもできます。また、JavaScript自体に選択メニューコントロールを構築することもできます。コーディングの選択肢は、必要に応じてそれらをどれだけ効率的に実行するか、およびそれらのフォールバックと、それらがアプリケーションにどのように適合するかに依存します。
いくつかのUI/UXアドバイス
これは良い効果ですが、適切なユーザーエクスペリエンスを確保するために使用する際に考慮すべきことがいくつかあります。たとえば、テキストの選択に独自のテキストを注入しないでください。自動生成されたツイートでリンクをサイトに戻すようなものです。それは邪魔で迷惑です。ソースの引用を追加するなど、それを行う理由がある場合は、投稿する前にユーザーに最終テキストのプレビューを見てもらいます。それ以外の場合、ユーザーは追加に混乱したり驚かされたりする可能性があります。
もう1つ:メニューコントロールが邪魔にならない場合が最善です。周囲のコンテンツをあまりカバーしたくありません。そのようなことは、CSSの「データ損失」につながり、それを避けたいと考えています。
結論:ユーザーがWebサイトでテキストを選択し、やろうとしていることの邪魔にならないようにコントロールを追加する必要がある理由を理解してください。
以上が選択APIを使用して選択したテキストのアクションを作成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ほとんどのWebアプリケーションの背後にあるアイデアは、データベースからデータを取得し、可能な限り最良の方法でユーザーに提示することです。そこでデータを扱うとき

&#039;は、理にかなっていると思われることを非常に実行できる状況を少し段階的に実行しますが、CSSのトリックでそれを成し遂げることができます。これで

庭のバラエティアンカーリンク()を作成できます。新しいメールを開きます。この機能に少し旅をしましょう。それは非常に使いやすいですが、何でも同じです

ここではほとんど告白:Netlify CMSを一目で見たとき、私は考えました:クール、多分私はいつか新しいプロジェクトのためにCMSSを探索したときにそれを試してみてください。それから

2018年12月、MicrosoftはEdgeがGoogle Chromeを強化するオープンソースプロジェクトであるChromiumを採用することを発表しました。業界内の多くは反応しました

新しいWordPressエディターであるGutenbergが好きです。私は、アクセシビリティ、UX、および準備に関するすべての会話を忘れていませんが、私はそれがどれほど難しいか知っています

メニューに使用することは興味深いアイデアかもしれませんが、おそらく実際に生産に出荷するものではないでしょう。 「詳細」を参照してください


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

SublimeText3 英語版
推奨: Win バージョン、コードプロンプトをサポート!

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター
