我正在跟踪Wes Bos 30天JavaScript挑战,并且在第27天:单击和拖动教程我想知道如何将滑块居中而不是第一个(最左边)位置居中?
const slider = document.querySelector('.items');
let isDown = false;
let startX;
let scrollLeft;
slider.addEventListener('mousedown', (e) => {
isDown = true;
slider.classList.add('active');
startX = e.pageX - slider.offsetLeft;
scrollLeft = slider.scrollLeft;
});
slider.addEventListener('mouseleave', () => {
isDown = false;
slider.classList.remove('active');
});
slider.addEventListener('mouseup', () => {
isDown = false;
slider.classList.remove('active');
});
slider.addEventListener('mousemove', (e) => {
if (!isDown) return; // stop the fn from running
e.preventDefault();
const x = e.pageX - slider.offsetLeft;
const walk = (x - startX) * 3;
slider.scrollLeft = scrollLeft - walk;
});
<div class="items">
<div class="item item1">01</div>
<!-- Scroll starts here -->
<div class="item item2">02</div>
<div class="item item3">03</div>
<div class="item item4">04</div>
<div class="item item5">05</div>
<div class="item item6">06</div>
<!-- I want to start here-->
<div class="item item7">07</div>
<div class="item item8">08</div>
<div class="item item9">09</div>
<div class="item item10">10</div>
<div class="item item11">11</div>
<div class="item item12">12</div>
</div>
我发现的代码可以按我想要的方式工作,是对this SO ask的回答,但是当我在Wes Bos的代码中实现该代码时,我根本无法单击并拖动。 / p>
这是YouTube上的一个直观示例。
答案 0 :(得分:0)
在脚本的开头(在<script>
标记之后)执行以下操作:
const startingEl = document.querySelector(".item.item6");
window.scrollTo(0, startingEl.offsetTop);
答案 1 :(得分:0)
这对我有用
const startingEl = document.querySelector(".item6").scrollIntoView();