javascript - 如何居中单击并在中间拖动滚动
问题描述
我正在关注 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>
我发现按我想要的方式工作的代码是这个 SO ask的答案,但是当我在 Wes Bos 的代码中实现它时,我根本无法再单击和拖动。
这是YouTube 上的一个视觉示例。
解决方案
<script>
在脚本的开头(在标签之后)做这样的事情:
const startingEl = document.querySelector(".item.item6");
window.scrollTo(0, startingEl.offsetTop);
推荐阅读
- php - 未定义的变量,以 SELECT 形式填充。拉拉维尔
- swift - 如何运行 shell 命令并在命令运行时打印输出?
- php - 如果 php $_SESSION 变量有数据
- python - 使用正则表达式过滤在 PYTHON 3 中嵌入了 - 或 * 之间的文本部分的行
- javascript - 使用 Ajax 从 javascript 获取数据到 PHP
- javascript - 如何使用 javascript 使用选项标签中赋予它的值来检索选项标签的文本?
- c++ - 将表示为链表的两个大数相乘
- vbscript - 如何使用 VBScript 子类或通过子类或构造函数设置子类类型属性?
- ios - 我想为像循环一样自动滚动的图像创建一个 CollectionView
- c - C 编程:函数内部的 malloc()