#javascript #jquery #html #css
#javascript #jquery #HTML #css
Вопрос:
Я создаю обратно совместимую версию чего-то, разработанного в CSS3. В основном это работает, но с несколькими проблемами, с которыми, я надеюсь, вы, ребята, сможете разобраться.
Сначала посмотрите на эту страницу, чтобы понять, о чем я говорю:
http://bearce.me/new-home/index.htm
Он отлично работает в Chrome, Firefox, Opera и Safari. Я работаю над настройками IE, используя jQuery.
Итак, как вы можете видеть, когда вы наводите курсор на один столбец, два других столбца становятся черно-белыми. Это делается с использованием четырех разных изображений и затемнения изображений, чтобы выявить правильное. Проблема, с которой я сталкиваюсь, заключается в том, как изображения исчезают. В IE при наведении курсора мыши на каждый столбец изображения исчезают, но сначала вспыхивает полноцветное изображение. Кроме того, если быстро провести курсором по всему набору, он мигает примерно 4 раза. Я знаю, как использовать .stop(true,false)
, и пробовал это, а также .stop(true,true)
, .stop(false,false)
и .stop(false,true)
, каждый из которых представляет свои собственные проблемы, в основном только одно изображение исчезает, в то время как другие просто внезапно прыгают.
Мой скрипт:
$("#left").hover(
function () {
// fading
$("#slider #main").fadeOut(500);
$("#slider #web").fadeOut(500);
$("#slider #graphics").fadeOut(500);
// description animation
$("#left .more").stop(true,false).delay(150).animate({height:"120px"}, 500);
},
function () {
// fading
$("#slider #main").fadeIn(500);
$("#slider #web").fadeIn(500);
$("#slider #graphics").fadeIn(500);
// description animation
$("#left .more").stop(true,false).delay(150).animate({height:"0px"}, 500);
}
);
$("#center").hover(
function () {
// fading
$("#slider #main").fadeOut(500);
$("#slider #scripting").fadeOut(500);
$("#slider #web").fadeOut(500);
// description animation
$("#center .more").stop(true,false).delay(150).animate({height:"120px"}, 500);
},
function () {
// fading
$("#slider #main").fadeIn(500);
$("#slider #scripting").fadeIn(500);
$("#slider #web").fadeIn(500);
// description animation
$("#center .more").stop(true,false).delay(150).animate({height:"0px"}, 500);
}
);
$("#right").hover(
function () {
// fading
$("#slider #main").fadeOut(500);
$("#slider #scripting").fadeOut(500);
$("#slider #graphics").fadeOut(500);
// description animation
$("#right .more").stop(true,false).delay(150).animate({height:"120px"}, 500);
},
function () {
// fading
$("#slider #main").fadeIn(500);
$("#slider #scripting").fadeIn(500);
$("#slider #graphics").fadeIn(500);
// description animation
$("#right .more").stop(true,false).delay(150).animate({height:"0px"}, 500);
}
);
Эта версия срабатывает только в том случае, если переходы CSS не поддерживаются, поэтому она отлично работает в Chrome, Firefox, Opera и Safari.
Кроме того, есть ли хороший способ сократить это до одного раздела вместо трех? Я сомневаюсь в этом, но эй, я уже задаю вопросы, так что, возможно, стоит попробовать.
Ответ №1:
Нет необходимости кодировать все явно. Этот код должен обрабатывать все ваши случаи:
$('#home_nav > *').hoverIntent(function() {
$('#slider img').eq($(this).index()).siblings().stop(true, false).fadeOut(500);
$(this).find('.more').stop(true, false).animate({height: '120px'}, 500);
}, function() {
$('#slider img').eq($(this).index()).siblings().stop(true, false).fadeIn(500);
$(this).find('.more').stop(true, false).animate({height: '0px'}, 500);
});
Этот код кажется избыточным, поэтому, если кто-нибудь может предложить способ его сжатия, я бы с радостью исправил свой ответ.
Комментарии:
1. Мне нравится идея, но, к сожалению, это не работает. Изображения не являются братьями и сестрами, и это также исчезает
.more
. Плюс при каждом наведении исчезают разные изображения, поэтому это не совсем работает. РЕДАКТИРОВАТЬ: Вау, теперь это работает. Не понимаю, как, но это работает. Тем не менее, все еще не отвечает на исходный вопрос.2. Я посмотрю, что случилось с исчезновением. Вероятно, это события, запускающиеся в неподходящее время. Обычно за
.stop()
до того, как код анимации исправит это.3. Итак, это работает хорошо, но из-за этого исчезают неправильные изображения для боковых столбцов. bearce.me/new-home/index2.htm
4. Не могли бы вы немного удалить код modernizr для поиска CSS3? Я использую Chrome в Linux, поэтому я не могу сказать, исправляет ли мой код анимации или нет
5. Поменяйте порядок ваших изображений, чтобы они были такими:
web, graphics, scripting
. Порядок изображений был обратным.