Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Сдвиг картинки-ссылки (https://javascript.ru/forum/misc/23374-sdvig-kartinki-ssylki.html)

bpystep 21.11.2011 19:01

Сдвиг картинки-ссылки
 
<li><a href="#" onMouseOver="gogogo(this,29,0)" onMouseOut="gogogo(this, 60, -1)"><img src="css/images/q.png" width="100" height="20"></a></li>


function gogogo(node, i, sv) {
	if (sv == 0) {
	setTimeout(function() {node.style.left = i+1; i++; if (i<=60) gogogo(node, i, 0);},8);
	}
	else {
		setTimeout(function() {node.style.left = i-1; i--; if (i>=29) gogogo(node, i, -1);},8);
	}
}


Проблема в том, что при изменении положения указателя мыши начинает работать как if так и else. Думаю что проблему можно решить путем выделения определенной прямоугольной области, при наведении на который будет работать if, а за пределами есстественно else.
Просьба помочь оптимизировать или подкинуть какие-нибудь другие идеи.

bpystep 22.11.2011 14:27

кто-нибудь ответит?

Pavel M. 22.11.2011 14:49

что-то типа этого можно использовать
пример на jQuery
нужно навести на картинку

<!DOCTYPE html>
<html>
<head>
	<meta http-equiv="content-type" content="text/html; charset=UTF-8">
	<title>demo</title>
  
	<script type='text/javascript' src='http://code.jquery.com/jquery-git.js'></script>

	<script type='text/javascript'>

	$(window).load(function(){

		$('div a').hover(
			function () {
				$(this).stop().animate({'margin-left': 30}, 300);
			},
			function () {
				$(this).stop().animate({'margin-left': 0}, 300);
			}
		);

	});

	</script>

</head>
<body>

  <div>
    <a href="#"><img src="http://javascript.ru/forum/images/ca_serenity/misc/logo.gif"></a>
  </div>

</body>
</html>

bpystep 22.11.2011 15:00

не силен в jQuery, и JS только начал изучать.
можете пояснить следующие моменты?
1. $(window).load(function() -- здесь мы подгружаем новую функцию?
2. $(this) - это $('div a')?
3. $('div a').hover - для чего hover?

p.s. благодарю.

Pavel M. 22.11.2011 15:51

Цитата:

Сообщение от bpystep
1. $(window).load(function() -- здесь мы подгружаем новую функцию?
2. $(this) - это $('div a')?
3. $('div a').hover - для чего hover?

1. ждем загрузки всей страницы со всеми элементами

2. в этом случае - да

3. http://api.jquery.com/hover/

bpystep 22.11.2011 16:01

Цитата:

Сообщение от Pavel M. (Сообщение 138342)
1. ждем загрузки всей страницы со всеми элементами

2. в этом случае - да

3. http://api.jquery.com/hover/

спасибо)

pagemaster 08.04.2013 22:45

Здравствуйте!
Тема уже старая, но у меня возник похожий вопрос, помогите пожалуйста.
У меня есть круг (порезанный на куски) и когда я навожу на определенный кусок, он должен отодвигаться... Подскажите как это прописать? Со случаем вправо я уже разобрался)) методом тыка пробовал таким же образом задавать отступ вверх и вниз, но ничего не получается...

Заранее благодарен!

tsigel 09.04.2013 09:30

А случай "вправо" - это какой случай?)

Четче сформулируйте вопрос, выложите простой кусок html и ваш скрипт.

pagemaster 09.04.2013 16:20

<!DOCTYPE html>
	<html>
	<head>
	    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
	    <title>demo</title>
	   
	    <script type='text/javascript' src='http://code.jquery.com/jquery-git.js'></script>
	 
	    <script type='text/javascript'>
	 
	    $(window).load(function(){
	 
	        $('div a').hover(
	            function () {
	                $(this).stop().animate({'margin-left': 50}, 300);
		},
	            function () {
	                $(this).stop().animate({'margin-left': 0}, 300);
		}
	        );
	 
	    });
	 
	    </script>
	 
	</head>
	<body>
	 
	  <div>
	    <a href="#"><img src="http://javascript.ru/forum/images/ca_serenity/misc/logo.gif"></a>
	  </div>
	 
	</body>
	</html>


В данном случае прописывается margin-left 50 и изображение движется в право (так как отступ то левый) на 50 пикселей. Я пытался написать margin: 0 50 50 0; чтобы изображение двигалось вправо и вверх, но почему то не работает... подскажите как правильно прописывать в jQuery отступы, чтобы все работало) ну или я думал что может стоит прописывать не отступы, а задавать координаты относительно страницы, если это возможно, то подскажите как =) буду очень благодарен

tsigel 09.04.2013 16:58

$(this).stop().animate({
   'margin-left': 0,
   'margin-top': '20px'
}, 300);

tsigel 09.04.2013 16:59

вообще Обычно присваивают элементу position relative/absolute и изменяют left и top

pagemaster 09.04.2013 19:02

$(window).load(function(){
	 
	        $('div a').hover(
	            function () {
	                $(this).stop().animate({
					'margin-left': '50px',
					'margin-top': '20px'
					}, 300);
	            },
	            function () {
	                $(this).stop().animate({
					'margin-left': '0px',
					'margin-top': '0px'
					}, 300);
	            }
	        );
	 
	    });

Вправо движется, а вниз нет... =( и это ведь по идеи должно получатся как то по диагонали движение?

pagemaster 09.04.2013 19:03

если оставить только 'margin-top': '20px' то картинка не движется вниз...

pagemaster 09.04.2013 23:05

ну помогите...
покажите кусок кода который бы двигал картинку вниз или по диагонали

pagemaster 09.04.2013 23:19

и так же вопрос как указать элемент для перемещения, в случае указанном выше прописано $('div a') я так понимаю это указывается что в блоке div будет двигаться элемент в теге <a></a>, а как указать на пример чтобы использовался определенный блок по его id? На пример пишем <div id="1">картинка<div> и чтобы именно этот блок работал со скриптом

tsigel 10.04.2013 09:48

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.js"></script>
<div>
  <a href='#' style='width: 60px; height: 20px; position: absolute; top: 0; left: 0'>aaa</a>
</div>
<script>
  $(window).load(function(){
	 
	        $('div a').hover(
	            function () {
	                $(this).stop().animate({
					'left': '50px',
					'top': '20px'
					}, 300);
	            },
	            function () {
	                $(this).stop().animate({
					'left': '0px',
					'top': '0px'
					}, 300);
	            }
	        );
	 
	    });

</script>

Не знаю что тут может не работать.

pagemaster 10.04.2013 14:40

спасибо за ответ)
моя ошибка была в том что картинке не была прописана "position"

а не подскажите еще как мне использовать данный скрипт для определенной картинки? просто сейчас используется ко всем тегам a в div
я хотел прописывать картинке свой id и указывать его в скрипте, как это сделать?

pagemaster 10.04.2013 18:03

люди добрые и не очень =)
помогите пожалуйста, как изменить вот эту строчку $('div a').hover( так, чтобы указать div по его id

$('div id="1"').hover( как то так?

animhotep 10.04.2013 18:48

$("#id1").hover

pagemaster 11.04.2013 03:41

Вот так?
<script>
	  $(window).load(function(){
	      
	            $("#id1").hover(
	                function (this) {
	                    $(this).stop().animate({
	                    'left': '465px',
	                    'top': '422px'
	                    }, 800);
	                },
	                function () {
	                    $(this).stop().animate({
	                    'left': '465px',
	                    'top': '422px'
	                    }, 800);
	                }
	            );
	      
	        });
	 
	</script>
	
	  </div>


<div id="1"> <a href="#" id="image1" style="position:absolute; overflow:hidden; left:465px; top:922px; width:180px; height:255px; z-index:0"><img src="images/1.png" alt="" border=0 width=180 height=255></a></div>

Почему то не работает... что не так?

tsigel 11.04.2013 09:43

Цитата:

Сообщение от pagemaster
$("#id1").hover(

$("#1").hover(

pagemaster 11.04.2013 10:03

не работает... пробовал id тега <a> и <div>
<script>
	  $(window).load(function(){
	      
	            $("#1").hover(
	                function (this) {
	                    $(this).stop().animate({
	                    'left': '465px',
	                    'top': '422px'
	                    }, 800);
	                },
	                function () {
	                    $(this).stop().animate({
	                    'left': '465px',
	                    'top': '422px'
	                    }, 800);
	                }
	            );
	      
	        });
	 
	</script>
	
	  </div>


<div id="1"> <a href="#" style="position:absolute; overflow:hidden; left:465px; top:922px; width:180px; height:255px; z-index:0"><img src="images/1.png"></a></div>

tsigel 11.04.2013 10:11

Естественно не работает! И не должно работать. Вы присваиваете position absolute для ссылки, а двигать пытаетесь див.

tsigel 11.04.2013 10:12

Цитата:

Сообщение от pagemaster
$("#1")

$("#1 a")

pagemaster 11.04.2013 10:27

Смотрите, я с дива убрал id и поставил его тегу <a>, не работает.
Потом вернул все обратно и написал $("#1 a"), но тоже не работает!..
Вот весь код:
<script>
	  $(window).load(function(){
	      
	            $("#1 a").hover(
	                function (this) {
	                    $(this).stop().animate({
	                    'left': '465px',
	                    'top': '422px'
	                    }, 800);
	                },
	                function () {
	                    $(this).stop().animate({
	                    'left': '465px',
	                    'top': '422px'
	                    }, 800);
	                }
	            );
	      
	        });
	 
	</script>
	
	  </div>


<div id="1"> <a href="#" style="position:absolute; overflow:hidden; left:465px; top:922px; width:180px; height:255px; z-index:0"><img src="images/1.png"></a></div>

tsigel 11.04.2013 10:30

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.js"></script>
<div id='1'>
  <a href='#' style='width: 60px; height: 20px; position: absolute; top: 0; left: 0'>aaa</a>
</div>

<div>
  <a id='2' href='#' style='width: 60px; height: 20px; position: absolute; top: 0; left: 100px'>aaa</a>
</div>

<script>

  $(window).load(function(){
	 
	        $('#1 a').hover(
	            function () {
	                $(this).stop().animate({
					'left': '50px',
					'top': '20px'
					}, 300);
	            },
	            function () {
	                $(this).stop().animate({
					'left': '0px',
					'top': '0px'
					}, 300);
	            }
	        );	   

   $('#2').hover(
	            function () {
	                $(this).stop().animate({
					'left': '50px',
					'top': '20px'
					}, 300);
	            },
	            function () {
	                $(this).stop().animate({
					'left': '100px',
					'top': '0px'
					}, 300);
	            }
	        );
	 
	    });

</script>

pagemaster 11.04.2013 10:35

мне кажется или он не работает?) текст не движется

pagemaster 11.04.2013 10:35

во, заработало) все, спасибо огромное)) буду разбираться

tsigel 11.04.2013 10:36

Что выдает консоль? Вы вообще подключили jQuery?

pagemaster 11.04.2013 11:07

все, работает, jQuery конечно же подключил, ответы на все мои вопросы получил =) спасибо Вам


Часовой пояс GMT +3, время: 14:50.