Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 09.10.2017, 16:15
Профессор
Отправить личное сообщение для Igorsrt Посмотреть профиль Найти все сообщения от Igorsrt
 
Регистрация: 21.02.2016
Сообщений: 271

Плавная прокрутка вниз до якоря при окрытии страницы
Здравствуйте!
В интернете много вариантов того как сделать плавный скроллинг до якоря... например такой
/* A smooth scroll */
$(function() {
	var menuhe = $('#menu').height(); // высота меню
	var menu = menuhe+20; // прибавляем 20
$("area[href*=#],a[href*=#]:not([href=#]):not([href^='#tab']):not([href^='#quicktab']):not([href^='#pane']):not([href *= '#inline'])").click(function() {
if (location.pathname.replace(/^\//,'') == this.pathname.replace(/^\//,'') && location.hostname == this.hostname) {
var target = $(this.hash);
target = target.length ? target : $('[name=' + this.hash.slice(1) +']');
if (target.length) {
$('html,body').animate({
scrollTop: target.offset().top - menu
},1500);
return false;
}
}
});
});

Но они работают, только если нажимать якорную ссылку на этой же страницы.. А мне нужно, что бы прокрутка была при переходе с других страниц. Т.е. при открытии ссылки http://сайт.ru#якорь загружалась сама страница сайта, а затем прокручивалась вниз до нужного блока.
Ответить с цитированием
  #2 (permalink)  
Старый 09.10.2017, 16:21
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,723

$(window).load(function(){
	if(location.hash.length)
		$('html,body').animate({
			scrollTop:$('[name="'+location.hash.substr(1)+'"]').offset().top
		},300)
});
Ответить с цитированием
  #3 (permalink)  
Старый 09.10.2017, 17:02
Профессор
Отправить личное сообщение для Igorsrt Посмотреть профиль Найти все сообщения от Igorsrt
 
Регистрация: 21.02.2016
Сообщений: 271

Сообщение от Nexus Посмотреть сообщение
$(window).load(function(){
	if(location.hash.length)
		$('html,body').animate({
			scrollTop:$('[name="'+location.hash.substr(1)+'"]').offset().top
		},300)
});
У меня этот код работает ровным счетом наоборот сейчас - т.е. страница открывается на якоре а потом прокручивается вверх
Ответить с цитированием
  #4 (permalink)  
Старый 09.10.2017, 17:19
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,723

Либо hash, либо якорь криво указываете.
<html>
<head>
<title>Untitled</title>
<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
<script>
$(function(){
	var hash='#anchor';
	if(hash.length)
		$('html,body').animate({
			scrollTop:$('[name="'+hash.substr(1)+'"]').offset().top
		},300)
});
</script>
</head>
<body style="padding-bottom:2000px;">
<div style="height:4800px;"></div>
<a name="anchor">Anchor</a>
</body>
</html>

Последний раз редактировалось Nexus, 09.10.2017 в 17:22.
Ответить с цитированием
  #5 (permalink)  
Старый 09.10.2017, 17:37
Профессор
Отправить личное сообщение для Igorsrt Посмотреть профиль Найти все сообщения от Igorsrt
 
Регистрация: 21.02.2016
Сообщений: 271

Сообщение от Nexus
Либо hash, либо якорь криво указываете.
ну якорь вот так я указал
<section class="block" id="tovari"></section>

Как что проверить?
Ответить с цитированием
  #6 (permalink)  
Старый 09.10.2017, 17:45
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,723

Igorsrt, попробуйте этот код:
$(function(){
	if(location.hash.length){
		var target=$('[name="'+location.hash.substr(1)+'"]');
		if(!target.length)
			target=$(location.hash);
		
		if(target.length)
			$('html,body').animate({
				scrollTop:target.offset().top
			},300);
	};
});
Ответить с цитированием
  #7 (permalink)  
Старый 09.10.2017, 17:50
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

Nexus,
Сообщение от Igorsrt
id="tovari"></
Ответить с цитированием
  #8 (permalink)  
Старый 09.10.2017, 17:53
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,723

рони, я видел.
Загуглил, оказывается наименование якоря можно и через id указывать.
Я думал, что имя якоря должно быть всегда в "name" атрибуте.
Ответить с цитированием
  #9 (permalink)  
Старый 09.10.2017, 18:03
Профессор
Отправить личное сообщение для Igorsrt Посмотреть профиль Найти все сообщения от Igorsrt
 
Регистрация: 21.02.2016
Сообщений: 271

Сообщение от Nexus Посмотреть сообщение
Igorsrt, попробуйте этот код:
$(function(){
	if(location.hash.length){
		var target=$('[name="'+location.hash.substr(1)+'"]');
		if(!target.length)
			target=$(location.hash);
		
		if(target.length)
			$('html,body').animate({
				scrollTop:target.offset().top
			},300);
	};
});
этот код не работает у меня (
Ответить с цитированием
  #10 (permalink)  
Старый 09.10.2017, 20:24
Профессор
Отправить личное сообщение для Igorsrt Посмотреть профиль Найти все сообщения от Igorsrt
 
Регистрация: 21.02.2016
Сообщений: 271

хотя нет, вроде даже и работает.. но как-то странновато (может у меня компьютер уже просто тупит)... А как еще скрыть якорь в адресной строке браузера?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Активация нужного таба при переходе с другой страницы vladza Общие вопросы Javascript 4 11.11.2014 10:48
Заменить class в div при скролле страницы EvilDoom Общие вопросы Javascript 3 10.10.2014 15:56
Как компилировать sass в css при перезагрузки страницы? Armen (X)HTML/CSS 0 21.09.2014 16:21
Фиксация объекта при скрулинге страницы Pashok(one) Общие вопросы Javascript 10 08.01.2013 02:52
Выезжающие\уезжающие div при загрузке страницы goodkot Элементы интерфейса 1 28.09.2012 08:58