Адаптация меню

Василич#
На сайте с 10.03.2009
Offline
111
881

Здравствуйте ! Пытаюсь сделать своё меню адаптивным.

Есть меню вида:

<div id="menu">
<ul>
<li><a href="#">Ссылка 1</a></li>
<li class="has-sub"><a href="Ссылка на основное меню">Ссылка 2</a>
<ul>
<li><a href="#">Подменю 1</a></li>
<li><a href="#">Подменю 2</a></li>
<li><a href="#">Подменю 3</a></li>
<li><a href="#">Подменю 4</a></li>
</ul>
</li>

<li class="has-sub"><a href="ссылка на основное меню">Ссылка 3</a>
<ul>
<li><a href="#">Подменю 1</a></li>
<li><a href="#">Подменю 2</a></li>
</ul>
</li>

</ul>
</div>

По умолчанию, при наведении курсора всплывают подменю. Под @media (query) подогнал меню под моб. устройства. Теперь стараюсь, чтобы при клике на основную ссылку, открывалось подменю, но не могу этого реализовать, ввиду того, что всегда переходит по основной ссылке.

Пните в нужном направлении, перелопатил много решений, но все тщетно.

Заранее спасибо

bmw-power.com.ua (https://bmw-power.com.ua)
S
На сайте с 13.10.2014
Offline
171
#1

li.has-sub > a:focus + ul{

display:block;

}

только с a href уберите ссылку, иначе вместо открытия будет переход на др страницу.

как вариант - глушить при помощи Js onClick="return false;"

апд

если вы хотите, чтободин клик открывал меню, а второй - переход, то это без сурового джи эса не обойтись.

апд2
la belle с точки зрения итальянского языка является ошибкой
la - это неопределенный артикль для женского рода в единственном числе
belle -означает красивые (множественное число женского рода -- оканчивается на е )
то-есть налицо несогласование артикля и прилагательного
правильно было бы le belle

извините, только с лекции по итальянскому приехал

danforth
На сайте с 18.12.2015
Offline
153
#2
silicoid:
то это без сурового джи эса не обойтись.

Там не очень то и сурово.

silicoid:
апд2
la belle с точки зрения итальянского языка является ошибкой
la - это неопределенный артикль для женского рода в единственном числе
belle -означает красивые (множественное число женского рода -- оканчивается на е )
то-есть налицо несогласование артикля и прилагательного
правильно было бы le belle

извините, только с лекции по итальянскому приехал

Нужно ещё на лекции по французскому сходить :)

Junior Web Developer
Василич#
На сайте с 10.03.2009
Offline
111
#3
silicoid:
li.has-sub > a:focus + ul{
display:block;
}
только с a href уберите ссылку, иначе вместо открытия будет переход на др страницу.
как вариант - глушить при помощи Js onClick="return false;"

Большое спасибо за ответ !

Ссылку не представляется возможным убрать, т.к. это главное меню и работает как должно на норм разрешении. Но проблема в том, что "глушить будет и на версии для ПК", что не нужно, а обязательно только для моб. В этом то и вся лобуда :(

silicoid:
апд2
la belle с точки зрения итальянского языка является ошибкой
la - это неопределенный артикль для женского рода в единственном числе
belle -означает красивые (множественное число женского рода -- оканчивается на е )
то-есть налицо несогласование артикля и прилагательного
правильно было бы le belle

хэх :D

R
На сайте с 29.07.2011
Offline
49
#4

Вариант, на JS проверять ширину экрана, попробуйте решение

onClick="if(document.documentElement.clientWidth < 768) return false;"

S
На сайте с 13.10.2014
Offline
171
#5

danforth, Ну суровый, в смысле больше, чем в одну строчку )

Василич#, тогда можно поступить следующим образом

1. подключить deviceJS - это такой миниатюрный скрипт, написаный на чистом JS, который в зависимости от того, какое у вас устройство добавляет соответствующие классы на body

2. добавляем примерно такой код [ jQuery ]

$(document).ready(function(){
$('body.mobile #menu .has-sub > a, body.tablet #menu .has-sub > a').click(function(){
return false;
})
})
dma84
На сайте с 21.04.2009
Offline
168
#6


@media screen and (max-width:768px)
{
#menu li.has-sub > a{pointer-events:none}
}
S
На сайте с 13.10.2014
Offline
171
#7

dma84, Очень интересный вариант!

Geers
На сайте с 12.04.2011
Offline
487
#8
silicoid:
dma84, Очень интересный вариант!

И самый правильный.. :)

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий