2014-01-02 3 views
0

Я играю вокруг с преобразованием горизонтальной вниз вниз по вертикали вниз. Проблема в том, что у меня это похоже на падение, но ли под первым не «активируется». Я даже не могу наложить на них зависание. СМЧ у меня есть следующиеПреобразование horozontal падение вниз по вертикали падение * решена *

Не следует забывать, что это падение вниз Java, так что я теперь добавил код Java

Iv провел несколько часов на это, и просто не могу показаться, чтобы найти решение. Любое понимание было бы весьма благодарным.

#menu { 
    position:absolute; 
    display:block; 
    padding: 0 5px 0 5px; 
    width: 225px; 
    height:400px; 
    font-size: 15px; 
    font-size: 15px; 
     font-style: normal; 
     font-weight: lighter; 
    margin:0px; 
    padding-right:10px; 
     text-align: right; 
     text-decoration: none; 
    font-family: "Palatino Linotype","Book Antiqua",Palatino,serif; 
    } 

#menu { 
    text-transform: uppercase; 
    letter-spacing: -1px; 
    padding:0px; 
    color: #333333; 
} 

#menu a { 
    color: #333333; 
    text-decoration: none; 
} 

#menu ul { 
    list-style: none; 
} 

#menu ul li { 
    position:relative; 
    display:block; 
    padding: 0 20px 0 20px; 
    display: inline-block; 
    width: 225px; 
    list-style: none outside none; 
} 

#menu ul li.first { 
    padding-left: 0; 
} 

#menu ul li.active { 
    position:relative; 
    display:block; 
    background: #346176 url(images/btn_bg.jpg) top left no-repeat; 
} 

#menu .arrow { 
    display: inline-block; 
    margin: 0 0 0 0.5em; 
    position: relative; 
    width: 0; 
    height: 0; 
    top: -3px; 
    border-bottom: 1px solid #E8D3A3; 
} 

Java код

(function($) { 

    jQuery.fn.dropotron = function(options) { 
     var settings = jQuery.extend({ 
      selectorParent:  jQuery(this) 
     }, options); 
     return jQuery.dropotron(settings); 
    } 

    jQuery.dropotron = function(options) { 

     // Settings 
      var settings = jQuery.extend({ 
       selectorParent:   null,    // The parent jQuery object 
       menuClass:    'dropotron',  // Menu class (assigned to every UL) 
       expandMode:    'hover',   // Expansion mode ("hover" or "click") 
       hoverDelay:    150,    // Hover delay (in ms) 
       hideDelay:    250,    // Hide delay (in ms; 0 disables) 
       openerClass:   'opener',   // Opener class 
       openerActiveClass:  'active',   // Active opener class 
       mode:     'slide',   // Menu mode ("instant", "fade", "slide", "zoom") 
       speed:     'fast',    // Menu speed ("fast", "slow", or ms) 
       easing:     'swing',   // Easing mode ("swing", ???) 
       alignment:    'left',    // Alignment ("left", "center", "right") 
       offsetX:    0,     // Submenu offset X 
       offsetY:    0,     // Submenu offset Y 
       baseZIndex:    1     // Base Z-Index 
      }, options); 

     // Variables 
      var _top = settings.selectorParent, _menus = _top.find('ul'); 
      var _window = jQuery('html'); 
      var isLocked = false, hoverTimeoutId = null, hideTimeoutId = null; 

     // Main 
      if (settings.hideDelay > 0) 
      { 
       _menus.add(_top.children('li').has('ul')) 
        .mousemove(function(e) { 
         window.clearTimeout(hideTimeoutId); 
         hideTimeoutId = null; 
        }) 
        .mouseleave(function(e) { 
         if (hideTimeoutId == null) 
          hideTimeoutId = window.setTimeout(function() { 
           _top.trigger('doCollapseAll'); 
          }, settings.hideDelay); 
        }); 
      } 

      _top 
       .bind('doCollapseAll', function() { 
        _menus 
         .trigger('doCollapse'); 
       }); 

      _menus.each(function() { 
       var menu = jQuery(this), opener = menu.parent(); 

       menu 
        .hide() 
        .addClass(settings.menuClass) 
        .css('position', 'absolute') 
        .bind('doExpand', function() { 

         if (menu.is(':visible')) 
          return false; 

         window.clearTimeout(hideTimeoutId); 

         _menus.each(function() { 
          var t = jQuery(this); 
          if (!jQuery.contains(t.get(0), opener.get(0))) 
           t.trigger('doCollapse'); 
         }); 

         var left, top, isTL = (menu.css('z-index') == 1), oo = opener.offset(), op = opener.position(), opp = opener.parent().position(), ow = opener.outerWidth(), mw = menu.outerWidth(); 

         if (isTL) 
         { 
          top = oo.top + opener.outerHeight(); 

          switch (settings.alignment) 
          { 
           case 'right': 
            left = oo.left - mw + ow; 

            if (left < 0) 
             left = oo.left; 

            break; 

           case 'center': 
            left = oo.left - Math.floor((mw - ow)/2); 

            if (left < 0) 
             left = oo.left; 
            else if (left + mw > _window.width()) 
             left = oo.left - mw + ow; 

            break; 

           case 'left': 
           default: 
            left = oo.left; 

            if (left + mw > _window.width()) 
             left = oo.left - mw + ow; 

            break; 
          } 
         } 
         else 
         { 
          // Non-static position fix 
           if (opener.css('position') == 'relative' 
           || opener.css('position') == 'absolute') 
           { 
            top = settings.offsetY; 
            left = (-1 * op.left); 
           } 
           else 
           { 
            top = op.top + settings.offsetY; 
            left = 0; 
           } 

          switch (settings.alignment) 
          { 
           case 'right': 
            left += (-1 * opener.parent().outerWidth()) + settings.offsetX; 

            break; 

           case 'center': 
           case 'left': 
           default: 
            left += opener.parent().outerWidth() + settings.offsetX; 

            break; 
          } 
         } 

         menu 
          .css('left', left + 'px') 
          .css('top', top + 'px'); 

         menu.css('opacity', '0.01').show(); 

         // Kludge! 
          var tmp = false; 

          // Non-static position fix 
           if (opener.css('position') == 'relative' 
           || opener.css('position') == 'absolute') 
            left = (-1 * op.left); 
           else 
            left = 0; 

          if (menu.offset().left < 0) 
          { 
           left += opener.parent().outerWidth() - settings.offsetX; 
           tmp = true; 
          } 
          else if (menu.offset().left + mw > _window.width()) 
          { 
           left += (-1 * opener.parent().outerWidth()) - settings.offsetX; 
           tmp = true; 
          } 

          if (tmp) 
           menu.css('left', left + 'px'); 

          menu.hide().css('opacity', '1'); 

         switch (settings.mode) 
         { 
          case 'zoom': 

           isLocked = true; 

           opener.addClass(settings.openerActiveClass); 
           menu.animate({ 
            width: 'toggle', 
            height: 'toggle' 
           }, settings.speed, settings.easing, function() { 
            isLocked = false; 
           }); 

           break; 

          case 'slide': 

           isLocked = true; 

           opener.addClass(settings.openerActiveClass); 
           menu.animate({ height: 'toggle' }, settings.speed, settings.easing, function() { 
            isLocked = false; 
           }); 

           break; 

          case 'fade': 

           isLocked = true; 

           if (isTL) 
           { 
            var tmp; 

            if (settings.speed == 'slow') 
             tmp = 80; 
            else if (settings.speed == 'fast') 
             tmp = 40; 
            else 
             tmp = Math.floor(settings.speed/2); 

            opener.fadeTo(tmp, 0.01, function() { 
             opener.addClass(settings.openerActiveClass); 
             opener.fadeTo(settings.speed, 1); 
             menu.fadeIn(settings.speed, function() { 
              isLocked = false; 
             }); 
            }); 
           } 
           else 
           { 
            opener.addClass(settings.openerActiveClass); 
            opener.fadeTo(settings.speed, 1); 
            menu.fadeIn(settings.speed, function() { 
             isLocked = false; 
            }); 
           } 

           break; 

          case 'instant': 
          default: 

           opener.addClass(settings.openerActiveClass); 
           menu.show(); 

           break; 
         } 

         return false; 
        }) 
        .bind('doCollapse', function() { 

         if (!menu.is(':visible')) 
          return false; 

         menu.hide(); 
         opener.removeClass(settings.openerActiveClass); 
         menu.find('.' + settings.openerActiveClass).removeClass(settings.openerActiveClass); 
         menu.find('ul').hide(); 

         return false; 

        }) 
        .bind('doToggle', function(e) { 

         if (menu.is(':visible')) 
          menu.trigger('doCollapse'); 
         else 
          menu.trigger('doExpand'); 

         return false; 

        }); 

       opener 
        .addClass('opener') 
        .css('cursor', 'pointer') 
        .click(function(e) { 

         if (isLocked) 
          return; 

         e.stopPropagation(); 
         menu.trigger('doToggle'); 

        }); 

       if (settings.expandMode == 'hover') 
        opener.hover(function(e) { 
          if (isLocked) 
           return; 
          hoverTimeoutId = window.setTimeout(function() { 
           menu.trigger('doExpand'); 
          }, settings.hoverDelay); 
         }, 
         function (e) { 
          window.clearTimeout(hoverTimeoutId); 
         } 
        ); 
      }); 

      _menus.find('a') 
       .css('display', 'block') 
       .click(function(e) { 

        if (isLocked) 
         return; 

        _top.trigger('doCollapseAll'); 

        e.stopPropagation(); 

       }); 

      _top.find('li') 
       .css('white-space', 'break-word') 
       .each(function() { 
        var t = jQuery(this), a = t.children('a'), ul = t.children('ul'); 
        if (a.length > 0 && ul.length == 0) 
         t.click(function(e) { 

          if (isLocked) 
           return; 

          _top.trigger('doCollapseAll'); 

          e.stopPropagation(); 

          window.location.href = a.attr('href'); 

         }); 
       }); 

      _top.children('li').each(function() { 

       var opener = jQuery(this), menu = opener.children('ul'); 

       if (menu.length > 0) 
       { 
        menu 
         .detach() 
         .appendTo('body'); 

        for(var z = settings.baseZIndex, i = 1, y = menu; y.length > 0; i++) 
        { 
         y.css('z-index', z++); 
         y = y.find('> li > ul'); 
        } 
       } 

      }); 

this is how the menu looks. the top one (farmers) works but none of the rest do

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

Спасибо за все ваши ответы, я не смог заставить его работать в jfiddle, иначе я бы поделился ссылкой со всеми вами.

Еще раз спасибо всем, кто ответил!

+0

Можете ли вы опубликовать jsfiddle или HTML, чтобы воссоздать это? – ezekielDFM

ответ

1

Плавающие элементы списка слева должны сделать трюк здесь. Это приведет к выравниванию элементов списка по горизонтали. Если вы опубликуете jsfiddle, у нас может быть немного игры для подтверждения.

0

Сценарий будет приятным.

Кроме того, здесь:

#menu ul li { 
position:relative; 
display:block; 
padding: 0 20px 0 20px; 
display: inline-block; 
width: 225px; 
list-style: none outside none; 
} 

у вас есть дисплей: встроенный блок (который вызывает его, чтобы показать меню по горизонтали) и дисплей: (., Который вызывает его, чтобы показать, как обычный список) блок Выберите один ..;)

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