just photo

LavaLamp для любитетелей jQuery

Julia 15/06/2009

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

Меня попросили исправить одно проблемку с этим плагином.
Цвет текущей ссылки в меню должен был меняться, когда пользователь наводит мышкой на другой пункт меню и фоновое изображение убегает на то меню, на которое наведена мышка.
Оказалось, что сделать это только с помощю css невозможно,
пришлось подправить немного код плагина.

Вот решение:

<pre>
/**
* LavaLamp - A menu plugin for jQuery with cool hover effects.
* @requires jQuery v1.1.3.1 or above
*
* http://gmarwaha.com/blog/?p=7
*
* Copyright (c) 2007 Ganeshji Marwaha (gmarwaha.com)
* Dual licensed under the MIT and GPL licenses:
* http://www.opensource.org/licenses/mit-license.php
* http://www.gnu.org/licenses/gpl.html
*
* Version: 0.1.0
*/
(function($) {

$.fn.lavaLamp = function(o) {
    o = $.extend({ fx: "linear", speed: 500, click: function(){} }, o || {});

    return this.each(function() {
        var me = $(this), noop = function(){},
            $back = $('<li class="back"><div class="left"></div></li>').appendTo(me),
            $li = $("li", this), curr = $("li.current", this)[0] || $($li[0]).addClass("current")[0];

        $li.not(".back").hover(function() {           
            move(this);
           
            $("li.current a").addClass('current-off'); // added by Julia

        }, noop);

        $(this).hover(noop, function() {
            move(curr);
           
           $("li.current a").removeClass('current-off'); // added by Julia
        });

        $li.click(function(e) {
            setCurr(this);
            return o.click.apply(this, [e, this]);
        });

        setCurr(curr);

        function setCurr(el) {
            $back.css({ "left": el.offsetLeft+"px", "width": el.offsetWidth+"px" });
            curr = el;           
        };

        function move(el) {
            $back.each(function() {
                $.dequeue(this, "fx"); }
            ).animate({
                width: el.offsetWidth,
                left: el.offsetLeft
            }, o.speed, o.fx);           
           
        };

    });
};
})(jQuery);

</pre>

результат на сайте http://www.sperlingbuilt.com/

тэги:

Смотрится круто! Молодец!

А почему в блоке "Random Flicker Feed" все картинки одинаковые, а ссылки на них не работают, и firebug выдает 2 ошибки?

я не делала сайт целиком, меня просто попросили исправить проблему с плагином LavaLamp

Ребят, а как сделать активным второй или третий пункт меню? А то у меня при переходе на новую страницу, активным остается первый пункт...

Насколько я помню - достаточно в верстке самого меню
у соответствующего li указывать класс current,

т.е.

<ul>
   <li><a ......<li>
   <li class="current"><a ....</li>
   ......
</ul>

Добрый день!
Всё делаю вроде бы правильно. Все появляется, но кроме самой плавающей штучки. Где может быть ошибка?

могу только предположить, что путь к картинке не верный

Здравствуйте, подскажите пожалуйста, где и как изменять цвет ссылки для вашего хака, когда наводишь мышкой на другое меню и ссылка у старого меню, т.е. там где было уехавшее изображение, меняется. Уже день бьюсь не могу разобраться, даже сайт по ссылке разобрал, но проблему не решил.

Изменяю

.menulava li.current a {
color:#ffffff;
}

.menulava li a:hover, .menulava li a:active, .menulava li a:visited {
border: none;
}

.menulava li a.current-off {
color:#999999;
}

а эффекта никакого. Ваше решение заменил в файле, но ничего не помогает.

Ура, со скриптами с сайта примера всё заработало! Хотя у меня оригинальные jQuery файлы. Я просто заменил свои на ваши и всё. Спасибо большое! :)

вот и замечательно,
пожалуйста :)

Всё работает кроме одного - при нажатии на пункты меню ссылки не работают.
В чем может быть проблема?

дайте ссылку - так сказать сложно

не работает, потому что когда берёте скрипт с сайта лаваламп там в функции, которая прописывается в HTML документ, для примерар стоит EVENT на CLICK - убираете эту строку и ссылка работает.

Отправить новый комментарий

Содержимое этого поля хранится скрыто и не будет показываться публично.
  • Адреса страниц и электронной почты автоматически преобразовываются в ссылки.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <img>
  • Автоматический перевод строки.
  • Вы можете публиковать код, размещая его в <code>...</code> (generic) или в <?php ... ?> (раскрашенный PHP).

Дополнительная информация о настройках форматирования