封装头部可拖拽的弹出框
封装组件:
<template><div class="base-popup" v-if="isVisible" v-draggable :style="styleConfig"><div class="popup-header"><i></i><span class="popup-title">{{ popupTitle }}</span><span @click="closePopup" class="close-btn"></span></div><div class="popup-content"><slot name="popup_body"></slot></div></div>
</template><script>
export default {props: {//标题popupTitle: "",//样式设置styleConfig: {default: function () {return {width: "717px",top: "12vh",};},},isVisible: {default: false,},closePopup: {type: Function,},},data() {return {curData: {},};},methods: {},
};
</script><style lang="less" scoped>
.base-popup {position: absolute;z-index: 1;left: 30%;//文字不可被选中-webkit-user-select: none;-moz-user-select: none;-ms-user-select: none;user-select: none;.popup-header {width: 100%;height: 33px;display: flex;box-sizing: border-box;margin-bottom: 3px;background: url("../../assets/img/home/popup-header.png") no-repeatcenter/100% 100%;cursor: move;i {display: inline-block;width: 32px;height: 33px;margin-right: 10px;background: url("../../assets/img/home/popup-header-icon.png")no-repeat center/100%;margin-top: 1px;}.popup-title {font-size: 18px;line-height: 33px;color: #fff;font-family: 时尚中黑简体;}.close-btn {position: absolute;right: 15px;top: 7px;cursor: pointer;width: 20px;height: 20px;background: url("../../assets/img/home/popup-close.png") no-repeatcenter/100%;}}.popup-content {padding: 12px;height: calc(100% - 36px);min-height: 300px;background-image: linear-gradient(to right, #004554, #001d2d);border: 1px solid #176573;}
}
</style>
定义v-draggable指令:
import Vue from "vue";Vue.directive("draggable", {inserted: function(el) {// el.style.cursor = "move";el.onmousedown = function(e) {if(e.path[0].className ==='popup-header' || e.path[0].className ==='popup-title'){let disx = e.pageX - el.offsetLeft;let disy = e.pageY - el.offsetTop;document.onmousemove = function(e) {let x = e.pageX - disx;let y = e.pageY - disy;let maxX =document.body.clientWidth -parseInt(window.getComputedStyle(el).width);let maxY =document.body.clientHeight -parseInt(window.getComputedStyle(el).height);if (x < 0) {x = 0;} else if (maxX > 0 && x > maxX) {x = maxX;}if (y < 0) {y = 0;} else if (maxY > 0 && y > maxY) {y = maxY;}el.style.left = x + "px";el.style.top = y + "px";};document.onmouseup = function() {document.onmousemove = document.onmouseup = null;};}};}
});
封装头部可拖拽的弹出框相关推荐
- 可拖拽的弹出窗口Js插件
下载地址 jsWindow是一个功能丰富的弹出窗口js插件,创建可拖放,可调整大小的弹出窗口.提醒.确认对话框和消息框在屏幕上. dd:
- 2022-05-10 实现一个可拖拽的弹出登录框
文章目录 要求 思路 完整代码 坐标说明(复习) 效果: 重点代码 要求 点击文字弹出一个带有样式的登录框 按下登录框的标题区域,可以实现拖动 思路 先计算鼠标的移动距离=移动的坐标-按下的坐标再计算 ...
- 使用Fancybox实现iframe弹出框
前景 公司要求封装一个js来实现一个弹出框的广告,以便外部的平台来调用.正好js~fancybox为我们提供了iframe功能.我们可以直接使用,不用自己去实现. fancybox介绍 官网地址: ...
- 弹出框的鼠标拖拽事件
几个与定位有关的概念: js: clientX/clientY属性:获得事件发生时鼠标指针在视口中的水平和垂直坐标. screenX/screenY属性:获取鼠标事件发生时鼠标光标相对于整个电脑屏幕的 ...
- Vue 实现弹框自由拖拽(不出可视范围、解决快速拖动问题)
Vue 实现弹框自由拖拽(不出可视范围.解决快速拖动问题) 由于页面中弹框很多,往往会挡住想要查看的内容.从而,有了自由移动拖拽弹框的需求:但在使用的过程中发现,一开始编写的drag.js文件会移出可 ...
- 原生Js封装的弹出框-弹出窗口-页面居中-多状态可选
实现了一下功能: 1.title可自定义 可拖拽 2.width height可以自定义 3.背景遮罩和透明度可以自定义 4.可以自己编辑弹出框里的html 5.确定 取消按钮可选 调用方法: 1 P ...
- React封装一个组件弹出框
目录 前言 代码 简要 引用 效果 前言 我是歌谣 放弃很容易 但是坚持一定很酷 为了保证react代码的一个简洁性 最近开始封装组件, 直接上代码 因为都很简单的模式 这边直接进行讲解 代码 //取 ...
- 纯js封装一个多功能弹出框
不借助其它的css代码和图片资源,可直接调用. 原创内容,请勿转载. 注意,不要直接复制文章里的封装代码,因为编辑器的原因,无论怎么编辑,它还是给修改了代码.文末提供了封装代码的下载地址(无需积分) ...
- html alter自动弹出,javascript封装alert()弹出框
由于各个浏览器之间的差异,弹出框不一样,这有影响页面的布局,所以自己就用原声js封装了一个alert弹出框,希望对有需求的有所帮助... ` alert function ok() { alert(' ...
最新文章
- C++ 预编译的时候使用defined 的含义
- Visual Studio Code Go 插件文档翻译
- JAVA用JNI方法调用C代码实现HelloWorld
- 《2018-2019全球IPv6支持度白皮书》发布,江北新区IPv6示范区建设正式启动
- python 笛卡尔积,排列,组合
- mysql(mariadb)常用命令(持续更新ing)
- 浅谈微软Windows Server 2012的性能指标
- 阿里巴巴发布首个知识引擎研究计划,联合清华浙大等五大高校攻坚AI推理
- python面试技巧和注意事项_Python 程序员面试须知须会的5个问题
- centos yum方式安装nginx 并支持https
- 树莓派之OLED12864视频播放—BadApple
- TD-LTE Technology And Its Measurements(TD-LTE 技术及其应用)
- google海底光缆图_谷歌地图资讯-2013版“海底光缆地图”发布
- 中文字体的FontMetrics解析
- 三角网导线平差实例_附合导线平差步骤
- Ubuntu搭建Android NDK开发环境并编译Demo
- 记录mysql in和not in 效率低下的问题
- 要有遥不可及的梦想,也要有脚踏实地的本事
- 汇率实时行情查询接口
- murmur3 php,murmur: 更快更好的哈希函数
热门文章
- Visio删除图形的方法
- 计算机视觉基础与模式识别,计算机视觉与模式识别(3)—— FaceMorphing
- Ubuntu18.04安装和配置划词翻译软件Goldendict
- 如何设置对企业批量的图文档加密?2021企业首选公司文档加密方案,宁波风奥金甲数据防泄漏...
- 讨论一下观点.....
- 看后很有感触的一篇情感文章mop转的
- 腾讯优测亮相2020第二届中国金融CIO年会
- 人脸识别 在线音乐,自己开发的一款不太成熟的安卓APP
- 3Sum 3Sum Closest 4Sum
- Linux使用sed命令删除文件中指定内容