javaScript实现弹窗拖动

摘要:通过原生javaScript进行窗口拖动的实现,通过javaScript实现自定义容器的拖动操作,通过拖动标题部分进行窗口的移动

通过原生javaScript进行窗口拖动的实现,

一、功能

通过javaScript实现自定义容器的拖动操作,通过拖动标题部分进行窗口的移动

二、实现思路

通过鼠标左键按下触发条件

通过event获取鼠标按下位置距离顶部和左边的距离,减去容器距离浏览器顶部和左边的距离实现距离的判定

嵌套鼠标移动事件,在移动时通过鼠标当前的位置减去上一步获取的位置信息,从而实现位置更新

嵌套鼠标弹起事件,在鼠标左键松开后移除鼠标移动监听事件

注意:容器必须使用定位-position

<!--html-->
    <!-- 添加表单 -->
    <form id="addForm">
        <!-- 标题 -->
        <div id="title">弹窗拖动示例<span class="fr">×</span></div>
    </form>
/*css样式*/

#addForm {
    width: 400px;
    height: 400px;
    background: #7B68EE;
    position: absolute;
    margin: auto;
    top: 50%;
    left: 50%;
    /* 实现鼠标拖拽使用css3效果 */
    transform: translate(-50%, -50%);
}

/* 标题 */
#title {
    display: flex;
    justify-content: space-between;
    box-sizing: border-box;
    padding: 0 10px;
    height: 40px;
    background: #8B008B;
    color: #fff;
    line-height: 35px;
    font-size: 25px;
}
/*javascript*/
    let title = document.querySelector("#title");
    let addForm = document.querySelector("#addForm");

    title.addEventListener("mousedown", function (e) {
        let x = e.pageX - addForm.offsetLeft;
        let y = e.pageY - addForm.offsetTop;
        document.addEventListener("mousemove", move);
        function move(e) {
            addForm.style.left = e.pageX - x + 'px';
            addForm.style.top = e.pageY - y + 'px';
        }
        document.addEventListener("mouseup", function (e) {
            document.removeEventListener("mousemove", move);
        })
    })

本文内容仅供个人学习、研究或参考使用,不构成任何形式的决策建议、专业指导或法律依据。未经授权,禁止任何单位或个人以商业售卖、虚假宣传、侵权传播等非学习研究目的使用本文内容。如需分享或转载,请保留原文来源信息,不得篡改、删减内容或侵犯相关权益。感谢您的理解与支持!

链接: https://shenqiku.cn/article/FLY_10543