vue弹出模态框dialog,vue实现dialog窗口
元素的对话弹框在项目中挺常用的。拖拽形式的弹框会提高用户体验,本文实现了某视频剪辑软件可拖拽的对话弹框,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
本文主要介绍了某视频剪辑软件实现可拖拽的对话弹框,分享给大家,具体如下:
元素的对话弹框在项目中挺常用的。但有时候嵌套的话会遮住,体验不好。拖拽形式的弹框会提高用户体验
借助基于Sortable.js的某视频剪辑软件拖拽组件vuedraggable
安装
新公共管理安装vuedragable-保存
在公共组件中新建个射流研究…文件,搭配某视频剪辑软件自定义指令来实现拖拽的效果
从“Vue”导入Vue
//v-dialogDrag:弹窗拖拽属性
Vue.directive(dialogDrag ,{
bind(el,binding,vnode,oldVnode) {
const dialogHeaderEl=El。查询选择器(.El-dialog _ _ header’);
const dragDom=el.querySelector( .El-dialog’);
dialogheaderel。风格。CSS text=;光标:移动;
德拉多姆。风格。CSS text=;top:0px;
//获取原有属性ie dom元素。当前样式火狐谷歌window.getComputedStyle(dom元素,null);
const sty=(()={
如果(窗口。文档。当前样式){
return (dom,attr)=DOM。当前样式[属性];
}否则{
return (dom,attr)=getComputedStyle(dom,false)[attr];
}
})()
dialogheaderel。onmousedown=(e)={
//鼠标按下,计算当前元素距离可视区的距离
const disX=e . clientx-dialogheaderel。向左偏移;
const disY=e . clienty-dialogheaderel。offsettop
const屏幕宽度=文档。身体。客户端宽度;//正文当前宽度
const屏幕高度=文档。documentelement。客户身高;//可见区域高度(应为身体高度,可某些环境下无法获取)
const dragdom width=dragdom。offsetwidth//对话框宽度
const dragdom height=dragdom。偏移高度;//对话框高度
const minDragDomLeft=dragdom。向左偏移;
const maxDragDomLeft=屏幕宽度-dragdom。左拖动宽度的偏移量;
const minDragDomTop=dragdom。offsettop
const maxDragDomTop=屏幕高度-dragdom。offsettop-dragdom高度;
//获取到的值带像素正则匹配替换
let styL=sty(dragDom, left );
let styT=sty(dragDom, top );
//注意在工程师协会中第一次获取到的值为组件自带50% 移动之后赋值为像素
如果(styl。包括( % ){
styL=文档。身体。客户端宽度*(风格。替换(/\ %/g, )/100);
styT=文档。身体。客户端高度*(styT。替换(/\ %/g, )/100);
}否则{
styL=styL.replace(/\px/g, );
styT=styT.replace(/\px/g, );
};
文档。onmousemove=function(e){
//通过事件委托,计算移动的距离
let left=e . clientx-disX;
let top=e . clienty-disY;
//边界处理
if (-(left) minDragDomLeft) {
left=-(minDragDomLeft);
} else if (left maxDragDomLeft) {
left=maxDragDomLeft
}
if (-(top) minDragDomTop) {
top=-(minDragDomTop);
} else if (top maxDragDomTop) {
top=maxDragDomTop
}
//移动当前元素
德拉多姆。风格。CSS text=`;left:$ { left styL } px;top:$ { top styT } px;`;
};
文档。onmouseup=函数(e){
document.onmousemove=null
document.onmouseup=null
};
}
}
})
页面中使用垂直对话框拖动即可实现想要的效果
埃尔对话
垂直对话框拖动
:title=dialogTitle
:visible.sync=addDialogVisible
:before-close=handleClose
:close-on-click-modal=false
宽度=50%
div class=添加列
div class=拉式组织
div class=bm-title 部门管理/div
埃尔树
:data=treeData
懒惰:load=loadNode
手风琴
:props=defaultProps
:default-expand-all=false
/el-tree
/div
显示信息
埃尔-表格内嵌
El-表单-项目标签=用户ID
El-input v-model=搜索参数。userid size= mini /El-input
/El-表单-项目
El-表单-项目标签=用户名
El-input v-model=搜索参数。用户名 size= mini /El-input
/El-表单-项目
el-form-item class=btn-item
El-button type= primary @ click= handle query size= mini 查询/el-button
/El-表单-项目
el-form-item class=btn-item
El-button type= success @ click= hadnleadperson size= mini 添加人员/el-button
/El-表单-项目
/el格式
埃尔表
:data=tableData
一个标签
style= width:100%;
埃尔-表格-列类型=选择宽度= 50 /El-表格-列
El-table-column prop= id width= 60 label=登录ID /El-表格-列
埃尔-表格-列属性=用户名标签=用户名/El-表格-列
El-table-column prop= education label=部门/El-表格-列
El-table-column prop= sex label=手机/El-表格-列
/el-table
/div
/div
/el-dialog
到此这篇关于某视频剪辑软件实现可拖拽的对话弹框的文章就介绍到这了,更多相关某视频剪辑软件可拖拽弹框内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。