Javascript-форум (https://javascript.ru/forum/)
-   Оффтопик (https://javascript.ru/forum/offtopic/)
-   -   Картинка в виде всплывающей подсказки (https://javascript.ru/forum/offtopic/9490-kartinka-v-vide-vsplyvayushhejj-podskazki.html)

Gozar 23.08.2010 16:49

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<script type="text/javascript">
function over(file_name)
{
	img = document.createElement('div');
	document.body.appendChild(img);
	img.innerHTML = '<img src='+file_name+' />';
	img.style.position = 'absolute';
	img.style.background = '#FFFFFF';
	img.style.border = 'solid 1px #346fdc';
	img.style.padding = '4px';
	move();
}
function move(e)
{
	e = e || window.event
	if (e.pageX == null && e.clientX != null )
		{
			var html = document.documentElement
			var body = document.body
			e.pageX = e.clientX + (html && html.scrollLeft || body && body.scrollLeft || 0) - (html.clientLeft || 0)
			e.pageY = e.clientY + (html && html.scrollTop || body && body.scrollTop || 0) - (html.clientTop || 0)
		}
	img.style.left = e.pageX + 15 + 'px';
	img.style.top = e.pageY + 15 + 'px';
}
function out()
{
	document.body.removeChild(img);
}
</script>
</head>

<body>
	<div><a href="" onmouseover="over('http://javascript.ru/forum/images/ca_serenity/misc/logo.gif')" onmousemove="move(event)" onmouseout="out()">link</a></div>
</body>
</html>


так правильнее, не забываем про пиксели + 'px';:
img.style.left = e.pageX + 15 + 'px';

abc_ua 23.08.2010 17:39

Gozar,
Огромнейшее спасибо!!!!!

shureg 28.09.2010 22:18

А не подскажите такое-же выражение только выполненое на Jquery ?

что-то тип такого:
$(document).ready(function() {
    $("a").onmousemove(function() {......})
})

к сожалению незнаю как координаты на Jq узнать(((((

Skipp 29.09.2010 09:27

ну почти так же.

$(function(){
		$("a").mouseover(function(e){$(document.body).append('<div id="prev" style="position:absolute;background-color:#FFF;border:solid 1px #346fdc; padding:4px;top:'+e.pageY+15+';left:'+e.pageX+15+'"><img src="'+$(this).attr("href")+'"/></div>');});
		$("a").mousemove(function(e){$("#prev").css({top:e.pageY+15,left:e.pageX+15});});
		$("a").mouseout(function(){document.body.removeChild(document.getElementById("prev"));});
	});

<div><a href="http://javascript.ru/forum/images/ca_serenity/misc/logo.gif">link</a></div>
    <div><a href="http://img.yandex.net/i/www/logo.png">link</a></div>
    <div><a href="http://www.google.ru/images/logos/ps_logo2.png">link</a></div>

shureg 29.09.2010 10:45

Спасибище!

abc_ua 29.09.2010 12:09

Очень удобно и кратко получилось, спасибо, но для этого способа придется пожертвовать валидностью(вводя новый атрибут) и вынести скрипт во внешний .js файл не получится, да?

если не сложно, дайте пожалуйста ссылки где почитать про $ и get

exec 29.09.2010 12:20

http://jquery-docs.ru/Selectors/
http://jquery-docs.ru/Ajax/jQuery.ge...tacallbacktype

monolithed 29.09.2010 22:02

На днях, подобная задача стояла, только подсказка по клику исчезала и на нее можно было переносить фокус:


<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<style type="text/css">
.block {
	position:absolute;
	top:20%;
	left: 40%;
	width: 200px;
	height: 50px;
}

.block img{
	position: absolute;
	top: 20px;
}
</style>

<script type="text/javascript">
$(function(){
	$('.block').each(function(){
		$(this).find('a').mouseover(function(){
			$(this).next("img").length < 1 && $(this).after('<img src="'+$(this).attr('rel')+'" />');
		});
		$(document).click(function(e){
			(e.target.nodeName != $('.block img').get(0).tagName) && $(this).find('img').remove();
		});
	});
});
</script>

<div class="block">
	<a href="#" rel="http://javascript.ru/forum/images/ca_serenity/misc/logo.gif">link</a>
</div>

Skipp 30.09.2010 09:16

monolithed,
Вы бы ещё setTtimeout поставили.

abc_ua 14.05.2011 01:41

разобрался


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