增加弹出层的拖拽功能

//背景层加入页面
//以下部分实现弹出层的拖拽效果
var posX;
var posY;
Idiv.οnmοusedοwn=function(e)
{
if(!e) e = window.event; //IE
posX = e.clientX - parseInt(Idiv.style.left);
posY = e.clientY - parseInt(Idiv.style.top);
document.onmousemove = mousemove;
}
document.onmouseup = function()
{
document.onmousemove = null;
}
function mousemove(ev)
{
if(ev==null) ev = window.event;//IE
Idiv.style.left = (ev.clientX - posX) + "px";
Idiv.style.top = (ev.clientY - posY) + "px";
}
 
}
function closeDiv() //关闭弹出层
{
var Idiv=document.getElementById("Idiv");
Idiv.style.display="none";
document.body.style.overflow = "auto"; //恢复页面滚动条
var body = document.getElementsByTagName("body");
var mybg = document.getElementById("mybg");
body[0].removeChild(mybg);
}
Uniapp中可以使用uni-popup组件实现弹出功能,但是默认情况下是不能拖拽的。不过你可以借助第三方插件来实现可拖拽弹出。 一个比较常用的插件是vue-draggable-resizable,在Uniapp中使用时需要先安装该插件: ``` npm install vue-draggable-resizable ``` 然后在需要使用可拖拽弹出的页面引入该组件: ```vue <template> <div> <draggable-resizable :isDraggable="true" :isResizable="false"> <div class="popup-content"> <!-- 弹出内容 --> </div> </draggable-resizable> </div> </template> <script> import DraggableResizable from "vue-draggable-resizable"; export default { components: { DraggableResizable, }, }; </script> <style> .popup-content { padding: 20px; background-color: #fff; border-radius: 10px; box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.5); } </style> ``` 这里设置`isDraggable`为`true`表示可拖拽,`isResizable`为`false`表示不可调整大小。 如果需要在拖拽时更新弹出的位置,可以使用`@drag`事件: ```vue <template> <div> <draggable-resizable :isDraggable="true" :isResizable="false" @drag="onDrag"> <div class="popup-content"> <!-- 弹出内容 --> </div> </draggable-resizable> </div> </template> <script> import DraggableResizable from "vue-draggable-resizable"; export default { components: { DraggableResizable, }, methods: { onDrag(e) { console.log(e.x, e.y); // 更新弹出位置的代码 }, }, }; </script> ``` 在`onDrag`方法中可以获取到拖拽时的坐标,然后再更新弹出的位置即可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值