クイックチェック:動作中のJSFiddle
ドロップダウン メニューのリンクをクリックしても機能しない理由について、誰か説明を手伝ってもらえますか? 多分ポインターイベントのためですか?
この動作の理由についての説明: はい、その通りです. セレクタ ロジックの使用方法が原因です.:active
詳細を説明するには、この CSS ルールを検討してください
.container:hover .test1:active {
display: none;
}
メインの下にメニューリンクli.test1
があり、内部リンクをクリックすると、この要素までバブルアップされるため、li
. したがって、マウスが押されるとすぐに (マウス ダウン イベント)、イベントがトリガーされ、 (ie :active
:) が非表示になりますが、クリック イベントは、マウスがダウンとアップの両方の場合にのみ完了します。そのため、は非表示になり、はリンク上になくなりました。ご覧のとおり、クリック イベントがトリガーされる可能性はありません。これが問題です。links
li.test1
li
mouse up
I saw other answers which you seem to be interested in and this really doesn't need any kind of hack, It can be done by just formatting your HTML and with some CSS changes.
解決策:内部メニュー リンクを 内にラップするのではなく、2 つの異なるli.test1
を使用できます。1 つは 用、もう 1 つはを保持するためです。これを配置すると、がアクティブなとき(つまり、マウスが押されているとき) にいつでもそれを非表示にすることができ、それに隣接する他の新しいものも非表示にすることができます。つまり、ユーザーがクリックするとメニューが非表示になり、他のメニュー項目をクリックするとリダイレクトされます。li
X CLose
menu links
li.test1
li
X Close
li
したがって、HTML 構造の変更は次のようになります。
<ul class="container">
Drop down menu
<li class="test1">
<a class="dropdown" href="#">X Close</a>
</li>
<li class="MenuLinks">
<ul class="content">
<!-- all your links go here-->
</ul>
</li>
</ul>
そしてメインのCSSルールは
.container:hover .test1:active,
.container:hover .test1:active + .MenuLinks {
display: none;
}
以下はSOの作業スニペットです
body {
padding: 20px;
}
.container {
border: 1px solid lime;
padding: 10px;
width: 200px;
list-style-type: none;
}
.test1,
.MenuLinks {
display: none;
border-color: orange;
border-style: dashed;
background: green;
pointer-events: none;
}
.test1 {
padding: 10px;
border-width: 1px 1px 0px 1px;
}
.MenuLinks {
border-width: 0px 1px 1px 1px;
}
.container:hover li {
display: block;
}
/*Rule to hide both test1 and MenuLinks when X Close is clicked*/
.container:hover .test1:active,
.container:hover .test1:active + .MenuLinks {
display: none;
}
a {
pointer-events: auto;
color: lime;
font-weight: bold;
}
<ul class="container">
Drop down menu
<li class="test1">
<a class="dropdown" href="#">X Close</a>
</li>
<!--seperate li for close-->
<li class="MenuLinks">
<!--wrap all your menu items here-->
<ul class="content">
CLOSE THIS CONTENT
<li class="link"><a href="http://www.google.com">Go to link 1</a>
</li>
<li class="link"><a href="https://www.google.co.uk">Go to link 2</a>
</li>
<li class="link"><a href="https://www.google.co.uk">Go to link 3</a>
</li>
</ul>
<li>
</ul>
注:リンクをクリックしたときに空白の画面が表示されるのは、クロス オリジン ポリシーに関する Google のセキュリティ制限により、コンソールでこのエラーが発生するためです。
Refused to display 'https://www.google.co.in/?gfe_rd=cr&ei=x2VWWLL2Ae-K8Qfwx4ngDQ' in a frame because it set 'X-Frame-Options' to 'SAMEORIGIN'.
ただし、リンクをクリックすると、ネットワーク タブにリクエストが表示されます。
お役に立てれば!!