Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   как отпозиционировать элемент по верхнему краю экрана? (https://javascript.ru/forum/jquery/22461-kak-otpozicionirovat-ehlement-po-verkhnemu-krayu-ehkrana.html)

shaltay 20.10.2011 21:24

как отпозиционировать элемент по верхнему краю экрана?
 
Доброго времени. Ищу решение в поиске, но натыкаюсь только на плагины.
возможно ли на базовом jquery просто узнать расстояние между началом документа и верхним краем экрана? ЧТобы в любом месте страницы с прокруткой можно было например вызвать див и он начинался от верхнего края экрана браузера?

Спасибо!

Триви 20.10.2011 21:53

$(element).offset().top;

ksa 20.10.2011 22:24

Цитата:

Сообщение от shaltay
начинался от верхнего края экрана браузера?

Например для элементов с
position: fixed;

даже искать ничего не нужно будет. Их координаты отсчитываются от начала окна...

shaltay 21.10.2011 13:41

Нет, к сожалению, фиксед мне не нужен. Нужна прокрутка.

Я так понял, что offset() отсчитывает расстояние от начала документа до определенного элемента. А у меня нет элементов. Мне нужно показать див, который display: none; и лежит в корне дома. И когда он показывается, яваскриптом считается расстояние от начала документа до верхнего края окна браузера.

ksa 21.10.2011 14:06

shaltay, наверное нечто такое тебе подойдёт...

<!DOCTYPE html>
<html>
<head>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<!--
<link rel="stylesheet" type="text/css" href="tmp.css" />
-->
<style type="text/css">
#container {
	position: relative;
	width: 200px;
	height: 200px;
	overflow: auto;
}
#test {
	width: 10000px;
	height: 10000px;
}
#mess {
	position: absolute;
	width: 50px;
	height: 50px;
	border: 1px solid;
	display: none;
}
</style>
<script type="text/javascript">
$(document).ready(function() {
	$("#test").click(function() {
		var o=$("#container").get(0)
		$("#mess").css('top',o.scrollTop+'px').css('left',o.scrollLeft+'px');
		$("#mess").show();
	});
});
</script>
</head>
<body>
<div id='container'>
	<div id='test'>Test...</div>
	<div id='mess'>Ok!</div>
</div>
</body>
</html>

shaltay 21.10.2011 15:30

что-то у меня не сработало. Првда у меня jquery полугодичной давности.

shaltay 21.10.2011 15:55

Спасибо. Немного упростил код.
function popup(){
		 var o=$("body").get(0)
	         $("#div").css('top',o.scrollTop+'px');
                 $("#div").fadeIn();
}


Теперь заработало!
Ребята, ловите плюсы!

ksa 21.10.2011 15:56

Мой пример полностью рабочий... И ЖиКвери там вызывается последний...

ksa 21.10.2011 15:57

Цитата:

Сообщение от shaltay
Ребята, ловите плюсы!

Что-то не заметил прибавления... :lol:

shaltay 21.10.2011 16:17

Цитата:

Сообщение от ksa (Сообщение 132145)
Что-то не заметил прибавления... :lol:

Ну, может кто-то другой убавил?)))

В общем, странная штука стала происходить - после закрытия дива (hide) - страница перематывается на начало. Это очень плохо. Чтобы поделать в этом случае? И почему так происходит?


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