Как исправить многоуровневые подпункты Slimmenu, выходящие за пределы экрана

#javascript #jquery #css

#javascript #jquery #css

Вопрос:

Я использую slimmenu для своего веб-сайта. но, к сожалению, подменю исчезает с экрана моего рабочего стола, если есть вложенные дочерние элементы. Поэтому я попытался добавить класс «edge» с помощью «ul», когда он исчезнет с экрана.

Вот скриншот предварительного просмотра, в котором я использовал код https://codepen.io/themeix/pen/gyxGNO

Но мой код не работает. Вот мой HTML-код.

 <div class="main-menu-area">
   <div class="logo-area">
      <h1>My Logo  </h1>
   </div>
   <div class="menu-warpper">
      <div class="navigation-navbar">
         <ul id="navigation" class="slimmenu">
            <li><a href="#">Main Item</a></li>
            <li><a href="#">Main Item</a></li>
            <li><a href="#">Main Item</a></li>
            <li><a href="#">Main Item</a></li>
            <li>
               <a href="#">Main Item</a>
               <ul>
                  <li>
                     <a href="#">Sub Menu 1</a>
                     <ul>
                        <li>
                           <a href="#">Sub Menu 2</a>
                           <ul>
                              <li>
                                 <a href="#">Sub Menu 3</a>
                                 <ul>
                                    <li>
                                       <a href="#">Sub Menu 4</a>
                                       <ul>
                                          <li>
                                             <a href="#">Sub Menu 5</a>
                                             <ul>
                                                <li><a href="#">Sub Menu 6</a></li>
                                             </ul>
                                          </li>
                                       </ul>
                                    </li>
                                 </ul>
                              </li>
                           </ul>
                        </li>
                     </ul>
                  </li>
                  <li><a href="#">Sub Menu 1</a></li>
               </ul>
            </li>
         </ul>
      </div>
   </div>
</div>
  

Я попробовал следующий js-код, чтобы ввести класс edge, но, к сожалению, он добавляется для всех ul, когда пункты подменю выходят за пределы экрана.. Я хочу вводить только для определенного ($ this) элемента подменю, когда он выходит за пределы экрана.

 jQuery(".slimmenu li").on('mouseenter mouseleave', function(e) {
    if (jQuery('ul', this).length) {
        var elm = jQuery('ul:first', this);
        var off = elm.offset();
        var l = off.left;
        var w = elm.width();
        var docH = jQuery(".navigation-navbar").height();
        var docW = jQuery(".navigation-navbar").width();
        var isEntirelyVisible = (l   w <= docW);
        if (!isEntirelyVisible) {
            jQuery(this).addClass('edge');
        } else {
            jQuery(this).removeClass('edge');
        }
    }
});
  

в этом js code добавляется класс edge для всех элементов подменю, но я хочу ввести его только для текущего элемента .has-submenu при наведении курсора мыши и его выходе из экрана. и removeclass также не работает, когда я оставляю мышь. Кто-нибудь может помочь мне решить эту проблему для меня с помощью js?

введите описание изображения здесь

Ответ №1:

удалите ширину вашего меню …. между навигационной ссылкой ограниченное пространство, и именно поэтому это произошло.

Комментарии:

1. Да .. я знаю .. но я использовал меньшую ширину, чтобы показать проблему. Я действительно хочу исправить проблему видимости этого подменю с помощью js для любого многоуровневого выпадающего списка