HTML是网络世界中最重要的语言之一,不仅可以发布网页内容,还可以通过控制HTML元素来实现各种用户交互。而其中一个常见的需求就是让按钮可以向左向右拉动,以便更好地展现一些长内容。
下面是可以向左向右拉的按钮代码:
<style> .draggable { cursor: pointer; user-select: none; -webkit-user-select: none; -moz-user-select: none; touch-action: none; position: relative; display: inline-block; } .draggable::-moz-selection { background-color: transparent; } .draggable::selection { background-color: transparent; } .draggable.dragging { z-index: 99999; } .draggable.dragging:hover { cursor: grabbing; } </style> <script> var dragItem = document.querySelector(".draggable"); var container = document.querySelector(".container"); var active = false; var currentX; var initialX; var offsetX; container.addEventListener("mousedown",dragStart); container.addEventListener("mouseup",dragEnd); container.addEventListener("mousemove",drag); container.addEventListener("touchstart",dragStart); container.addEventListener("touchend",dragEnd); container.addEventListener("touchmove",drag); function dragStart(e) { if (e.type === "touchstart") { initialX = e.touches[0].clientX - offsetX; } else { initialX = e.clientX - offsetX; } if (e.target === dragItem) { active = true; } } function dragEnd(e) { initialX = currentX; active = false; } function drag(e) { if (active) { e.preventDefault(); if (e.type === "touchmove") { currentX = e.touches[0].clientX - initialX; } else { currentX = e.clientX - initialX; } offsetX = currentX; setTranslate(currentX,dragItem); } } function setTranslate(xPos,el) { el.style.transform = "translate3d(" + xPos + "px,0)"; } </script> <div class="container"> <div class="draggable"> 可以向左向右拉动的按钮 </div> </div>
以上代码中,我们使用了一些CSS样式来使按钮有“拖动”的状态,并且使用了JavaScript来控制按钮的拖动,其中有一些细节需要注意:
- 为了防止拖动时出现用户选择文字的情况,我们使用了CSS的user-select属性;
- 为了支持移动端的拖动事件,我们使用了touch事件;
- 为了使拖动时的效果更加自然,我们使用了CSS的translate3d属性。
通过以上代码,我们可以轻松地实现一个可以向左向右拉动的按钮,并在页面上展现各种长内容。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。