ページ上でショートカットキーをカスタマイズする要件に遭遇し、ショートカットキーを設定して表示する場所が必要になりました。Element UI を調べてみたところ、少し変更するだけで使用できるコンポーネントがなかったので、自分で作成しました。 効果は以下のとおりです。 要点入力のように見えますが、実際にはコンポーネント内にラベル効果が表示され、削除ボタンも必要です。これには、入力ボックスに HTML コードを配置する必要があります。ブラウザの Input コンポーネントは明らかに適切ではないため、Input コンポーネントの効果を自分で模倣することしかできません。 フォーカス、ぼかし、選択したハイライト効果非入力コンポーネントには、フォーカス、ぼかし、選択されたハイライト効果などの効果はありません。幸いなことに、ブラウザは実装方法を予約しており、ネットユーザーはオンラインですでに解決策を提供しています。divにtabindex="0"属性を追加することで、divはこれらの効果を得ることができます。 tabindex 属性は、Tab キーの順序を指定します。0 を指定すると、コンポーネントはデフォルトの順序で選択されます。-1 を指定すると、コンポーネントは選択されません。 Inputコンポーネントの形式なので、Tabで取得できるのは当然です。 次に、フォーカスボーダー効果を得るためにCSSを追加し、マウスを動かすとテキストタイプのポインターが表示されます。 .ショートカットキー入力{ カーソル: テキスト; 遷移: 境界線の色 0.2s 立方ベジェ(0.645, 0.045, 0.355, 1); } .ショートカットキー入力:フォーカス{ 境界線の色: #188cff; ボックスシャドウ: 0 0 4px rgba(24, 140, 255, 0.38); } テキストプロンプトコンテンツがない場合は、Input と同じにする必要があり、デフォルトでテキスト プロンプトを表示できます。これも内部に div を配置し、Vue で制御します。出力ラベル変数にデータがある場合、この要素は表示されません。 カーソルの点滅効果これは比較的簡単に処理できます。Input クラスに疑似要素を配置し、フォーカスが取得されたときにこの疑似要素を追加し、この要素に CSS3 アニメーションを与えると、点滅するカーソルの効果が得られます。 @keyframes 点滅 { 0% { 不透明度: 0; } 100% { 不透明度: 1; } } .ショートカットキー入力.カーソル::after { コンテンツ: "|"; アニメーション: 点滅 1.2 秒、緩和 0 秒、無限; フォントサイズ: 18px; 位置: 絶対; 上: 1px; 左: 8px; } キーキャプチャキーキャプチャは主にkeydownイベントに依存します。返されるイベントは、alt、ctrl(コントロール)などの情報が押されたかどうかを示しますので、この情報に頼ってキーの組み合わせを実現できます。 ハンドルキーダウン(e) { const { altKey、ctrlKey、shiftKey、キー、コード } = e; if (!CODE_CONTROL.includes(キー)) { if (!this.keyRange.includes(code)) が返されます; controlKey = "" とします。 [ { キー: altKey、テキスト: "Alt" }, { キー: ctrlKey、テキスト: "Ctrl" }, { キー: shiftKey、テキスト: "Shift" } ].forEach(現在のキー => { (curKey.key) の場合 { if (controlKey) controlKey += "+"; コントロールキー + = curKey.text; } }); if (キー) { if (controlKey) controlKey += "+"; コントロールキー += key.toUpperCase(); } this.addHotkey({ text: controlKey, controlKey: { altKey, ctrlKey, shiftKey, key, code } }); } e.preventDefault(); }, CODE_CONTROL は、処理を簡単にするための別のプリセット キー コード セットです。元々は keyCode が使用されていましたが、keyCode は非推奨となり、code が推奨されます。 addHotkey(データ) { this.list.length && this.list.some(item => data.text === item.text) の場合、戻り値は次のようになります。 this.list.length && this.list.length.toString() === this.max.toString() の場合、戻り値は次のようになります。 if (!this.verify(data)) が返されます; this.list.push(データ); } オンラインプレビューhttps://codesandbox.io/s/vue-hotkeyinput-90m2k 以上が、キー表示ショートカットの効果を得るためのVueのInputコンポーネントの実装の詳細です。Vueの表示ショートカットキーの詳細については、123WORDPRESS.COMのその他の関連記事にも注目してください! 以下もご興味があるかもしれません:
|
<<: Vueはvue-quill-editorリッチテキストエディタを使用し、画像をサーバーにアップロードします。
>>: Vue コンポーネントはどのように解析され、レンダリングされるのでしょうか?
目次01 Kubernetes とは何ですか? 02 KubernetesとCompost+Swar...
マシンに MySQL バージョン 5.0 がすでに存在する場合は、最新バージョンの MySQL のイ...
関連記事:初心者が学ぶ HTML タグ (1)初心者は、いくつかの HTML タグを理解することで ...
1. 崩壊度が高いドキュメント フローでは、親要素の高さはデフォルトで子要素によって拡張されます。つ...
この記事では、左ボタンと右ボタンをクリックすることで画像を切り替えるjQueryの具体的なコードを例...
プライベート Docker レジストリのインストールとデプロイは、Docker テクノロジーを導入、...
MySQLリモート接続の問題に関しては、会社で働いているときに誰かのコンピュータに保存されているMy...
この記事では、ローカルストレージの追加、削除、変更を実装するためのVueの具体的なコードを例として紹...
forループ基本的な構文形式: for(変数の初期化; 条件式; 演算式){ループ本体ステートメント...
今日は折り紙飛行機(飛べる飛行機)を作ります基本的にすべてCSSで実装されており、JSはごく一部に過...
シンプルなアプリケーションの展開1. ディレクトリ構造: └── Pythonpro #ディレクトリ...
最近、Web 開発のフロントエンドとバックエンドの技術を学んだので、その後の管理を容易にするためにプ...
序文MySQL には次の 4 種類の演算子があります。算術演算子比較演算子論理演算子ビット演算子これ...
デフォルトでは、MyISAM テーブルはディスク上に .frm (テーブル構造ファイル)、.MYD ...
目次関数定義方法関数呼び出し(6種類)これは問題を指摘している厳密モード高階関数閉鎖再帰: 自分自身...