Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Плавный переход к якорю внутри большого DIV блока. (https://javascript.ru/forum/jquery/77169-plavnyjj-perekhod-k-yakoryu-vnutri-bolshogo-div-bloka.html)

a.r.akhmadullin 02.04.2019 08:05

Плавный переход к якорю внутри большого DIV блока.
 
Здравствуйте!

Возникла проблема с точным переходом по якорю с использованием jQuery. Если я проматываю до самого верха и нажимаю ссылку "ВНИЗ", то якорь оказывается где-то выше верхней границы, если немного вниз проматываю, так что ссылка "ВНИЗ" оказывается вверху и нажимаю на нее, то якорь оказывается ниже верхней границы. Подскажите пожалуйста как изменить код чтобы якорь всегда на верхней границе оказывался? Код который я использую:
<html>
	<head>
		<title>testscrolling</title>
		<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script>
		<script type="text/javascript">
			$(function(){
				$('a[href^="#"]').on('click', function(event) {
					event.preventDefault();
					var sc = $(this).attr("href"),
						//dn = $(sc).offset().top;
						dn = $(sc).position().top;
					$('div').animate({scrollTop: dn}, 1000);
				});
			});
		</script>
	</head>
	<body style='overflow-y: none;'>
		<div style='height: 100%;margin: 10px auto;overflow-y: none;'>
			<div style='height: 20%; width: 100%; background: #ffff00'>
			
			</div>
			<div style='background: #00ffff; overflow-y: scroll; height: 60%'>
				<a id="up"></a>
				<?php for($i = 0; $i < 10; $i++) echo "<p>test</p>"?>
				<p><a href="#down" style='background: #FF0000'>ВНИЗ</a></p>
					<?php for($i = 0; $i < 890; $i++) echo "<p>test</p>"?>
				<a id="down"></a>
				<p><a href="#up" style='background: #FF0000'>ВВЕРХ</a></p>
				<?php for($i = 0; $i < 100; $i++) echo "<p>test</p>"?>
			</div>
			<div style='height: 20%; width: 100%; background: #ffff00'>
			
			</div>
		</div>
	</body>
</html>

рони 02.04.2019 09:00

a.r.akhmadullin,
Пожалуйста, отформатируйте свой код!

Для этого его можно заключить в специальные теги: js/css/html и т.п., например:
[html run]
... минимальный код страницы с вашей проблемой
[/html]

О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.


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