美文网首页
vue拖拽元素

vue拖拽元素

作者: 相听不厌 | 来源:发表于2019-10-14 18:55 被阅读0次

实现目的

微信图片_20191014185920.png

代码

实现鼠标按住title可以拖拽set模块。
<template>

    <div class="set" ref="set">
        <div class="title" @mousedown="onmousedown">
            <p class="titleName">系统设置</p>
            <p class="titleClose">X</p>
        </div>
        <div class="main">
            <div class="tab">
                <div class="tabItem" :class="i === defaultIndex ? 'active':''" v-for="(value,i) in tabs" :key="i"
                     @click="tabClick(i)"> {{value}}
                </div>
            </div>
            <div class="tabContent"></div>
        </div>
    </div>

</template>

<script>
    import Drag from "../plugins/drag"
    export default {
        name: "Set",
        data() {
            return {
                tabs: ['岗亭设置', '其他设置'],
                defaultIndex: 0,
                //    鼠标状态
                mounseStatus: false,
            }
        },
        methods: {
            tabClick(e) {
                console.log(e)
                this.defaultIndex = e;

            },
            onmousedown(e){
                Drag.drag(e,this.$refs.set)
            }
        }
    }
</script>

<style scoped>
    .set {
        display: flex;
        height: 50%;
        width: 60%;
        flex-direction: column;
        position: absolute;
    }

    .title {
        display: flex;
        height: 50px;
        width: 100%;
        background: #031438;
        justify-content: space-between;
        padding-left: 20px;
        align-items: center;
    }

    .titleName {
        color: #13b8fa;
    }

    .titleClose {
        color: #fff;
        padding: 10px 15px;
        cursor: pointer;
        transition: color .2s linear;
    }

    .titleClose:hover {
        color: rgba(255, 255, 255, .8);
    }

    .main {
        display: flex;
        flex: 1;
        background: #fff;
        flex-direction: column;
    }

    .tab {
        display: flex;
        height: 50px;
        background: #eeeeee;
    }

    .tabItem {
        display: flex;
        width: 150px;
        justify-content: center;
        align-items: center;
        font-size: 14px;
        color: #666;
    }

    .active {
        background: #fff;
        font-size: 16px;
    }

</style>

drag.js

参数e是鼠标点击event,参数a是需要拖拽的元素。
export default {
    drag(e,a) {

        //算出鼠标的位置
        let mounseX = e.clientX
        let mounseY = e.clientY
        //算出元素的位置
        let divX = a.offsetLeft
        let divY = a.offsetTop

        document.onmousemove = (e) => {

            //用鼠标移动后的位置减去鼠标的位置,得到鼠标移动的距离
            let left = e.clientX - mounseX;
            let top = e.clientY - mounseY;

            //移动当前元素
            a.style.left = divX + left + 'px';
            a.style.top = divY + top + 'px';
        };
        document.onmouseup = (e) => {
            document.onmousemove = null;
            document.onmouseup = null;
        };

    }
}

相关文章

  • vue拖拽元素

    实现目的 代码 实现鼠标按住title可以拖拽set模块。 drag.js 参数e是鼠标点击event,参数a是需...

  • js 拖拽元素(vue)

    标题为啥写vue呢?原因我的这个功能是在vue的项目里面的,然而实际上是用js实现的,与vue并无太大的关系。 如...

  • vue 拖拽元素指令

    使用 实现代码

  • 拖拽上传

    拖拽事件 拖拽元素ondrag 应用于拖拽元素,整个拖拽过程都会调用ondragstart应用于拖拽元素,...

  • 元素拖曳 H5

    拖拽 如何让一个元素变成拖拽元素 draggable=‘true’ ondrag 应用于拖拽元素,整个拖拽过程都会...

  • vue拖拽、拖放、移动元素

    方法一: 方法二:

  • HTML5拖拽drag

    通过拖拽实现页面元素的位置改变 实现拖拽效果 源元素 - 要拖拽的文件 目标元素 - 要拖拽到哪里去 目前实现拖拽...

  • Html5 + Css 3 文件拖拽上传功能

    拖拽上传文件功能 拖拽事件 拖拽元素ondrag 应用于拖拽元素,整个拖拽过程都会调用ondragstart应用...

  • js:拖拽事件

    拖拽事件 ondragstart当拖拽元素被开始拖拽时,event:拖拽元素。[从操作系统向浏览器拖拽文件不会触发...

  • 【vue-draggable】在拖拽元素上绑定的点击事件在安卓手

    vue-draggable版本:2.24.3解决办法:新增options参数,把需要拖拽的元素添加到handle属...

网友评论

      本文标题:vue拖拽元素

      本文链接:https://www.haomeiwen.com/subject/ffcdmctx.html