そこで、CSS をより深く学び始めることにし、純粋な CSS ドロップダウン メニュー/選択ボックスの実装を試みることから始めました。いくつかのオンライン チュートリアルで利用可能なコードを調べることから始めました。
最終的に、私はこれを思いつきました。これはかなりまともだと思います。しかし、Javascript を捨てると微妙な問題が発生するため、すべての場合において、CSS メニューが Javascript メニューの適切な代替にはならない可能性があるという結論に達しました。
ドロップダウン メニューの項目が単なる<a href
リンクであれば、すべて問題ありません。ただし、各リンクで Javascript イベントを発生させたい場合は、次の問題が発生します。
ユーザーがドロップダウン ボックスの項目をクリックすると、ドロップダウン ボックスが消えるようにする必要があります。ドロップダウン ボックス内の項目が要素の場合、これは自動的に行われます
<a>
。それらが<a>
要素でない場合、ドロップダウン ボックスはクリックしても消えません。つまり、次の 2 つのオプションがあります。(A) リッスンする Javascript を配線してonclick
から、ドロップダウン ボックスを非表示にするか、または (B ) css:active
セレクターを使用して、ドロップダウン ボックスのdisplay
プロパティをに設定しますnone
。(A) は基本的にその時点で Javascript メニューに戻っているため、愚かであり、(B) メニューの項目をクリックしたときに Javascript イベントが発生しないため、うまくいきません。そのため、タグを使用する必要があります。
<a>
つまり、イベントをメニュー項目の選択に関連付けるにはonclick
、<a>
タグでインラインを使用する必要があります。それは問題ありませんが、それを行う場合を除いて、ドロップダウンメニューが消えるのを防ぎます(私のjsfiddleリンクで示されているように)。したがって、実際には、CSS のみのドロップダウン メニューは、ユーザーがメニュー項目を選択したときにやりたいことが<a>
リンクを介して別のページに移動することだけである場合にのみ機能するように見えます。いくつかの落とし穴が付属していない Javascript 関数を起動する方法が見つかりません。
質問:それで、私が言ったことは正確ですか? または、(A)ユーザーがクリックすると消え、(B) Javascript 関数をトリガーする CSS のみのドロップダウン メニューを作成する方法はありますか?