Я пытаюсь плавно прокручивать два элемента div одновременно, используя scrollIntoView(). Я пробовал эти два способа, но только последний div называется прокруткой:
Попытка 1: функция с двумя параметрами: прокручивается только второй параметр
function precedent_scroll(link, section) {
document.getElementById(link).scrollIntoView({behavior: "smooth"});
document.getElementById(section).scrollIntoView({behavior: "smooth"});
}
Попытка 2: вызов функции вплотную: прокручивается только "section2_IDname"
function precedent_scroll(section) {
document.getElementById(section).scrollIntoView({behavior: "smooth"});
}
$("#id").click(function() {precedent_scroll("section1_IDname"), precedent_scroll("section2_IDname")});
Возможно ли это только с использованием scrollIntoView()?
@charlietfl это то, что я сейчас использую в качестве резервного решения, но есть ли способ сделать это одновременно с помощью scrollIntoView({behavior: "smooth"}) (или что-то с похожей анимацией)?
Не встроен... нет. Можно использовать анимацию jQuery с задержкой(), но для этого потребуются ваши собственные вычисления позиции
Получил работу с jQuery:
function double_scroll(id1, id2) {
var id1_parent_st = $([id1 parent]).scrollTop();
var id2_parent_st = $([id2 parent]).scrollTop();
$([id1 parent]).animate({
scrollTop: $(id1).position().top + id1_parent_st
}, 500, function(){
});
$([id2 parent]).animate({
scrollTop: $(id2).position().top + id2_parent_st
}, 500, function(){
});
}
$([div]).click(function() {double_scroll("#p1_link", "#p1_section")});
Вы поняли, как это сделать без Jquery?
@NahushFarkande Я уверен, что если вы просто посмотрите, как перевести части кода в чистый JS, это сработает. Например, stackoverflow.com/questions/15521081/…
Там потребуется setTimeout, если цель состоит в том, чтобы прокрутить до одного, позволить пользователю увидеть его в определенное время, а затем прокрутить до другого