要实现PC端鼠标拖动<div>元素触发横向滚动条的滚动,同时滚动条不显示,可以使用CSS和JavaScript来实现。以下是一个简单的示例:
HTML<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Drag to Scroll</title> <link rel="stylesheet" href="styles.css"> </head> <body> <div class="scroll-container"> <div class="scroll-content"> <!-- 这里放置你的内容 --> <div class="item">Item 1</div> <div class="item">Item 2</div> <div class="item">Item 3</div> <div class="item">Item 4</div> <div class="item">Item 5</div> </div> </div> <script src="script.js"></script> </body> </html>CSS (styles.css)
body { margin: 0; padding: 0; display: flex; justify-content: center; align-items: center; height: 100vh; background-color: #f0f0f0; } .scroll-container { width: 80%; overflow-x: scroll; overflow-y: hidden; white-space: nowrap; cursor: grab; -ms-overflow-style: none; /* IE and Edge */ scrollbar-width: none; /* Firefox */ } .scroll-container::-webkit-scrollbar { display: none; /* Chrome, Safari and Opera */ } .scroll-content { display: inline-block; } .item { display: inline-block; width: 200px; height: 200px; margin: 10px; background-color: #ccc; text-align: center; line-height: 200px; }JavaScript (script.js)
document.addEventListener('DOMContentLoaded', () => { const scrollContainer = document.querySelector('.scroll-container'); let isDragging = false; let startX; let scrollLeft; scrollContainer.addEventListener('mousedown', (e) => { isDragging = true; startX = e.pageX - scrollContainer.offsetLeft; scrollLeft = scrollContainer.scrollLeft; scrollContainer.style.cursor = 'grabbing'; }); scrollContainer.addEventListener('mouseleave', () => { isDragging = false; scrollContainer.style.cursor = 'grab'; }); scrollContainer.addEventListener('mouseup', () => { isDragging = false; scrollContainer.style.cursor = 'grab'; }); scrollContainer.addEventListener('mousemove', (e) => { if (!isDragging) return; e.preventDefault(); const x = e.pageX - scrollContainer.offsetLeft; const walk = (x - startX) * 1.5; // 调整滚动速度 scrollContainer.scrollLeft = scrollLeft - walk; }); });解释HTML: 创建一个包含滚动内容的容器。CSS: 隐藏滚动条:使用 -ms-overflow-style: none; 和 scrollbar-width: none; 隐藏IE、Edge和Firefox的滚动条,使用 ::-webkit-scrollbar 隐藏Chrome、Safari和Opera的滚动条。设置容器的鼠标样式为 grab 和 grabbing,以提供更好的用户体验。JavaScript:监听鼠标按下、移动和释放事件。在鼠标按下时,记录初始位置和滚动位置。在鼠标移动时,计算滚动距离并更新容器的 scrollLeft 属性。在鼠标释放或离开容器时,停止拖动。
这样,你就可以实现一个可以通过鼠标拖动来滚动的容器,并且滚动条不会显示。
网友回复