Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Автоматическая прокрутка дива вниз (https://javascript.ru/forum/misc/2809-avtomaticheskaya-prokrutka-diva-vniz.html)

progi2007 13.02.2009 10:59

Автоматическая прокрутка дива вниз
 
Подскажите как сделать, что бы прокрутка в диве автоматически опускалась вниз, желательно варианты решения на jquery.
Заранее всем спасибо.

Kolyaj 13.02.2009 11:21

divElement.scrollTop = 9999;

progi2007 13.02.2009 12:13

Цитата:

Сообщение от Kolyaj (Сообщение 12583)
divElement.scrollTop = 9999;

Спасибо помогло.

Spyke 07.03.2009 13:58

Подскажите куда это вставить? Желательно простенький примерчик. Заранее спасибо.

Zibba 07.03.2009 14:19

Вешаете обработчик (на onclick/onload/еще какое нибудь событие), далее получаете элемент при помощи getElementById(element) и свойству scrollTop этого элемента присваиваете значение.

Spyke 07.03.2009 14:56

<div id="messages" style="height: 400px; overflow: auto;" onload="this.scrollTop = 9999;"></div>

я правильно понял?.. все равно что-то не получается =(

Zibba 07.03.2009 14:59

Ну еще бы получилось с overflow: auto, вопрос был про scroll следовательно и overflow: scroll;
Вот пример:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
		<title>Scroll</title>
		<style type="text/css">
			#scroll{
				height:100px;
				overflow:scroll;
				background-color:#ddd;
			}
		</style>
		<script type="text/javascript">
			window.onload = function(){
				document.getElementById('scroll').scrollTop = 9999;
			}
		</script>
	</head>
	<body>
		<div id="scroll">
			<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>Конец
		</div>
	</body>
</html>

Spyke 07.03.2009 15:13

при onclick получается... но как сделать автоматически без участия пользователя? просто у меня чат и нужно чтобы при появлении нового сообщения автоматом вниз пролистывалось... onresize тоже не работает... =(

P.S. а что ты там говоришь про window.onload? Если можно пиши сразу мой исправленный вариант. Заранее спасибо!

Zibba 07.03.2009 15:16

Ну если при появлении нового сообщения, то если при его появлении полностью перезагружается страница (см. пример выше), если сообщения поступают асинхронно, то вешать на функцию срабатывающую по событию прихода сообщения и все.

Андрей Параничев 07.03.2009 20:45

Чтоб автоматически и нет возможности вписать код в функцию, которая добавляет сообщение, то можно и интервал сделать:
window.onload = function(){
   var scrollinDiv = document.getElementById('scroll');
   setInterval(function() {          
        scrollinDiv.scrollTop = 9999;
   }, 100);
}

Kolyaj 07.03.2009 21:18

Цитата:

Сообщение от Zibba
Ну еще бы получилось с overflow: auto, вопрос был про scroll следовательно и overflow: scroll;

scrollTop прекрасно работает и с overflow: auto, и с overflow: hidden. Эти CSS свойства влияют только на отображение полос прокрутки.

Zibba 07.03.2009 21:55

Цитата:

Сообщение от Kolyaj
Эти CSS свойства влияют только на отображение полос прокрутки.

Я это понимаю, просто вопрос топика Автоматическая прокрутка дива вниз, следовательно я думал человек который задал вопрос после топик стартера имелл ввиду прокрутку в диве котоырй он создает, а так как там было задано auto, то полосы прокрутки и не отображались, следовательно прокручивать было не чего.

Kolyaj 07.03.2009 22:00

Ну дык при auto они отображаются, если надо. А если не надо, то и прокручивать нечего, будь там хоть auto, хоть scroll, хоть hidden.

Spyke 09.03.2009 14:49

Сообщения добавляются асинхронно, сделано через библиотеку JsHttpRequest и фиг там разберешься, поэтому найти функцию срабатывающую по событию прихода сообщения я не могу. А насчет интервала что-то не хочет опять работать... =(

антигерой 17.01.2012 17:37

Я чат сделал с прокруткой вверх: Севастополь - Чат потому как если постоянно позиционировать на нижней мессаге, то при просмотре истории будет каждую перезагрузку сбиваться фокус на мессагах, а это жутко напрягает.

9xakep 17.01.2012 18:39

Вы видели дату сообщения?
Так и хочется написать: facepalm, но не буду...

viktornord 16.04.2014 23:15

Достаточно просто написать DIV.scrollTop(5*DIV.height());
Использование высоты будет лучшим вариантом так как мало ли если например поле чата ну получиться больше 9999 пикселей)))))) А так для любой высоты пойдет!


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