Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Открытие ссылок с анкором. Хедер перекрывает контент (https://javascript.ru/forum/misc/75153-otkrytie-ssylok-s-ankorom-kheder-perekryvaet-kontent.html)

dmk 07.09.2018 20:52

Да, так скачет заголовок, хуже выглядит. Спасибо за помощь. Возможно, есть вариант верстку изменить, контент опустить, поразмышляю ещё

рони 07.09.2018 21:08

Цитата:

Сообщение от dmk
есть вариант верстку изменить,

можно заменить id на data-id ?

dmk 07.09.2018 21:21

Да, могу data атрибуты вставить секциям

рони 07.09.2018 21:23

dmk,
не вставить, а заменить или дописать data-?

рони 07.09.2018 21:27

Цитата:

Сообщение от рони
а заменить или дописать data-?

тогда код будет
jQuery(window).on('load', function() {
jQuery('[data-id]').each(function() {
    var id = $(this).data('id');
    this.id = id
	});
var hash = document.location.hash;
if(hash!=''){
jQuery("a[href='"+hash+"']").click();
}
});

dmk 07.09.2018 21:29

Вставить имею в виду дописать напрямую в коде, не с помощью js

рони 07.09.2018 21:31

Цитата:

Сообщение от dmk
дописать напрямую в коде

да

рони 07.09.2018 21:34

dmk,
<div id="id-advantages" class
дописать в ручную
<div data-id="id-advantages" class

рони 08.09.2018 22:54

ссылки по теме Перехват перехода по якорю
https://javascript.ru/forum/jquery/1...o-yakoryu.html
http://qaru.site/questions/68128/how...loading-a-page
если кто-то знает решение, подскажите, кроме как убрать id в исходном коде , и вернуть id скриптом, другого варианта не вижу.

dmk 10.09.2018 15:35

Спасибо! Во второй ссылке нашел решение. Заключается оно в сбрасывании полученного хэша и скролле к нужной секции (взятой из хеша)

var anchorLink = window.location.hash,
    anchorText = anchorLink.replace( '#', '' );

window.location.hash = '';

jQuery(window).on( 'load', function() {
    if (anchorText) {
        jQuery( 'html, body' ).animate({
            scrollTop: jQuery( '#' + anchorText ).offset().top - 80
        }, 700, 'swing', function () {});
    }
});


Вот так работает:
https://entera.pro/#id-advantages


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