当前位置: 首页 > news >正文

vue实现鼠标拖拽div左右移动的功能

直接代码:

<template><div class="demo"><div class="third-part" id="发展历程"><div class="title">发展历程</div><div class="content" id="nav" v-if="dataList&&dataList.length>0"><div class="item" v-for="(item,index) in dataList" :key="index"><div>{{ item.month }}</div><div>{{ item.content }}</div></div></div><div class="year"><span :class="{'active': active==item}" @click="active=item" v-for="(item,index) in yearList" :key="index">{{ item }}</span></div></div></div>
</template><script>export default {data() {return {dataList: [{ month: "2月",content: "先后通过CMMI3级、ISO9000、ITSS3级等多项国际、国家级认证。"},{ month: "5月",content: "先后通过CMMI3级、ISO9000、ITSS3级等多项国际、国家级认证。"},{ month: "7月",content: "先后通过CMMI3级、ISO9000、ITSS3级等多项国际、国家级认证。"},{ month: "9月",content: "先后通过CMMI3级、ISO9000、ITSS3级等多项国际、国家级认证。"} //后期内容问UI],active: 2023,yearList:['2023','2022','2021','2020']}},mounted(){this.$nextTick(()=> {this.scrollInit()})},methods: {scrollInit() {// 获取要绑定事件的元素const nav = document.getElementById("nav")var flag; // 鼠标按下var downX; // 鼠标点击的x下标var scrollLeft; // 当前元素滚动条的偏移量nav.addEventListener("mousedown", function (event) {console.log("触发mousedown");flag = true;downX = event.clientX; // 获取到点击的x下标scrollLeft = this.scrollLeft; // 获取当前元素滚动条的偏移量});nav.addEventListener("mousemove", function (event) {if (flag) { // 判断是否是鼠标按下滚动元素区域var moveX = event.clientX; // 获取移动的x轴var scrollX = moveX - downX; // 当前移动的x轴下标减去刚点击下去的x轴下标得到鼠标滑动距离this.scrollLeft = scrollLeft - scrollX // 鼠标按下的滚动条偏移量减去当前鼠标的滑动距离console.log(scrollX)//当滑动到400位置时让2022样式变化等等if(scrollLeft == 400 ){that.active=2022console.log("到400了");}else if(scrollLeft == 600){console.log("到600了");}}});// 鼠标抬起停止拖动nav.addEventListener("mouseup", function () {flag = false;});// 鼠标离开元素停止拖动nav.addEventListener("mouseleave", function (event) {flag = false;});},},}
</script><style lang="scss" scoped>
.demo {user-select: none;width: 1920px;
}.third-part {width: 100%;height: 800px;background-image: url('../assets/img/about/aboutusbg3.png');background-size: 100% 100%;padding-top: 100px;box-sizing: border-box;.title {height: 60px;font-size: 48px;font-family: Alibaba PuHuiTi 2.0, Alibaba PuHuiTi 2.0-800;line-height: 60px;color: #fff;}.content {margin-left: 300px;margin-top: 100px;width: 1469px;height: 235px;overflow-x: auto;// box-sizing: border-box;white-space: nowrap;&::-webkit-scrollbar {width: 0px;height: 0px;}.item {width: 403px;height: 230px;text-align: left;margin-right: 130px;display: inline-block;white-space: wrap;div:nth-child(1){height: 89px;font-size: 60px;font-family: Anton, Anton-400;color: #fff;line-height: 60px;border-left: 3px solid #fff;padding-left: 37px;}div:nth-child(2){height: 141px;width: 365px;font-size: 28px;font-family: Alibaba PuHuiTi 2.0, Alibaba PuHuiTi 2.0-400;color: #ffffff;line-height: 50px;padding-left: 37px;border-left: 1px solid #fff;}}}.year {width: 1700px;height: 116px;margin-top: 114px;text-align: left;padding-left: 450px;span {display: inline-block;width: 200px;height: 100%;border-bottom: 1px solid #fff;font-size: 50px;font-family: Anton, Anton-400;color: #bebef6;line-height: 70px;padding: 30px 0;text-align: center;box-sizing: border-box;}span:hover {font-size: 70px;vertical-align: top;border-bottom: 4px solid #722ed1;}.active {font-size: 70px;vertical-align: top;border-bottom: 4px solid #722ed1;}}}
</style>

这部分区域可以鼠标拖拽左右滚动

http://www.lryc.cn/news/165833.html

相关文章:

  • 基于Python和mysql开发的商城购物管理系统分为前后端(源码+数据库+程序配置说明书+程序使用说明书)
  • MySQL内外连接、索引特性
  • 滚动条设置
  • 【AI】机器学习——感知机
  • 蓝牙遥控器在T2-U上的应用
  • 数据驱动的数字营销与消费者运营
  • Qt点亮I.MX6U开发板的一个LED
  • 网络摄像头-流媒体服务器-视频流客户端
  • Django05_反向解析
  • 基于HTML、CSS和JavaScript制作一个中秋节倒计时网页
  • 富斯I6刷10通道固件
  • vector的模拟实现 总结
  • k8s中的有状态,无状态,pv、pvc等
  • springboot+jxls复杂excel模板导出
  • 用selenium webdriver获取网站cookie后,实现免登录上网站
  • 如何使用Java进行安全测试?
  • Linux之Socket函数(详细篇)
  • Dajngo06_Template模板
  • 快速幂 c++
  • 分享一个基于微信小程序的医院口腔助手小程序 牙科诊所预约小程序 源码 lw 调试
  • Si3262 一款低功耗刷卡+触摸+mcu 三合一SOC芯片
  • [H5动画制作系列] 奔跑的豹子的四种Demo演化
  • 如何实现让一个函数能返回多个值的效果
  • End-to-end 3D Human Pose Estimation with Transformer
  • 状态管理Pinia
  • maven运行报错解决
  • 在线会计软件推荐:高效实用的选择解析
  • vue监听Enter键
  • ADS中带通滤波器模型参数含义学习笔记
  • 【Blender】Blender入门学习