[英]Check if element scrolled into horizontal view by 50%
我有水平可滚动的 div,其中包含列表(li)元素。 如何检查特定列表元素是否滚动到水平视图中至少 50%?
您可以使用要观看的父项和子项的 offsetLeft、clientWidth 和 scrollLeft。
elementToMonitor.parentNode.addEventListener("scroll", function(event) { const visible = this.scrollLeft + this.clientWidth, isStartVisible = visible >= elementToMonitor.offsetLeft + (elementToMonitor.clientWidth / 2), isEndVisible = visible <= elementToMonitor.offsetLeft + this.clientWidth + (elementToMonitor.clientWidth / 2); // if both are true, item is visible relative to scroll position // this does not mean, it is visible in the viewport if (isStartVisible && isEndVisible) { elementToMonitor.setAttribute("style", `color: white; background-color: purple; border: 5px solid green; border-radius: 1em;`); } else { elementToMonitor.removeAttribute("style"); } });
div { overflow: auto; white-space: nowrap; } span { display: inline-block; border: 1px solid black; margin-right: 0.5em; }.spacer { width: 100vw; }.spacer::before { content: "Placeholder"; }
<div> <span class="spacer"></span> <span id="elementToMonitor">Make me purple!</span> <span class="spacer"></span> </div>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.