ウェブページのカスタム選択ボックス選択

ウェブページのカスタム選択ボックス選択

選択ドロップダウン リスト フォームは誰もがよく知っているかもしれませんが、デフォルトのドロップダウン リスト フォームでは一部の Web サイトの見た目が醜くなってしまうことが多く、CSS を使用して選択スタイルを調整することも困難です。そのため、ウェブサイトのスタイルに合わせた選択ドロップダウンフォームを作成するために、多くのウェブサイトでは JS を使用してこの効果をシミュレートすることがよくあります。

たとえば、おなじみの Tudou.com、Taobao Mall、Amazon はすべて、ドロップダウン リスト フォームを作成するために JS を使用しています。

その結果、ウェブサイト全体のスタイルと視覚的に統一され、ドロップダウン リストのスタイルは非常に美しくなりましたが、いくつかの副作用ももたらしました。JS で行われるため、予期しない影響が多く発生します。3 つのウェブサイトのテストを通じて、それぞれの欠陥を 1 つずつ分析してみましょう。

Tudouの検索カテゴリ選択ボックスは、クリックするたびに奇妙な感じがします。
tudou-select.png

1. クリックした後、ポップアップ リストの位置が予想と異なります。無意識のうちにドロップダウン リストだと思っていましたが、Tudou は「中間ドロップダウン リスト」を表示しました。
2. 習慣的に上下キーを使用して項目を選択しますが、代わりにページ全体がスクロールします。
3. 怒りのあまり、それをシャットダウンしたくなる。 ESC キーを押しても何も起こりませんでした。
4. JS を無効にすると、完全に使用できなくなります。

同様に、 Taobao Mallも美しく見えます。
タオバオセレクト.png

1 点目を除き、その他は Tudou と同じで、アクセシビリティとユーザビリティに問題があります。

解決策は簡単だAmazonのようなネイティブの選択ボックスを使用するだけです。
amazon-select.png

Web ページでカスタム選択ボックスの使用が推奨されないのはなぜですか?

選択ボックスは非常に成熟したインタラクティブ コントロールです。成熟とは、ユーザーが容易に受け入れることができることを意味しますが、成熟とは、さまざまなユーザーを慎重に考慮し、非常に豊富なインタラクティブな詳細があることも意味します。たとえば、PgUp/PgDn、Home/End などのキーボード操作に応答したり、さまざまな位置にあるドロップダウン リストのポップアップ方向を自動的に調整したりします。

JS を使用して選択ボックスをシミュレートするには、多くの作業と慎重なテストが必要です。たとえ企業が投資する意思があったとしても、ネイティブ コントロールの一部の機能を実現することはできません。たとえば、上記の Amazon の選択ボックスでは、ブラウザを非常に低く引いており、ドロップダウン リストがブラウザの外側まで伸びています。

ちょっとした「視覚的なデザート」のために、インタラクションでは多くの実用的な詳細が失われ、フロントエンドプログラマーの多くの時間が無駄になりますが、その結果は報われない作業となり、本当にひどいものになります。

PS: カスタム選択ボックスを使用するには、次の条件を満たす必要があります。

1. Google と同じくらい熱心になり、多くの時間とリソースを費やす覚悟があること。
2. Google と同じように細心の注意を払ってください。何かをしたいなら、きちんとやりましょう。何かをシミュレートしたいなら、徹底的にシミュレートしましょう。
3. Webアプリで申請します。

残念ながら、国内には Google や Facebook ほど熱心で細心の注意を払う企業は存在しません。

<<:  js 配列エントリ() 反復メソッドを取得する

>>:  純粋な CSS3 で美しい入力ボックスアニメーションスタイルライブラリを実現 (テキスト入力愛)

推薦する

Docker で Jenkins-2.249.3-1.1 をインストールする詳細な手順

目次1. Dockerをインストールする2. Jenkinsイメージファイルを取得する3. マウント...

Vueは、センシティブな単語フィルタリングコンポーネントを検出するためのさまざまなアイデアを実装しています。

目次前面に書かれた要件分析 v1アイデア1: インターセプションメソッドを使用して入力ボックスの入力...

フレームウィンドウ間の関連付けとハイパーリンクのターゲット属性の使用を実装する方法

フレーム ウィンドウの関連付けを実現するには、次に示すように、ハイパーリンクの「ターゲット」ウィンド...

CSS3 の Flex レイアウトの詳細な分析

Flexbox レイアウト モジュールは、コンテナー内のスペースをより効率的に配分する方法を提供する...

Node.js の TCP 接続処理のコア プロセス

数日前、友人と Node.js の epoll とリクエスト処理に関する知識を交換しました。今日は、...

VMware Tools を最初からインストールするための詳細な手順 (グラフィック チュートリアル)

VMware Tools は VMware 仮想マシンに付属するツールで、VirtualBox (...

Vue命令の実装原理の分析

目次1. 基本的な使い方2. 指示の動作原理2.1. 初期化2.2 テンプレートのコンパイル2.3....

URLに基​​づいてリクエストを転送するnginxの実装の実践経験

序文これは fastdfs を使用してイントラネット外部に展開された分散ファイルシステムであるためで...

MySQLの保存場所を新しいディスクに移行する方法

1. 新しいディスクを準備し、現在のルートパーティションと同じファイルシステムでフォーマットし、ディ...

レンダリング関数を使用して、拡張性の高いコンポーネントをカプセル化する

必要:バックグラウンド管理では、次のようなレイアウトでデータを表示する必要があることがよくあります。...

HTML と CSS を書くための 6 つの最も効果的な方法

この記事では、効率を向上させ、時間を節約することを願って、最も効果的な 6 つの方法を紹介します。 ...

Reactエラー境界コンポーネント処理

React 16の内容です。最新技術ではありませんが、ドキュメントで調べるまであまり話題に上がらなか...

Vue で Excel インポート機能を実装する詳細な手順

1. フロントエンド主導の実装手順最初のステップは、ページのインポートボタンをクリックしてExcel...

MySQL の厄介な Aborted 警告をケーススタディで分析する

この記事では主に、MySQL の Aborted アラームに関する関連コンテンツを紹介し、参考と学習...

MySQL で特定の日、月、または年のデータをクエリするためのコードの詳細な説明

今日 テーブル名から * を選択します。ここで、to_days(時間フィールド名) = to_day...