Наведение FadeIn FadeOut

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

В настоящее время изображение исчезает до нуля, а затем появляется новое. Это останется на месте независимо от того, зависаю я или нет.

//Loop through the images and print them to the page
   for (var i=0; i < totalBoxes; i++){
    $.ajax({
     url: "random.php?no=",
     cache: false,
     success: function(html) {
      // following line I originally suggested, but let's make it better...
      //$('#bg').append(html).fadeIn('slow');
      // also note the fine difference between append and appendTo.
      var $d = $(html).hide().appendTo('#bg').fadeIn('slow');
      $('img', $d).hover(function() {
       var largePath = $(this).attr("rel");
       $(this).fadeOut("slow", function() {
        $(this).attr({ src: largePath }).fadeIn("slow");
       });
      });
     }
    });
   }

Обновлять:

Пожалуйста, взгляните на эту ссылку:

http://www.yellostudio.co.uk/temp/index.php#< /а>

Я пытаюсь заставить изображения пересекать фейдер при опрокидывании и исчезать при затухании...

Может ли кто-нибудь помочь, я так близко, и я потратил часы и часы, пытаясь понять это...


person Andy    schedule 05.11.2009    source источник
comment
Итак, вы хотите, чтобы черно-белое изображение переходило в цвет при наведении курсора мыши, а затем возвращалось обратно при его исчезновении? Прямо сейчас он переключается, затем исчезает и снова появляется при наведении курсора.   -  person coreyward    schedule 05.11.2009
comment
да, совершенно верно, корейвард... я чувствую, что причиняю людям много горя из-за этого, что я ненавижу...   -  person Andy    schedule 06.11.2009
comment
Поскольку вам нужен кроссфейд, просто затените переднее изображение. Не беспокойтесь о выцветании черно-белого изображения.   -  person Aaron    schedule 06.11.2009
comment
Я объединил два ваших повторяющихся вопроса в один. В будущем, пожалуйста, редактируйте свои вопросы, когда у вас будет новая информация, чтобы мы могли хранить ее всю в одном месте. Спасибо, и добро пожаловать в SO.   -  person Bill the Lizard    schedule 06.11.2009
comment
Энди - я обновил свой ответ всем кодом, который вам нужен - проверьте его.   -  person Aaron    schedule 06.11.2009


Ответы (8)


hover() принимает два параметра функции, один для mouseover, а другой для mouseout. Вы предоставили только первое. Вам нужно будет предоставить второй, чтобы отменить замену изображения на mouseout.

Если вы хотите, чтобы fadeOut и fadeIn были одновременными, не помещайте fadeIn в обратный вызов fadeOut. Просто сделайте их отдельными утверждениями:

$(this).fadeOut("slow");
$(this).attr({ src: largePath }).fadeIn("slow");

Как у вас, fadeIn не начинается, пока не будет выполнено fadeOut. Таким образом, они будут начинаться и заканчиваться одновременно.

person No Surprises    schedule 05.11.2009
comment
Применение двух одновременных анимаций к одному элементу не даст эффекта плавного затухания. Ваш код начнет исчезать, но не полностью, а затем мгновенно изменит изображение, пока оно исчезает, и снова исчезнет. - person joshperry; 05.11.2009
comment
Привет, никаких сюрпризов, спасибо за вашу помощь .... Я добавил код, и он, кажется, работает, однако я пытаюсь заставить работать бит затухания, и я всегда получаю синтаксическую ошибку и пустой экран ... не могли бы вы пролить немного свет на это? Еще раз спасибо - person Andy; 05.11.2009
comment
Ой, извини. Джошперри прав: это работает, только если у вас есть два изображения, и они расположены абсолютно друг над другом. - person No Surprises; 05.11.2009
comment
Имеет ли значение, что я вызываю его через rel? - person Andy; 05.11.2009

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

var $d = $(html).hide().appendTo('#bg').fadeIn('slow');
$('img', $d).hover(function() {
    var largePath = $(this).attr("rel");
    $(this).data('orig', $(this).attr('src') );
    $(this).fadeOut("slow", function() {
         $(this).attr({ src: largePath }).fadeIn("slow");
     });
},function() {
    var origPath = $(this).data('orig');
    $(this).fadeOut("slow", function() {
         $(this).attr({ src: origPath }).fadeIn("slow");
     });
});

Предполагая, что «яркое» изображение используется в качестве атрибута src, и вы используете непрозрачность для достижения эффекта.

var $d = $(html).hide().appendTo('#bg');
$('img',$d).css('opacity',0.33);
           .hover( function() {
               $(this).fadeTo('slow',1.0);
            }, function() {
               $(this).fadeTo('slow',0.33);
            });
person tvanfosson    schedule 05.11.2009
comment
Эй, спасибо, тванфоссон, код, который вы предложили, я только что протестировал, и он работает, но в начале наведения появляется странная вспышка, и она не исчезает, если у вас есть время, чтобы проверить ссылку, я был бы признателен... - person Andy; 05.11.2009
comment
Я не думал об этом, но вам нужно дождаться завершения fadeOut, прежде чем заменять атрибут src. В противном случае вы получите новое изображение с полной непрозрачностью (вспышкой) до того, как завершится затухание. Сделайте это, переместив изменение в обратный вызов fadeOut. Кроме того, задумывались ли вы о простой настройке непрозрачности от 50% до 100% при наведении курсора, используя одно и то же яркое изображение вместо переключения между светлым и темным изображениями. Это может быть эффект перекрестного затухания, который вы ищете. - person tvanfosson; 05.11.2009

Могу ли я предложить: http://colorpowered.com/blend/

Он будет делать то, что вы хотите сделать.


Редактировать: Хорошо, во-первых, я бы определенно изменил ajax-часть вашего кода, чтобы он возвращал все ваши изображения через json (еще лучше, я бы сделал это на серверной части, но, Я не знаю, как настроен ваш сайт). В любом случае, кажется, что вы без необходимости выцветаете другое изображение. Просто поместите цветное изображение над другим изображением с абсолютным позиционированием. Возможно, ваш код мог бы выглядеть примерно так:

JavaScript:

$.ajaxSetup({cache:false});
$('.hoverImg').live('mouseover',function() {
   $hovered = $(this);
   var colorPath = $hovered.attr("rel");
   var rndId = Math.floor(Math.random()*100000);
   var $colorImg = $('<img />');
   $colorImg
       .hide()
       .addClass("fader")
       .attr('src',colorPath)
       .attr('id','img_'+rndId)
       .css({position:'absolute',zIndex:10});
   $hovered.css({zIndex:9}).data('overImgId',rndId).before($colorImg);
   $('#img_'+rndId).stop().fadeIn("slow");
});
$('.hoverImg').live('mouseout',function() {
    var rndId = $(this).data('overImgId')
    $('#img_'+rndId).stop().fadeOut("slow");
});
$.getJSON('random.php',{numBoxes:totalBoxes},function(json) {
    if(json.length > 0) {
        $.each(json,function(i,val) {
            $(val).hide().appendTo('#bg').find('img').addClass('hoverImg');
        });
    }
});

PHP:

<?php //random.php (really simplified, probably)
if(isset($_GET['numBoxes']) && !empty($_GET['numBoxes'])) {
    /*
        Get all the html stuff you need into an array...
        Could look something like:
        $imgs = array(
            '<div><img src="foo.jpg" rel="color_foo.jpg" /></div>',
            '<div><img src="bar.jpg" rel="color_bar.jpg" /></div>'
        );
    */
    echo json_encode($imgs);
}

Это должно в основном работать. Там могут быть некоторые опечатки и прочее, но, насколько я могу судить, это должно работать. Конечно, в зависимости от вашего сценария вам может потребоваться настроить/изменить некоторые из них.

Удачи с проектом!

ВАЖНОЕ РЕДАКТИРОВАНИЕ: я забыл добавить ключевую часть кода PHP. Я добавил атрибуты «rel» к тегам <img>.

person KyleFarris    schedule 05.11.2009
comment
Спасибо за это, это выглядит действительно полезно, но я надеялся просто исправить свой код, поскольку я знаю, что почти готов... :@) я надеюсь! - person Andy; 05.11.2009
comment
вау, это совсем не то, что у меня есть. Я попробую и посмотрю, как у меня дела. у меня нет опыта работы с json - person Andy; 06.11.2009
comment
Плагин jquery blend принадлежит вам? Я только что отправил вам электронное письмо. - person Andy; 06.11.2009
comment
Я хотел бы заплатить, чтобы вы добавили свое решение, хотя я думаю, что оно работает очень медленно, и эффект затухания, на который я надеялся, просто сработает. Затухание работало отлично, когда я использовал атрибут rel для ссылки на другое изображение, но я не мог добиться перекрестного затухания.... - person Andy; 06.11.2009
comment
Нет, я не делал плагин смешивания, на который я ссылался. Хотя это довольно мило. Я не буду нуждаться в какой-либо оплате за любое решение, которое я предлагаю вам на этом сайте. То, что я указал выше, не работает для вас? - person KyleFarris; 06.11.2009
comment
НЕТ, этого не было, но я могу попробовать добавить его снова сейчас быстро с вашей поправкой? - person Andy; 06.11.2009
comment
Не сработало, извините... но я оставил код там, если у вас было время проверить, все ли на месте: yellostudio.co.uk/temp/index.php# - person Andy; 06.11.2009

Вы можете сделать это, используя дополнительный код. Поместите постепенное изображение поверх исчезающего изображения с непрозрачностью, установленной на 0. Добавьте код наведения к плавному изображению (оно находится сверху, поэтому оно получает события).

$('#top-image').hover(function() {
$(this).stop().fadeTo(1000, 1);
$('#bottom-image').stop().fadeTo(1000, 0);
},
function() {
$(this).stop().fadeTo(1000, 0);
$('#bottom-image').stop().fadeTo(1000, 1);
});

Оба изображения появляются и исчезают, а с использованием функции stop() быстрое наведение и удаление мыши не приведет к серии повторяющихся анимаций.

person Frank DeRosa    schedule 05.11.2009
comment
Вы заинтересованы в оплате, чтобы эта штука работала на меня? - person Andy; 05.11.2009
comment
Я не знаю, как добавить приведенный выше код в то, что у меня уже есть! - person Andy; 05.11.2009
comment
Это просто пример кода, я просто написал его с ходу. Не стесняйтесь обращаться ко мне, если вы все еще застряли... - person Frank DeRosa; 06.11.2009
comment
просто пробую еще одно решение от другого пользователя ... так что теперь все потеряно :) - person Andy; 06.11.2009

Если вы хотите сделать перекрестное затухание, вам нужны два изображения, одно из которых постепенно появляется, а другое исчезает одновременно. Взгляните на страницу, которую я сделал с этим эффектом. Плагин, который я написал, находится прямо в исходном коде страницы, так что вы можете взглянуть на него. Два изображения должны иметь position: absolute;, чтобы при плавном переходе они могли занимать одну и ту же область страницы.

И, как сказано в No Surprises, вы предоставляете обратный вызов hover только для наведения мыши, а не для отмены наведения мыши, когда вы бы возвращались к оригиналу.

Этот код может работать, помните об абсолютном позиционировании в вашем CSS, и вы можете добавить класс CSS к backImg, а изображения должны быть в отдельном родительском элементе, на который подписано событие наведения:

for (var i=0; i < totalBoxes; i++){
    $.ajax({
        url: "random.php?no=",
        cache: false,
        success: function(html) {
            $(html)
                .hide()
                .appendTo('#bg')
                .fadeIn('slow')
                .children('img').each(function() {
                    var img = $(this);
                    var largePath = img.attr("rel");
                    var backImg = $("<img src='" + largePath + "'/>");
                    img.after(backImg);

                    img.parent().hover(
                        function() { // over
                            backImg.stop().fadeIn("slow");
                            img.stop().fadeOut("slow");
                        },
                        function() { // out
                            backImg.stop().fadeOut("slow");
                            img.stop().fadeIn("slow");
                        }
                    );
                });
        }
    });
}
person joshperry    schedule 05.11.2009
comment
Не могли бы вы дать мне представление о том, как изменить мой код, чтобы включить мышь? Он использует атрибут rel для извлечения нового изображения. - person Andy; 05.11.2009
comment
joshperry, спасибо за вашу помощь в этом... я действительно потратил несколько часов... я загрузил код, чтобы вы могли видеть, что происходит... к сожалению, он не работает. - person Andy; 05.11.2009
comment
Я добавил код, который может сработать для вас, но я все же рекомендую использовать более общий плагин смешивания в ответе КайлеФарриса. - person joshperry; 05.11.2009
comment
Извините, чувак, я хотел бы помочь вам больше, к сожалению, это не консультационный сайт, это сайт вопросов и ответов, который помогает людям, которые в основном разбираются в базовой технологии. Код в моих ответах редко будет работать в ситуации вырезания и вставки и возлагает на спрашивающего некоторую ответственность за формирование решения, подходящего для их конкретной реализации. - person joshperry; 05.11.2009
comment
Я обновил его сейчас, и он появился, просто немного перекрестного затухания ... и он мигает в начале наведения вместо того, чтобы исчезать поверх ... спасибо, Джош! - person Andy; 05.11.2009
comment
честные дела! Я не против заплатить за решение ... мне это уже надоело - person Andy; 05.11.2009
comment
если вы хотите, чтобы перекрестное затухание у вас ДОЛЖНО было иметь два изображения, одно для затухания и одно для затухания, ваш код возвращается к попытке снова использовать одно изображение, см. мои комментарии к ответу @No Surprises, почему это не сработает. Если вы делаете html, который возвращается с вашего сервера, заверните каждый img в DIV, мой код будет моей работой для вас. На самом деле, просто скачайте плагин blend, это бесплатно. - person joshperry; 05.11.2009
comment
Спасибо, Джош, я знаю, что хватаюсь за соломинку здесь .... это так расстраивает, потому что я потратил дни и дни, пытаясь понять, как далеко зайти, а затем я нашел этот форум. вы оказали огромную помощь, и я попытаюсь понять это, основываясь на ваших комментариях ... я просто подумал, что весь атрибут rel был действительно классным способом сделать это. Еще раз спасибо - person Andy; 05.11.2009
comment
В методе rel нет ничего плохого, если вы создаете второе изображение, используя этот URL-адрес в своем скрипте (как это делает мой). Опять же, если вы измените свой ответ ajax, чтобы обернуть каждое изображение в div, мой код может сработать для вас. - person joshperry; 06.11.2009
comment
Если я напечатаю это... ‹div class=pf-box› ‹a href=#› ‹div class=black›‹img src='.$image_folder.'/'.$image_name.'.jpg alt ='.$имя_изображения.' border=0 /›‹/div› ‹div class=color›‹img src='.$image_folder.'/'.$image_name.'-c.jpg alt='.$image_name.' граница=0 /›‹/div› ‹/a› ‹/div› - person Andy; 06.11.2009

тут я заметил проблему...

var backImg = $("<img src='" + largePath + "'/>");

Это недопустимый селектор. Попробуйте это вместо этого:

var backImg = $('img[src="' + largePath + '"]');

Вы не хотите использовать ‹> в своем селекторе, а синтаксис селектора атрибута должен выглядеть следующим образом: [attr="value"]
Обратите внимание, что я поменял местами использование ' и " в своем коде - я так и делаю, синтаксически идентично В вашем выборе кавычек нет ничего плохого.

person Frank DeRosa    schedule 05.11.2009
comment
Спасибо за ваш вклад, я не могу найти ссылку на backImg - person Andy; 05.11.2009

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

Но вот решение благодаря вам всем...

          //Loop through the images and print them to the page
        for (var i=0; i < totalBoxes; i++){
            $.ajax({
                url: "random.php?no=",
                cache: false,
                success: function(html) {

                    var $d = $(html).hide().appendTo('#bg').fadeIn('slow');
                    $('#colour img').css("opacity", 0);
                    $('img', $d).hover(function() { 
                        $(this).stop().fadeTo(700, 1);
                    },function() {
                        $(this).stop().fadeTo(700, 0);
                    });

                }
            });
        }

и мой php печатает...

<div class="pf-box">
    <a href="#">
    <div class="black"><img src="'.$image_folder.'/'.$image_name.'.jpg" alt="'.$image_name.'" border="0" /></div>
    <div class="colour"><img src="'.$image_folder.'/'.$image_name.'-c.jpg" alt="'.$image_name.'" border="0" /></div>
    </a>
  </div>
person Andy    schedule 05.11.2009
comment
Какую часть вы находите медленной? Начальная нагрузка или зависание? - person Aaron; 06.11.2009
comment
загрузка идет медленно, потому что я загружаю два изображения... прежде чем я пытался загрузить одно, затем использовал атрибут rel для загрузки второго только при наведении курсора, что давало гораздо более плавное исчезновение одно за другим при первой загрузке страницы. . - person Andy; 06.11.2009
comment
Если вы хотите, чтобы начальное затухание было быстрым, просто измените fadeTo(700,1) на что-то более быстрое, например, fadeTo(100,1) - person Aaron; 06.11.2009
comment
нет, извините, я имею в виду, когда он добавляет изображения на страницу, у меня они исчезают ... поэтому он повторяет выборки и изображения из случайных, а затем добавляется к странице, используя исчезновение. Раньше это было действительно быстро, но теперь это неуклюже, потому что я привожу два изображения со случайной страницы, а не ссылаюсь на атрибут rel при наведении курсора, чтобы поменять изображение... - person Andy; 06.11.2009
comment
ах, так что вас беспокоит начальная загрузка страницы - для этого я бы не стал повторять ваш вызов ajax. Это слишком много накладных расходов. Вызовите свой ajax один раз и верните массив всех возможных изображений, а затем несколько раз извлеките случайные изображения из этого массива в javascript. - person Aaron; 06.11.2009
comment
Спасибо, Аарон, за то, что поговорил со мной об этом... я объясню вам, почему я сделал это именно так, потому что, когда я изменяю размер окна, он запускает функцию javascript и при необходимости добавляет дополнительные поля в зависимости от высоты и ширины области просмотра... для этого если бы у меня был массив, он уже был бы предопределен, что означало бы, что при изменении размера у меня было бы пустое пространство. - person Andy; 06.11.2009
comment
Проверьте мой ответ еще раз для обновления - я только что опубликовал кучу кода. Вы можете получить желаемое динамическое поведение, не обращаясь к серверу при каждом вызове. Просто вытащите массив возможных изображений один раз, а затем сгенерируйте столько html, сколько хотите. - person Aaron; 06.11.2009
comment
я проверил это в firebug yellostudio.co.uk/temp/indexV2.php - person Andy; 06.11.2009

В вашей таблице стилей добавьте:

.colour {
  display:none;
}

Затем сделайте так, чтобы ваша функция успеха читалась:

var $d = $(html).hide().appendTo('#bg').fadeIn('slow');
$('.pf-box', $d).hover(function() {
  $('.colour', $(this)).fadeIn("slow");      
},function() {
  $('.colour', $(this)).fadeOut("slow");      
});

ОБНОВЛЕНИЕ

Чтобы решить проблему медленной загрузки, вам нужно, чтобы ваш PHP возвращал объект всех изображений, например так (скажем, он называется images.php - поместите код ниже внутри <?php ?>) (вы хотите использовать json_encode() но он был на более старой версии PHP):

header('Content-type: application/json');
echo '{
  {'black' : 'url', 'colour' : 'url'},
  {'black' : 'url2', 'colour' : 'url2'}
}';

Затем в javascript вы хотите:

//generate all the boxes
$.get('images.php',function(data){
  for (var i=0; i < totalBoxes; i++){
      var randomImage = data[Math.floor(Math.random() * data.length)];
      $('<div class="pf-box"><img class="black" src="' + randomImage['black'] + '" /><img class="colour" src="' + randomImage['colour'] + '" /></div>').hide().appendTo('#bg').fadeIn('slow').filter('.colour').css("opacity", 0);
  }
 },'json');

 //add the hover behavior to all the elements
 $('.pf-box').hover(function() {
   $('.colour',$(this)).stop().fadeTo(700, 1);
 },function() {
   $('.colour',$(this)).stop().fadeTo(700, 0);
 });

Этот код должен работать... но я его не проверял. Могут быть опечатки. Но в этом суть.

person Aaron    schedule 05.11.2009
comment
Спасибо, Аарон, я попробовал ваш метод, и, к сожалению, он не сработал. Я прибегнул к моему ответу ниже ... хотя сейчас он действительно неуклюжий ... не доволен этим :( - person Andy; 06.11.2009
comment
Хорошо, это выглядит многообещающе, тогда он перебирает массив, независимо от того, сколько возвращается? Итак, если бы я выполнил функцию изменения размера, она бы перебрала тот же массив и добавила бы больше? - person Andy; 06.11.2009
comment
Я попробовал, но он не определяет источник ... я проверил его в firebug yellostudio .co.uk/temp/indexV2.php - person Andy; 06.11.2009
comment
У вас есть ошибка синтаксического анализа на странице images.php: синтаксическая ошибка, неожиданное «:» в /home/sites/yellostudio.co.uk/public_html/temp/images.php в строке 3. - person Aaron; 06.11.2009
comment
‹?php {изображения: {черный: изображения/случайные/1.jpg, цветные: изображения/случайные/1-c.jpg}, {черные: изображения/случайные/2.jpg, цветные: изображения/случайные/2-c .jpg } } ?› - person Andy; 06.11.2009
comment
я просто вставил то, что вы написали в этом посте, и изменил URL-адреса, это было неправильно? Еще раз спасибо, аарон. Ты мне без конца помогаешь! - person Andy; 06.11.2009
comment
Вы должны повторить это... Я обновлю свой пост точным php - person Aaron; 06.11.2009
comment
по-прежнему ничего: yellostudio.co.uk/temp/indexV2.php Ошибка разбора : синтаксическая ошибка, неожиданное ':', ожидание ')' в /home/sites/yellostudio.co.uk/public_html/temp/images.php в строке 6 - person Andy; 06.11.2009
comment
внимательно проверьте свой код images.php... эта ошибка не имеет смысла в свете того, что я там написал - person Aaron; 06.11.2009
comment
Вот точная копия... ‹?php header('Content-type: application/json'); echo json_encode(массив(массив(черный: изображения/случайные/1.jpg, цвет: изображения/случайные/1-c.jpg), массив(черный: изображения/случайные/2.jpg, цвет: изображения/случайные/2- с.jpg ) )); ?› - person Andy; 06.11.2009
comment
уберите : между ключом и значением и вместо этого используйте =›... как в моем посте - person Aaron; 06.11.2009
comment
Я вижу вашу ошибку - похоже, вы используете более старую версию PHP - person Aaron; 06.11.2009
comment
Извините, не заметил, что немного изменился .... все еще не извините! yellostudio.co.uk/temp/indexV2.php - person Andy; 06.11.2009
comment
вам нужен php 5.2 для json_encode() php.net/manual/en/ function.json-encode.php -- но я снова обновил свой пост, добавив JSON, созданный вручную -- попробуйте - person Aaron; 06.11.2009
comment
Не могу поверить, что вы мне так помогаете... большое спасибо... но... ‹?php header('Content-type: application/json'); echo '{ {'черный': 'images/random/1.jpg', 'цвет': 'images/random/1-c.jpg'}, {'черный': 'images/random/2.jpg'' , 'цвет' : 'images/random/2-c.jpg'} }'; ?› - person Andy; 06.11.2009
comment
похоже, вы исправили это, перейдя на php5 - ну, теперь вы действительно близки. По какой-то причине jQuery не интерпретирует его как массив JSON - person Aaron; 06.11.2009
comment
попробуйте использовать $.getJSON вместо $.get (и избавьтесь от последнего параметра — json — из вашего вызова get) - person Aaron; 06.11.2009
comment
ммм, я не вижу никаких изображений, но я предполагаю, что это из-за того, что вы только что упомянули. Я не знаю json извините! - person Andy; 06.11.2009
comment
Ну... ты действительно близко. Извините, мне нужно бежать в этот момент, но я зарегистрируюсь позже. Ваш PHP теперь хорош. Вам просто нужно получить javascript для правильного анализа JSON. - person Aaron; 06.11.2009
comment
Вы знаете, что... Я думаю, вам может понадобиться отправить объект JSON, а не массив. В вашем PHP измените вызов json_encode(yourarrayhere), чтобы он выглядел так: json_encode(yourarrayhere, JSON_FORCE_OBJECT) - person Aaron; 06.11.2009
comment
избавиться от display:none на элементах .color - person Aaron; 06.11.2009
comment
избавьтесь от видимости: скрыто - и проверьте часть javascript, находящуюся при наведении, в моем ответе. Я отредактировал его, и теперь он работает немного по-другому. Скопируйте его полностью. - person Aaron; 06.11.2009
comment
Ваше вращающееся загрузочное фоновое изображение также вызывает большую загрузку процессора (постоянные 100% на моей старой машине Sempron с тактовой частотой 2,4 ГГц) - вы, вероятно, захотите удалить его после завершения загрузки страницы. - person Aaron; 06.11.2009