2016-01-08 2 views
0

Я работаю с Orchard на тему, основанной на Bootstrap. CSS-код навигации меню выглядит так и отлично работает при наведении курсора на меню второго уровня.Orchard многоуровневое выпадающее меню при нажатии только

.dropdown-menu .dropdown-menu { 
    left: 100% !important; 
    top: 0; 
} 

.dropdown .dropdown:hover > .dropdown-menu, 
.dropdown .dropdown .dropdown:hover > .dropdown-menu, 
.dropdown .dropdown .dropdown .dropdown:hover > .dropdown-menu { 
    display: block; 
} 

.dropdown-menu i { 
    line-height: 1.42857143; 
} 

Теперь я хотел бы для всех уровней этого выпадающего меню, чтобы открыть только по щелчку, потому что это не работает на сенсорных устройствах. Когда я меняю ': hover's to: focus, все закрывается, когда нажимается второй уровень nav-bar. Я действительно не квалифицированный кодировщик html/css, поэтому я не уверен, как это работает. Я предполагаю, что dropdown - это имя класса ul и dropdown-menudiv Это меню находится в, но я не уверен, так как весь код сгенерирован ... Кроме того, мне жаль, что у меня не так замечательно на английском языке. Спасибо.

+0

пытаются этого $ ('выпадающий .dropdown.) .on ('click', function() { $ (это) .find ('. dropdown-menu'). show(); }); –

+0

Ну, так как это не обычный html, но cshtml, я написал ваш код в моем файле custom.js, но он не работает ... должен ли я также изменить код css? – Adder

+0

Я получил Orchard для выполнения ваших js, но он открывает второй и третий уровень под всей навигацией (под оранжевой линией на изображении), и я закрываю его внутри навигации. это как моя навигация выглядит ... http://www.image-share.com/ipng-3142-278.html и это нав-бар иерархии в моем HTML .. HTTP://ShareText.net/tBb.html – Adder

ответ

0

Как вы можете видеть в этом примере: http://codepen.io/HerrSerker/details/wMdgER/ :focus не работает, потому что вы не можете пузырек с CSS3-, как вы можете сделать с :hover и вы можете иметь только один элемент с :focus. Таким образом, у вас нет памяти :focus

Душа заключается в том, чтобы создать обходное решение с чем-то, что имеет память. Вы должны использовать переключатели с помощью переключателя :checked и смежного комбинатора (A + B).

Смотрите здесь: http://codepen.io/HerrSerker/pen/obWBVG

Затем вы должны скрывать кнопки радио и пусть лейблы делают работу

nav ul label { 
 
    display: block; 
 
} 
 
nav ul > li > label > input:checked + ul { 
 
    display: block; 
 
} 
 
nav ul.lvl-2 { 
 
    display: none; 
 
}
<nav> 
 
    <ul class="lvl-1"> 
 
    <li> 
 
     <label for="id-lvl1-01"> 
 
     <input type="radio" name="lvl-1" id="id-lvl1-01" />1 
 
     <ul class="lvl-2"> 
 
      <li> 
 
      <label for="id-lvl2-01-01"> 
 
       <input type="radio" name="lvl-1-1" id="id-lvl2-01-01" />01</label> 
 
      </li> 
 
      <li> 
 
      <label for="id-lvl2-01-02"> 
 
       <input type="radio" name="lvl-1-1" id="id-lvl2-01-02" />02</label> 
 
      </li> 
 
     </ul> 
 
     </label> 
 
    </li> 
 
    <li> 
 
     <label for="id-lvl1-02"> 
 
     <input type="radio" name="lvl-1" id="id-lvl1-02" />2 
 
     <ul class="lvl-2"> 
 
      <li> 
 
      <label for="id-lvl2-02-01"> 
 
       <input type="radio" name="lvl-1-2" id="id-lvl2-02-01" />01</label> 
 
      </li> 
 
      <li> 
 
      <label for="id-lvl2-02-02"> 
 
       <input type="radio" name="lvl-1-2" id="id-lvl2-02-02" />02</label> 
 
      </li> 
 
     </ul> 
 
     </label> 
 
    </li> 
 
    </ul> 
 
</nav>

+0

Благодарим за отзыв, но я не могу редактировать html в Orchard, потому что он создается при запуске. Я попытался поместить части вашего кода в html в свои раскрывающиеся пункты меню, но Orchard генерирует некоторый код между ними: /. CSS определенно не может быть и речи? – Adder

+0

Если у вас нет контроля над выходом, который делает ваша CMS, то это плохой CMS. Я ничего не знаю о Орчанде. Вы должны исследовать, если вы можете изменить вывод меню из Orchard – HerrSerker

+0

Я думаю, вам нужно изменить тему: http://docs.orchardproject.net/Documentation/Anatomy-of-a-theme#ShapeTemplates – HerrSerker

Смежные вопросы