【发布时间】:2022-10-30 21:33:42
【问题描述】:
在我的 PWA 中,我在原生浏览器滚动条上使用 Better-Scroll 库 (v2.4.2),以获得跨设备最一致的体验。问题是,由于浏览器如何滚动到具有有效 tabindex 的元素的性质,我认为 better-scroll 会中断,因为浏览器正在触发滚动而不是用户,使其不知道页面正在滚动。
页面滚动后,better-scroll 的定位将打破用户的整个滚动体验。
HTML:
<div class="itemsWrapper">
<div class="itemsContainer">
<ul class="items"></ul>
</div>
</div>
CSS:
ul {
list-style: none;
}
.itemsWrapper {
position: relative;
overflow: hidden;
height: 300px;
}
JS:
import * as betterScroll from "https://cdn.skypack.dev/better-scroll@2.4.2";
function createScroll() {
const itemsWrapper = document.querySelector(".itemsWrapper");
betterScroll.createBScroll(itemsWrapper, {
scrollbar: {
fade: true
},
mouseWheel: {
easeTime: 200
},
tagException: {
tagName: /^(INPUT|TEXTAREA|SELECT|CANVAS)$/
},
scrollY: true,
scrollX: false
})
}
const items = document.querySelector(".items");
let listItems = "";
for(let i = 0; i < 50; i++) {
listItems += `
<li>
<input tabindex='${i+1}' type='text'/>
</li>
`;
}
items.innerHTML = listItems;
createScroll()
密码笔:https://codepen.io/LeeRob97/pen/JjOvXgO
我不知道我是否遗漏了什么,或者 Better-Scroll 希望我们自己处理这些情况。我发现的一种解决方案当然是将元素设置为 -1 的 tabindex,但我认为我不应该这样做,因为出于可访问性原因,这是预期的行为。
【问题讨论】:
标签: javascript html scroll