Не получается сделать прокрутку к якорям
Здравствуйте! Я конечно не большой (мягко выражаясь) специалист по js, но такие мелочи, как скролинг из меню до якоря раньше всегда получалось сделать, а тут какой-то полный тупик:
сайт joomla http://xn--62-6kcaj2cwaftr8h.xn--p1ai/ функция: $(function() { $('a.nav').click(function() { $(".t3-wrapper").animate({ scrollTop: $($(this).attr('href')).offset().top + "px" }, { duration: 500 }); return false; }); код ссылки: <a class="nav" href="#bottom_mainbody_1" data-target="#">Аренда автокрана</a> Помогите пожалуйста. |
Цитата:
|
Igorsrt,
а зачем тут js? можно же просто https://jsfiddle.net/fweycbt1/ |
спасибо Рони. Как всегда спасли )))
|
Igorsrt,
1 и ей соотвественная строки в вашем случае не нужны. |
не очень понял, что именно не нужно и как должна выглядеть функция правильно... может еще подскажите, как сделать что бы эта прокрутка работала со всех страниц - а то, если я меняю ссылку с #bottom_mainbody_1 на http://xn--62-6kcaj2cwaftr8h.xn--p1a...tom_mainbody_1 - то работать перестает прокрутка ?
|
Igorsrt,
bt_construction/js/script.js jQuery(document).ready(function($){ $(window).resize(function(){ var highestBox = 0; $('.footerBlock_module .t3-spotlight.t3-footnav > div').each(function(){ if ($(window).width() > 767){ if($(this).height() > highestBox){ highestBox = $(this).height(); } $(this).height(highestBox); } else { $(this).css('height','auto'); } }); }); setTimeout(function(){$(window).trigger('resize')}, 300); $('a.nav').click(function() { $("html, body").animate({ scrollTop: $($(this).attr('href')).offset().top + "px" }, { duration: 500 }); return false; }); }); |
сорри, пока не пойму в чем разница... )
|
а нет понял... еще бы сделать, что бы можно было переходить по ссылке с любой страницы с прокруткой, а не только на главной... и еще в слайдере на кнопках тоже прокрутка не работает, почему-то... (
|
Igorsrt,
всё что мог, выше. |
Igorsrt,
а вы не пробовали использовать альтернативные варианты? вроде того, что я кинул выше. можно сделать плавную прокрутку от любой ссылки к своему якорю https://jsfiddle.net/fweycbt1/4/ Я в js не силен, но в большинстве случаем стараюсь решать задачи без скриптов. Ведь если напихать много и не аккуратно, они начинают конфликтовать. Возможно, из-за этого и не работает ваш слайдер. |
<style> button{ margin-bottom: 500px; } </style> <button id="but">скролл</button> <div id="div">Блок</div> <script> but.onclick =e=> div.scrollIntoView({behavior: 'smooth' }); </script> можно проще |
j0hnik,
разве? это же надо для каждой кнопки прописывать, а если якорь в футере, то все поедет https://jsfiddle.net/fweycbt1/5/ |
madeas,
ничего, подучитесь, начнете разбираться. ;) |
так у меня ничего и не получилось толком... из кнопок в слайдере прокрутка не работает почему-то, если в ссылке указать не просто #анкор, а страница#анкор - то тоже не крутится ((
|
Igorsrt,
https://jsfiddle.net/fweycbt1/6/ |
Мне, если честно вполне вот этот вариант устроил бы (т.е. при помощи добавления класса к нужным ссылкам):
$('a.nav').click(function() { $("html, body").animate({ scrollTop: $($(this).attr('href')).offset().top + "px" }, { duration: 500 }); return false; }); но почему он не срабатывает на ссылках в слайдере, я же там класс nav тоже добавляю?... второй день голову ломаю |
Igorsrt,
$('a.nav').click(function(e) { e.preventDefault(); $("html, body").animate({ scrollTop: $('#' + $(this).attr('href').split('#').pop()).offset().top + "px" }, { duration: 500 }); }); Цитата:
Как вариант, можете попробовать слайдер инициировать после этого скрипта. |
Цитата:
|
Цитата:
|
Цитата:
|
Igorsrt,
$(слайдер).on('click', 'a.nav', function(e) { |
Цитата:
$('a.nav').click(function() { $("html, body").animate({ scrollTop: $($(this).attr('href')).offset().top + "px" }, { duration: 500 }); return false; }); $('.background_slideshow').on('click', 'a.nav', function(e) { $("html, body").animate({ scrollTop: $($(this).attr('href')).offset().top + "px" }, { duration: 500 }); return false; }); Спасибо! |
Часовой пояс GMT +3, время: 19:07. |