我使用以下选项卡,并希望能够通过他们在移动的滑动。通过滑动活动选项卡的内容。此外,是否可以添加一个平滑滚动的效果,在滑动后,视口正好停在一个标签上,而不是在中间的某个地方?第一个我读到过关于在移动的上制作一个完全响应/可触摸的div的文章,但我并不真正理解,而且我也不能在我的标签页上重现它。任何帮助都是非常感谢的
pu3pd22g1#
首先给父div提供以下规则。
#tab { display: flex; overflow: auto; scroll-behavior: smooth; scroll-snap-type: x mandatory; }
scroll-snap-type使其中一个选项卡必须始终位于视口上。现在给所有的孩子们制定以下规则。
#tab > * { flex-shrink: 0; width: 100%; scroll-snap-align: start; scroll-margin-top: 1rem; padding: 1rem 0.4rem; }
挠曲收缩:0将更改flex子级的默认行为并阻止其收缩。scroll-snap-align告诉子级滚动行为的对齐位置。scroll-margin-top将在滚动时在顶部保留边距。现在对js做一点修改。
const btn = [].slice.call(document.getElementsByTagName("button")); btn.forEach((item, index) => { item.addEventListener("click", function () { document.getElementById("tab").children[index].scrollIntoView(); }); });
scrollIntoView()将任何元素滚动到视区(如果尚未进入视区)。这样你也可以在移动的上执行触摸滚动。现在结合所有的法术你得到你所要求的。第一个
1条答案
按热度按时间pu3pd22g1#
首先给父div提供以下规则。
scroll-snap-type使其中一个选项卡必须始终位于视口上。
现在给所有的孩子们制定以下规则。
挠曲收缩:0将更改flex子级的默认行为并阻止其收缩。scroll-snap-align告诉子级滚动行为的对齐位置。scroll-margin-top将在滚动时在顶部保留边距。
现在对js做一点修改。
scrollIntoView()将任何元素滚动到视区(如果尚未进入视区)。
这样你也可以在移动的上执行触摸滚动。现在结合所有的法术你得到你所要求的。
第一个