2015-05-14 5 views
1

Я немного искал и не смог найти ответ, который соответствовал моему вопросу. Хотя использование z-индекса и абсолютного позиционирования, похоже, сработает, это не так.Отображение базовой ссылки на mouseOver

То, что я пытаюсь сделать, - это меню, которое скользит влево на мыши, отображая базовую ссылку ... Я пытался заставить его работать без особого успеха. Я попытался использовать абсолютное позиционирование на клонированном элементе, чтобы поместить его за родителем, но это не сработало. Я использовал z-index, чтобы убедиться, что клон был за его родителем.

Мой код выглядит следующим образом:

<ul id="nav"> 
    <li><a href="#" data-slide-text="slide-aaa">aaa</a></li> 
    <li><a href="#" data-slide-text="slide-bbb">bbb</a></li 
</ul> 



(function ($) { 
$.fn.doIt = function() {  
    this.find('li') 
     .css({ 
      overflow : 'auto' 
     })   
     .hover(
      function(){ 
       $(this).find('a:first').animate({ 
        marginLeft : "-150px" 
       }, 'fast') 
     }, 
      function(){ 
       $(this).find('a:first').animate({ 
        marginLeft : "0px" 
       }, 'fast')      
     }) 
    this.find('a') 
     .each(function(){ 
      var slideText = $(this).data('slideText'); 
      $(this) 
       .clone() 
       .text(slideText) 
       .appendTo($(this).parent()) 
       .addClass('slideClass') 
     }); 
}; 
})(jQuery); 

CSS-используется:

#nav li{ 
    list-style: none; 
    float: left; 
    width: 150px; 
    height: 20px; 
    color: #CCCCCC; 
    height: 60px; 
    line-height: 30px; 
    text-align: center; 
} 

#nav a{ 
    position: relative; 
    display: block; 
    width: 150px; 
    z-index: 1; 
    background: #777777; 
} 

.slideClass{ 
    position: absolute; 
    left: 0; 
    top: 0; 
    display: block; 
    background: #000000; 
    color: #6699dd; 
    z-index: 3; 
} 

Вы можете увидеть живой пример на: jQuery slide menu

+0

вы забыли назвать '$ ('#') сча Doit();. ', Как и в исходном примере –

ответ

0

Я изменил свой CSS в working fiddle

Основные изменения, которые я сделал это к вашему CSS:

#nav li { 
    display: inline-block; 
    overflow: hidden !important; 
    white-space: nowrap; 
} 

Я также удалил свои height: объявления для #nav li и position: связанных деклараций для .slideClass. Наконец, я изменил #nav a на display: inline-block;.

+0

Это в основном эффект, который я ищу. Он скользит влево, как и следовало ожидать. Есть ли причина, по которой фон не меняется? (на класс slideText имеет черный фон) - нести мои уродливые цвета и некоторый код отладки, я оставил затяжным. Вы можете увидеть живой пример (измененный и отредактированный с кодом, который вы предоставили) по ссылке в исходном вопросе. Я просто не могу получить фон, чтобы показать черный – Imperialized

+0

@Imperialized, да, цвет установлен с # # nav как родительский элемент в селекторе. Для переопределения вы можете использовать '! Important', или вы можете использовать другой селектор:' #nav slideClass' (или вы можете изменить свой селектор как менее конкретный). – jcuenod

+0

Хорошо, теперь я понял. Я не понимал, что он не перезаписывал стиль, когда вы выбрали их как таковые. Изменение его на (class = "navlink") и создание навигации по селектору дало эффект без использования! Важно переопределить стиль. Спасибо за быстрый ответ. – Imperialized

0

Не 100% уверен, что если бы это было то, что вы искали: http://jsfiddle.net/t4ag1tby/

Изменена Ли с абсолютной

#nav a{ 
    position: absolute; 
    top: 0; 
    ... 
} 

и действие парения анимировать положение вместо края.

  .hover(
       function(){ 
        $(this).find('a:first').animate({ 
         left : "-150px" 
        }, 'fast') 
      }, 
       function(){ 
        $(this).find('a:first').animate({ 
         left : "0px" 
        }, 'fast')      
      }) 
+0

смотрит на меня так, как будто ты прячешь ссылку, когда я нахожу – jcuenod

+0

Это именно то, чего я хотел достичь. Спасибо – Imperialized

+0

Собственно, я беру это обратно. Эффект в JSFiddle - это тот эффект, который я ищу, но он не работает точно так, как я этого хотел. В принципе, когда вы наводите курсор на ссылку, она должна показывать одну и ту же ссылку (хотя другой цвет). В основном, для создания скользящей анимации для меню, но сохранения ссылки нетронутой. – Imperialized

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