01.09.2012, 21:35
|
Новичок на форуме
|
|
Регистрация: 22.08.2012
Сообщений: 6
|
|
Увеличение картинок при наведение
Я уже создавал тему с этим скриптом, но теперь я его доработал/развил(в меру моего малого опыта это и так можно назвать )
Собственно вот в чем проблема: скрипт я писал в jsFiddle, и там все работает, но когда и копирую весь код на хостинг или на компьютер, то он не работает, причем вообще javascript отказывается работать(хотя и библиотеку jQuery я везде подключал одинаковой версии)
Вот часть html кода:
<div id="wrapper"><div id="menu">
<img src="buttA1.png" class="zoom" alt="" />
<img src="buttB1.png" class="zoom" alt="" />
<img src="buttC1.png" class="zoom" alt="" />
<img src="buttD1.png" class="zoom" alt="" />
<img src="buttE1.png" class="zoom" alt="" />
</div></div>
Вот сам скрипт:
// Самое важное, это первая часть, отвечающая за расчет длины блока и его позиционирование по центру в зависимости от общего размера всех картинок, она и является моей доработкой
var menulen = 0;
$("#menu").children('img').each(function(indx, element){menulen += $(element).outerWidth(true);});
$("#menu").css({"margin-right":function(i,val){val = (menulen/2)*(-1); return val;}, "margin-top":"0"});
$("#menu").children('img').last().prevAll()
.css("margin-right", function(i,val){
var lenth = $(this).width();
val = Math.round((200 -lenth)/2);
return val;});
//далее вторая часть, отвечающая за само изменение размеров картинок, ранее была только она, и она работала...
$(function(){
$('.zoom').hover(function(){
var name = $(this).attr("src");
$(this).stop().animate({width:"200px",height:"200px",left:"-40px",top:"-40px"}, 400);
name = name.replace(/1/g, "2");
$(this).attr("src",name);
},
function(){
var name = $(this).attr("src");
$(this).stop().animate({width:"100px",height:"100px",left:"0",top:"0"}, 400);
name = name.replace(/2/g, "1");
$(this).attr("src",name);
});
});
Последний раз редактировалось More916, 01.09.2012 в 21:39.
|
|
01.09.2012, 21:49
|
|
Тлен
|
|
Регистрация: 02.01.2010
Сообщений: 6,587
|
|
$(function(){
var menulen = 0;
$("#menu").children('img').each(function(indx, element){menulen += $(element).outerWidth(true);});
$("#menu").css({"margin-right":function(i,val){val = (menulen/2)*(-1); return val;}, "margin-top":"0"});
$("#menu").children('img').last().prevAll()
.css("margin-right", function(i,val){
var lenth = $(this).width();
val = Math.round((200 -lenth)/2);
return val;});
$('.zoom').hover(function(){
var name = $(this).attr("src");
$(this).stop().animate({width:"200px",height:"200px",left:"-40px",top:"-40px"}, 400);
name = name.replace(/1/g, "2");
$(this).attr("src",name);
},
function(){
var name = $(this).attr("src");
$(this).stop().animate({width:"100px",height:"100px",left:"0",top:"0"}, 400);
name = name.replace(/2/g, "1");
$(this).attr("src",name);
});
});
Скорее всего.
__________________
29375, 35
|
|
01.09.2012, 22:46
|
Новичок на форуме
|
|
Регистрация: 22.08.2012
Сообщений: 6
|
|
Спасибо, вроде заработало.
Но! теперь появился вопрос по второй части скрипта:
$(function(){
$('.zoom').hover(function(){
var name = $(this).attr("src");
$(this).stop().animate({width:"200px",height:"200px",left:"-40px",top:"-40px"}, 400);
name = name.replace(/1/g, "2");
$(this).attr("src",name);
},
function(){
var name = $(this).attr("src");
$(this).stop().animate({width:"100px",height:"100px",left:"0",top:"0"}, 400);
name = name.replace(/2/g, "1");
$(this).attr("src",name);
});
});
Если спокойно наводить курсор и отводить только по одной картинки, то все нормально меняет размеры, а вот если провести по всем картинкам сразу, то они начинают "подвисать", значение их размеров зависает на промежуточных значениях...
Может все дело в stop() и я его как то неправильно применяю?
|
|
01.09.2012, 23:01
|
без статуса
|
|
Регистрация: 25.05.2012
Сообщений: 8,219
|
|
More916,
Попробуйте так:
$(function(){
$('.zoom:not(.active)').live('mouseenter',function(){
$(this).addClass('active');
var name = $(this).attr("src");
$(this).stop().animate({width:"200px",height:"200px",left:"-40px",top:"-40px"}, 400);
name = name.replace(/1/g, "2");
$(this).attr("src",name);
});
$('.zoom.active').live('mouseleave',function(){
var name = $(this).attr("src");
$(this).stop().animate({width:"100px",height:"100px",left:"0",top:"0"},
"linear", function(){$(this).removeClass('active');}, 400);
name = name.replace(/2/g, "1");
$(this).attr("src",name);
});
});
Последний раз редактировалось Deff, 01.09.2012 в 23:04.
|
|
02.09.2012, 00:44
|
Новичок на форуме
|
|
Регистрация: 22.08.2012
Сообщений: 6
|
|
Не.. так еще хуже... =( вообще только в одном направлении меняются...
|
|
02.09.2012, 00:51
|
без статуса
|
|
Регистрация: 25.05.2012
Сообщений: 8,219
|
|
Сообщение от More916
|
Не.. так еще хуже... =( вообще только в одном направлении меняются...
|
More916,
Живая ссылка есть ?
|
|
02.09.2012, 01:24
|
Новичок на форуме
|
|
Регистрация: 22.08.2012
Сообщений: 6
|
|
http://jsfiddle.net/m/dfx/
Тут самая левая картинка все время в бок уходит, это просто я не доделал, а вот почему их размеры слетают если по всем сразу поводить курсором...
|
|
02.09.2012, 01:35
|
без статуса
|
|
Регистрация: 25.05.2012
Сообщений: 8,219
|
|
More916,
Чот я попадаю на ввод акка
|
|
|
|