自定义v-drag指令(横向拖拽滚动)

指令

        Vue.directive('drag', {// 钩子函数,被绑定元素插入父节点时调用 (父节点存在即可调用,不必存在于 document 中)。inserted: (el, binding, vnode, oldVnode) => {console.log(el, binding, vnode, oldVnode)let drag = el; // 要拖拽的元素// let wrapper = el.parentElement;let dragImg = document.createElement("span"); // 拖拽图标let X = 0;drag.draggable = "true" // 使元素可直接拖拽drag.style.width = "max-content" // 使元素充满容器drag.appendChild(dragImg) // 添加拖拽图标,不添加则默认显示拖拽元素// 给元素添加父元素let wrapper = document.createElement('div');//  新建父元素wrapper.className = 'scroll-middle'; // 这个类是自定义的滚动条类wrapper.style.overflowX = "auto";wrapper.style.overflowY = "hidden";// 将父元素添加进去drag.parentNode.replaceChild(wrapper, drag);//  获取子元素原来的父元素并将新父元素代替子元素wrapper.appendChild(drag);//  在新父元素下添加原来的子元素drag.ondragstart = function (e) {e = e || window.event;X = e.offsetX;e.dataTransfer.setDragImage(dragImg, 0, 0); //setDragImage(imgElement, x, y) };drag.ondrag = function (e) {if (drag.clientWidth > wrapper.clientWidth) {e = e || window.event;if (0 <= wrapper.scrollLeft &&wrapper.scrollLeft <= wrapper.scrollWidth &&e.clientX != 0) {// console.log("拖拽中", e, wrapper.scrollLeft + (X - e.offsetX));// wrapper.scrollTo(wrapper.scrollLeft + (X - e.offsetX), 0); // 两种皆可wrapper.scrollLeft = wrapper.scrollLeft + (X - e.offsetX)}}};// drag.ondragend = function (e) {//   console.log("拖拽结束", e);// };}// },// // 只调用一次,指令第一次绑定到元素时调用,用这个钩子函数可以定义一个在绑定时执行一次的初始化动作。// bind(binding,) {//   console.log('bind');// },// // 所在组件的 VNode 更新时调用,但是可能发生在其孩子的 VNode 更新之前。// // 转载请注明出处:https://blog.csdn.net/GeniusXYT/article/details/114372452// // 指令的值可能发生了改变也可能没有。但是你可以通过比较更新前后的值来忽略不必要的模板更新 // update() {//   console.log('update');// },// // 所在组件的 VNode 及其孩子的 VNode 全部更新时调用。// componentUpdated() {//   console.log('componentUpdated');// },// // 只调用一次,指令与元素解绑时调用。// unbind() {//   console.log('unbind');// }})

Vue文件

<template><div v-drag><span v-for="(s, i) in list" :key="i">{{ s }}</span></div>
</template><script>
export default {data() {return {list: ["富强","民主","文明","和谐","自由","平等","公正","法治","爱国","敬业","诚信","友善",],};},
};
</script><style scoped>
span {background-color: aliceblue;margin: 1vw;font-size: 4vw;color: rgb(53, 48, 48);
}
</style>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/278533.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

javascript获取时间差

function GetDateDiff(startTime, endTime, diffType) {//将xxxx-xx-xx的时间格式&#xff0c;转换为 xxxx/xx/xx的格式 startTime startTime.replace(/\-/g, "/");endTime endTime.replace(/\-/g, "/");//将计算间隔类性字符转换为小写diffType diffTy…

JMeter扩展JMeter插件获取更多监听器

为了获取更多监听器&#xff0c;方便的监控系统及应用&#xff0c;有必要安装第三方插件 插件下载地址&#xff1a; https://jmeter-plugins.org/downloads/old/ http://pan.baidu.com/s/1gfC11yN 注&#xff1a;如果插件和软件版本不兼容&#xff0c;可能在开启Jmeter时会报错…

如何阻止Chrome(或Edge)接管媒体密钥

Google Chrome now has built-in support for media keys. Unfortunately, Chrome will take over your media keys and prevent them from controlling apps like Spotify when you’re watching YouTube, for example. Here’s how to make Chrome ignore your media keys. G…

js滚动条滚动到指定元素

let item document.getElementById("item"); // 指定的元素 let wrapper document.getElementById("wrapper"); // 其父元素 - 必须是产生滚动条的元素// 元素聚焦法定位 // item.focus(); // 可用 outline:none; 除去聚焦产生的框; 对于默认没有聚焦的…

开源性能测试工具JMeter快速入门(一)

目录一、JMeter简介二、JMeter功能介绍三、JMeter脚本四、关于JMeter小提示一、JMeter简介1.定义JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试&#xff0c;它最初被设计用于Web应用测试&#xff0c;但后来扩展到其他测试领域。 1&#xff09;它可以用…

八重州8900如何解锁_八重贵族怪胎之路

八重州8900如何解锁Dealing with computers day in and day out can be a harrowing experience. In difficult times, or even when things are idle, finding some spirituality can help cope with the experience—Techies: I give you the Eightfold Noble Geek Path. 日…

mysql 5.7.18 winx64安装配置方法

在mysql-5.7.18-winx64文件夹下新建my.ini文件[mysql] # 设置mysql客户端默认字符集 default-character-setutf8 [mysqld] #设置3306端口 port 3306 # 设置mysql的安装目录 basedirD:\Program Files\mysql-5.7.18-winx64 # 设置mysql数据库的数据的存放目录 datadirD:\Prog…

js 实现拖拽滚动、滚轮缩放元素函数和案例

文章目录一、拖拽滚动1、封装函数2、示例&#xff1a;二、滚轮缩放1、封装函数2、结合拖拽滚动示例一、拖拽滚动 1、封装函数 /*** description 使用鼠标拖拽div&#xff0c;实现横向、纵向滚动* param el 被拖拽滚动的元素&#xff08;产生滚动条的元素&#xff09;*/functio…

怎么解决input中readonly属性的iOS一直存在光标问题

用css中的pointer-events:none转载于:https://www.cnblogs.com/studyh5/p/8352061.html

赠与大学毕业生_出售,赠与或交易iPhone之前应该做什么

赠与大学毕业生A factory reset of your iPhone erases all of your content and settings, reverting it to a like-new state. However, there are a few extra steps you should take if you plan to get rid of your iPhone. iPhone的恢复出厂设置将删除所有内容和设置&…

layui radio 根据获取的到值选中

<input type"radio" name"lwkg" value"1" title"开" lay-filter"lwkg"> <input type"radio" name"lwkg" value"0" title"关" lay-filter"lwkg"> layui.use(…

设置Mac自动显示和隐藏 Dock 栏的速度

Dock 显示和隐藏&#xff0c;系统默认设置成了1秒 通过终端.APP修改显示和隐藏的时间 &#xff08;单位&#xff1a;秒&#xff09; 默认的&#xff1a;defaults write com.apple.dock autohide-delay -int 1 优化的&#xff1a;defaults write com.apple.dock autohide-del…

powerpoint预览_如何放大和缩小PowerPoint演示文稿的一部分

powerpoint预览Microsoft PowerPoint lets you zoom in and out on a specific part of your PowerPoint slideshow, which can be handy both while editing and for drawing attention to important objects or ideas during the presentation. Here’s how to do it. Micros…

GitGitHub语法大全

目录 1. GitHub与Git万用语法1&#xff09;创建库2&#xff09;添加和提交到仓库3&#xff09;版本回退4&#xff09;缓存区和暂存区5&#xff09;撤销和删除文件6)远程仓库7)创建和合并分支2. 更多Git语法1. GitHub与Git万用语法 1&#xff09;创建库 git init 2&#xff09;添…

从Firefox控制您喜欢的音乐播放器

Do you love listening to music while you browse? Now you can access and control your favorite music player directly from Firefox with the FoxyTunes extension. 您喜欢在浏览时听音乐吗&#xff1f; 现在&#xff0c;您可以直接使用FoxyTunes扩展程序从Firefox访问和…

富文本编辑器初探

长期以来&#xff0c;作为用户我是富文本编辑器的使用者&#xff0c;作为前端开发&#xff0c;我也只是富文本插件的使用者&#xff0c;对内部实现细节不甚了解&#xff0c;使用上也只停留在调用插件提供的API&#xff0c;实现一些业务逻辑。最近的项目&#xff0c;需要开发一个…

特殊的求和(函数和循环)

【问题描述】 编写函数int fun(int a,int n)求Sn a aa aaa … aa…a 的值&#xff08;最后一个数中 a 的个数为 n &#xff09;&#xff0c;其中 a 是一个1~9的数字&#xff0c;例如&#xff1a;2 22 222 2222 22222 &#xff08;此时 a2 n5 &#xff09; 。参数由主函…

ms project 入门_Microsoft Project 2010入门

ms project 入门Would you like to keep your projects on track and keep track of how time and resources are used? Let’s take a look at Microsoft Project 2010 and how it can help you stay on top of your projects. 您想保持项目进度并了解如何使用时间和资源吗&…

mysql基本的增删改查和条件语句

增 insert into 表名&#xff08;列名,列名。。。。。。&#xff09; values("test1",23),("test2",23),("test3",24); 这条命令可以一次增加一条数据&#xff0c;也可以同时增加多条数据 还可以从插入其他的表到数据到当前表 insert into 插入的…

后端model传入前端JSP页面中的值判断后再取值

所遇到的问题后端model传入前端JSP页面中的值通过foreach循环内要满足条件才能取值给Div中&#xff0c;我们知道jsp页面中可以直接用EL表达式取值&#xff0c;格式就是${"model中传来的数据"},但是我要把传过来的数据判断后再取值就遇到了问题&#xff0c;通过查百度…