我知道標題太籠統。我找不到具體的標題。Css懸停+點擊/觸摸觸摸設備上的奇怪行爲
這裏是樣品https://jsfiddle.net/Exlord/1soagsL5/
HTML
<ul>
<li>item1</li>
<li>item1</li>
<li>item with submenu >
<ul>
<li>item1</li>
<li>item1</li>
</ul>
</li>
<li>item1</li>
<li id='clickable'>item1</li>
</ul>
的JavaScript
var el = document.getElementById('clickable');
el.addEventListener('click', function(e) {
console.log(e.target);
}, false);
CSS
ul {
list-style: none;
margin: 0;
padding: 0;
width: 200px;
max-width: 100%;
}
li {
background: gray;
padding: 5px;
border: solid 1px black;
position: relative;
}
li:hover > ul {
display: block;
}
@media all and (min-width: 481px) {
ul ul {
display: none;
position: absolute;
left: 100%;
top: 0;
}
}
@media all and (max-width: 480px) {
ul ul {
display: none;
}
}
試試吧,這是一個非常簡單的菜單,懸停中間項目項目與子菜單,將顯示一個簡單的子菜單與簡單的CSS :hover
。
點擊最後一項,它有一個點擊事件,它會正確啓動。
現在在Chrome的移動設備mod中用觸摸模擬打開它。
單擊/觸摸具有子菜單的項目,子菜單將在父元素內部打開。這是預期的行爲。
現在點擊/觸摸最後一個元素。點擊事件不會觸發。
我該如何解決這個與CSS只有hover
?
更新:據我可以告訴的問題是,在第一次觸摸的最後懸停的元素(li
與子菜單)返回unhovered和子菜單ul
被隱藏,而家長ul
的高度萎縮,那是li
元素在觸摸點下移動,所以它不在觸摸點了,它不會被點擊/觸摸!
不,不起作用。我認爲這個問題是,第一次觸摸時,最後一個被覆蓋的元素被隱藏起來,子菜單'ul'被隱藏起來,並且被觸摸點之下的'li'元素向上移動,所以它不再處於觸摸點之下,而且它不得到點擊/感動!!!! – Exlord
只是爲了澄清,因爲我沒有在答案中這麼說,其目的是用我的代碼片段替換你的'li:hover> ul'聲明。兩者都離不開。 – Gwellin
nope,嘗試一下。不工作。 – Exlord