純粋なCSSソリューション
これは状況に応じて機能する場合と機能しない場合がありますが、IE8以降のcssセレクターを使用してドロップダウンメニューの動作を実際に模倣することができます。これが例です。メニューをクリックすると、コンテンツにカーソルを合わせるとコンテンツが表示されますが、JavaScriptは必要ありません。
機能性
デフォルトでは、すべてのコンテンツが非表示になっています。ただし、:active疑似クラスのおかげで、親がクリックされたときに表示されるコンテンツを変更できます。ただし、これはかなり不便です。ユーザーが何かを表示するには、マウスを押したままにする必要があります。ただし、ユーザーがクリックしてホバーするとコンテンツが表示される:hover疑似クラスを追加することで、少しごまかすことができます。
これまでのところ、このcssがあります:
.container.content {
display: none;
}
.container:active .content {
display: block;
}
.content:hover {
display: block;
}
ただし、これは少し不安定です。コンテンツを保持するには、コンテンツの上でマウスを下に動かす必要があり、混乱する可能性があります。ただし、コンテンツを表示よりも大きくすることで、少しごまかすことができます。これを行う簡単な方法は、パディングすることです(これは、追加した例で行ったことです)が、これにより、奇妙なリフローの問題が発生する可能性があります。私が思うより良い方法は、フローを変更せずにコンテンツのサイズを追加する意図的な間隔divを追加することです。
これを追加すると
<div style="position:absolute; top:-50px; height: 50px; width: 100%;"></div>
コンテンツの先頭まで、メニューの上にホバーしている非表示のdivがあります。これにより、ホバーが機能する領域が拡張されます。同様のことを下部でも行うことができ、ホバー領域が大きく、メインコンテンツを超えるリフローをトリガーしないソリューションが残ります。
残りの問題
とにかく、これは確かにjavascriptほど柔軟ではないため、完璧ではありません。スライドはなく、ユーザーがマウスを外した場合にコンテンツを確実に表示させることはできません。
他の人が示唆しているように、ユーザーがそれを有効にした場合でも、事後にjavascriptを使用してこれを改善することができます-これは、noscriptユーザーへの適切なバックアップとして引き続き機能します。