首页 > javascript相关 > vue教程 > 正文

VUE实现可随意拖动的弹窗组件_vue.js

2018-10-29 21:18:19

背景:项目需要,我们引入了前端框架就是目前最流行的框架之一vue,同时引入了一套由饿了吗维护的ui库,由于我们是在pc端使用发现它竟然没有提供可随意拖动的窗口,可能用的更多的时移动端吧吧,于是就随手写了一个,比较简单吧,但是做过的就会知道也是有一些小小的技巧,记录下吧留作备用。

由于不是很难,就不做过多解释了,直接上代码:

<template> <el-container v-bind:id="id"        v-if="dialogVisible">  <el-header>   <div @mousedown="mousedown">    <h2 v-html="title"></h2>    <div @click.stop="closeDialog()" style="position: absolute;top: 0px; right: 20px;">    <span>     <svg class="icon" aria-hidden="false">      <use xlink:href='#el-icon-ext-close'></use>     </svg>    </span>    </div>   </div>  </el-header>  <el-main>   <slot>这里是内容</slot>  </el-main>  <el-footer>   <span class="dialog-footer">    <el-button @click="closeDialog">取 消</el-button>    <el-button type="primary" @click="closeDialog">确 定</el-button>   </span>  </el-footer> </el-container></template><script> export default {  name: 'Window',  props: {   titlex: String,   id: [String, Number]  },  data() {   return {    title: '标题',    selectElement: ''   }  },  computed: {   dialogVisible: {    get: function () {     return this.$store.state.dialogVisible    },    set: function (newValue) {     this.$store.commit('newDialogVisible', newValue)    }   }  },  methods: {   closeDialog(e) {    this.dialogVisible = false    // alert(this.dialogVisible)    this.$store.commit('newDialogVisible', false)   },   mousedown(event) {    this.selectElement = document.getElementById(this.id)    var div1 = this.selectElement    this.selectElement.style.cursor = 'move'    this.isDowm = true    var distanceX = event.clientX - this.selectElement.offsetLeft    var distanceY = event.clientY - this.selectElement.offsetTop    // alert(distanceX)    // alert(distanceY)    console.log(distanceX)    console.log(distanceY)    document.onmousemove = function (ev) {     var oevent = ev || event     div1.style.left = oevent.clientX - distanceX + 'px'     div1.style.top = oevent.clientY - distanceY + 'px'    }    document.onmouseup = function () {     document.onmousemove = null     document.onmouseup = null     div1.style.cursor = 'default'    }   }  } }</script><style scoped> .el-container {  position: absolute;  height: 500px;  width: 500px;  border: 1px;  top: 20%;  left: 35%;  border-radius: 2px; } .dialog-footer {  text-align: right; } .el-main {  background-color: white; } .el-footer {  background-color: white; } .el-header {  background-color: white;  color: #333;  line-height: 60px; } .el-aside {  color: #333; }</style>

备注:解决了鼠标拖动过快移除窗口后终端问题,其它优点请自测,如有问题请留言!

以上这篇VUE实现可随意拖动的弹窗组件就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

  • 相关标签:vue教程
  • 本文发布HTML5中文学习网 ,转载请注明出处,感谢您!
  • 相关文章


  • 曝网友假装外国人写投诉信 ofo秒退押金并回函致歉
  • 苹果市值缩水逾2000亿美元 遭多家投行下调目标价
  • Asp.net Core与类库读取配置文件信息的方法_实用技巧
  • asp.net在Repeater嵌套的Repeater中使用复选框详解_实用技巧
  • 利用IIS调试ASP.NET网站程序的完整步骤_实用技巧
  • Asp.Net Core轻松学习系列之配置文件_实用技巧
  • ASP.NET 页生命周期概述(小结)_实用技巧
  • 详解ASP.NET Core WebApi 返回统一格式参数_实用技巧
  • 2018年网络流行语有哪些?2018年十大网络流行语盘点
  • 华为首席财务官孟晚舟被暂扣 深圳市政府要求加方立即放人!
  • 独孤九贱(4)_PHP视频教程

    江湖传言:PHP是世界上最好的编程语言。真的是这样吗?这个梗究竟是从哪来的?学会本课程,你就会明白了。 PHP中文网出品的PHP入门系统教学视频,完全从初学者的角度出发,绝不玩虚的,一切以实用、有用...

    独孤九贱(5)_ThinkPHP5视频教程

    ThinkPHP是国内最流行的中文PHP开发框架,也是您Web项目的最佳选择。《php.cn独孤九贱(5)-ThinkPHP5视频教程》课程以ThinkPHP5最新版本为例,从最基本的框架常识开始,将...

    独孤九贱(1)_HTML5视频教程

    《php.cn原创html5视频教程》课程特色:php中文网原创幽默段子系列课程,以恶搞,段子为主题风格的php视频教程!轻松的教学风格,简短的教学模式,让同学们在不知不觉中,学会了HTML知识。 ...

    ThinkPHP5实战之[教学管理系统]

    本套教程,以一个真实的学校教学管理系统为案例,手把手教会您如何在一张白纸上,从零开始,一步一步的用ThinkPHP5框架快速开发出一个商业项目。

    PHP入门视频教程之一周学会PHP

    所有计算机语言的学习都要从基础开始,《PHP入门视频教程之一周学会PHP》不仅是PHP的基础部分更主要的是PHP语言的核心技术,是学习PHP必须掌握的内容,任何PHP项目的实现都离不开这部分的内容,通...

    作者信息

    kevin

    永远在学习的路上!

    相关教程

  • javascript初级视频教程 javascript初级视频教程
  • jquery 基础视频教程 jquery 基础视频教程
  • javascript三级联动视频教程 javascript三级联动视频教程
  • 独孤九贱(3)_JavaScript视频教程 独孤九贱(3)_JavaScript视频教程
  • 独孤九贱(6)_jQuery视频教程 独孤九贱(6)_jQuery视频教程
  • 热门教程