Взгляните на следующее меню:
.clearfix::after {
content: "";
clear: both;
display: table;
}
#my-menu-inner > ul {
margin:10px;
width:100%;
background-color:yellow;
list-style-type:none;
position:relative;
}
#my-menu-inner > ul > li {
float:left;
margin:20px;
}
#my-menu-inner > ul > li > a {
padding:20px;
border:1px solid black;
display:block;
}
#my-menu-inner > ul > li > div.sub {
position:absolute;
top:calc(100% - 20px);
background-color:red;
padding:40px;
display:none;
left:0;
width:100vw;
}
#my-menu-inner > ul > li a:hover + div.sub, #my-menu-inner > ul > li a:focus + div.sub,
#my-menu-inner > ul > li > div.sub:hover, #my-menu-inner > ul > li > div.sub:focus {
display:block;
}
<div id="whatever">Just something before ...</div>
<div id="my-menu">
<div id="my-menu-inner">
<ul class="clearfix">
<li>
<a href="http://www.example.com/foo/">foo</a>
<div class="sub">
<ul>
<li><a href="http://www.example.com/mobile/">mobile</a></li>
<li><a href="http://www.example.com/users/">users</a></li>
</ul>
</div>
</li>
<li>
<a href="http://www.example.com/bar/">bar</a>
<div class="sub">
<ul>
<li><a href="http://www.example.com/never/">never</a></li>
<li><a href="http://www.example.com/see-me/">see me</a></li>
</ul>
</div>
</li>
</ul>
</div>
</div>
Это хорошо работающее меню для всех, у кого есть мышь или тачпад.Тем не менее: пользователи мобильных устройств никогда не увидят подменю, поскольку они мгновенно переходят в местоположение href
, как только они нажимают одну из ссылок.И у них нет состояний наведения, ofc.
О чем я думал:
Идея 1 : есть отдельное мобильное меню для сенсорных устройств.Это замечательно, потому что большинство проектов в любом случае имеют отдельные мобильные меню.
Проблема: @media screen (max-width: 1000px)
не будет достаточным методом, чтобы определить, может ли пользователь зависать / фокусироваться, как, например, все с большим сенсорным экраном.исключено.
Идея 2: preventDefault()
при нажатии на ссылки.Проверьте, было ли ранее обнаружено движение мыши, и если да, перейдите по ссылке.Если не требуется повторного щелчка.
Проблема: Требование двух кликов, вероятно, не удобно для пользователя (многие не признают, что ссылка кликабельна).
Что хорошои рекомендуемый способ справиться с этой ситуацией?