微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

html可以向左向右拉的按钮代码

HTML是网络世界中最重要的语言之一,不仅可以发布网页内容,还可以通过控制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] 举报,一经查实,本站将立刻删除。

相关推荐