Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > HTML и CSS
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.09.2016, 13:57   #1
Bilargo
Форумчанин
 
Аватар для Bilargo
 
Регистрация: 17.09.2009
Сообщений: 231
По умолчанию Тег якоря в URL

Друзья, всем привет!
Делаю якорь на сайте, а он при переходе добавляет в URL #тег, что затрудняет юзабилити при попытке перейти "Назад", наверняка есть решение данной проблемы, прошу направить.
Цитата:
Относись к людям так, как хочешь, чтоб относились к тебе!
Bilargo вне форума Ответить с цитированием
Старый 17.09.2016, 14:28   #2
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Сделать прокручивании страницы при нажатии на этот элемент.
Если информации немного, то можно раскрывать блок с содержимым при нажатии на этот элемент.
Вадим Мошев вне форума Ответить с цитированием
Старый 17.09.2016, 15:31   #3
uberchel
Участник клуба
 
Аватар для uberchel
 
Регистрация: 19.01.2009
Сообщений: 1,453
По умолчанию

jQuery:
Код:
<div class="control-anchors">
	<a href="#top" class="anchor">Вверх</a>
	<a href="#bottom" class="anchor">Вниз</a>
	<script>
	  $('.anchor').on('click', function (e) {
		    e.preventDefault();
		    $('body, html').animate({scrollTop: ($(this).attr('href') == '#top') ? 0 : window.innerHeight}, 250);
	  });
	</script>
</div>

Последний раз редактировалось uberchel; 17.09.2016 в 15:49.
uberchel вне форума Ответить с цитированием
Старый 20.09.2016, 14:58   #4
predefined
Форумчанин
 
Регистрация: 01.08.2016
Сообщений: 182
По умолчанию

Цитата:
Сообщение от Bilargo Посмотреть сообщение
Делаю якорь на сайте, а он при переходе добавляет в URL #тег, что затрудняет юзабилити при попытке перейти "Назад"
А в чём там затруднение юзабилити? Это стандартное поведение браузера, к которому все давно привыкли.

Если вы про то, что Url с хэш-тэгом не попадает в browser history и по кнопке "Назад" не листает по хэш-тэгам - заносите их в хистори принудительно по событию window.onhashchange:
window.history.pushState(hash, '', document.location.pathname + hash);


PS: Прекратите использовать location.hash и переходите на HTML5 History API

Последний раз редактировалось predefined; 20.09.2016 в 15:16.
predefined вне форума Ответить с цитированием
Старый 20.09.2016, 15:29   #5
Naive
Раздолбайских Дел
Старожил
 
Аватар для Naive
 
Регистрация: 22.05.2009
Сообщений: 3,828
По умолчанию

Цитата:
Сообщение от predefined Посмотреть сообщение
А в чём там затруднение юзабилити? Это стандартное поведение браузера, к которому все давно привыкли.
+
Цитата:
Сообщение от predefined Посмотреть сообщение
Если вы про то, что Url с хэш-тэгом не попадает в browser history и по кнопке "Назад" не листает по хэш-тэгам
листать не будет, но в хистори оно попадает (если, конечно, на ссылке не стоит preventDefault)
historyAPI действительно очень крутая штука, тут я поддержу.
Но! Тут у нас идет речь про якоря внутри страницы, я бы эту работу полностью взвалил на браузер, (если конечно не нужен кроссбраузерный плавный скролл). а прокрутку при шастанье по истории можно написать через onPopState, да.
Alar, верни репу!
Naive вне форума Ответить с цитированием
Старый 20.09.2016, 18:26   #6
Bilargo
Форумчанин
 
Аватар для Bilargo
 
Регистрация: 17.09.2009
Сообщений: 231
По умолчанию

Проблема в том, что он наоборот попадает в historyAPI.
Буду пробовать через Jquery решить.
Цитата:
Относись к людям так, как хочешь, чтоб относились к тебе!
Bilargo вне форума Ответить с цитированием
Старый 20.09.2016, 19:00   #7
Naive
Раздолбайских Дел
Старожил
 
Аватар для Naive
 
Регистрация: 22.05.2009
Сообщений: 3,828
По умолчанию

Теперь все понятно)
Цитата:
Прекратите использовать location.hash и переходите на HTML5 History API
поступай наоборот))))
Alar, верни репу!
Naive вне форума Ответить с цитированием
Старый 20.09.2016, 19:07   #8
Bilargo
Форумчанин
 
Аватар для Bilargo
 
Регистрация: 17.09.2009
Сообщений: 231
По умолчанию

Применил вот такое решение
Код:
jQuery("#a1").click(function() {
		pagcenter();
		jQuery('html, body').animate({
			scrollTop: jQuery("#a2").offset().top - 100
		}, 1000, 'swing');
	});
Подскажите как изменить скрипт таким образом чтобы якоря с1, b1, d1 тоже можно было применить в данной конструкции, не хочется дублировать скрипты.
Цитата:
Относись к людям так, как хочешь, чтоб относились к тебе!
Bilargo вне форума Ответить с цитированием
Старый 20.09.2016, 20:32   #9
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Напишите функцию, в качестве аргумента передавайте ей якорь.
Вадим Мошев вне форума Ответить с цитированием
Старый 21.09.2016, 19:16   #10
Bilargo
Форумчанин
 
Аватар для Bilargo
 
Регистрация: 17.09.2009
Сообщений: 231
По умолчанию

Цитата:
Сообщение от Вадим Мошев Посмотреть сообщение
Напишите функцию, в качестве аргумента передавайте ей якорь.
Не совсем представляю как это сделать, не могли бы вы пример дать?
Цитата:
Относись к людям так, как хочешь, чтоб относились к тебе!
Bilargo вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
якоря в отдельном div. сдвигается вся страница сайта.. pilot327 HTML и CSS 0 05.05.2016 15:32
Как вывести из текстовой базы тег h1 в тег title ? jo22 PHP 9 18.07.2012 18:41
Парсинг XML (<тег></тег> переходит в <тег/>) hard-t Общие вопросы по Java, Java SE, Kotlin 4 29.06.2011 11:14
Автопрокрутка скролла до якоря Delphinchik JavaScript, Ajax 1 26.01.2011 17:28