【案例】使用Vue实现拖拽课表

效果展示

效果说明

点击左侧的课程并进行拖拽,拖拽到要开设本课程的地方然后松手,即可将本节课设置为当前所拖拽的科目并且背景色为当前科目的背景色,当多次拖拽到同一节课的时候将会实现后者覆盖前者的效果。

效果实现代码

第一步:创建项目

yarn create vite demo1

 第二步:安装项目所需要的依赖

yarn
yarn add vue-router
yarn add sass sass-loader
yarn add path

第三步:配置别名@

vite.config.js

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import path from 'path'// https://vitejs.dev/config/
export default defineConfig({plugins: [vue()],resolve: {alias: {'@': path.resolve(__dirname, 'src')}}
})

第四步:配置路由文件

src/router/index.js

import { createRouter, createWebHistory } from 'vue-router'
const routes = [{path: '/',component: () => import('@/views/Drag.vue')}
]
const route = createRouter({history: createWebHistory(),routes
})
export default route

第五步:引用路由文件

main.js

import { createApp } from 'vue'
import './style.css'
import App from './App.vue'
import router from './router'createApp(App).use(router).mount('#app')

第六步:创建Drag.vue文件,并编写效果代码

src/views/Drag.vue

<template><div class="box"><div><!-- draggable="true"将元素变为可拖动的 --><divclass="subject":style="{ backgroundColor: item.bgColor }"v-for="item in subjects":key="item.id"draggable="true"@dragstart="handleDragStart(item)">{{ item.name }}</div></div><div><table border="1" cellspacing="0" width="500" height="500"><caption>课程表</caption><tr><th colspan="2"></th><th v-for="week in weeks" :key="week">{{ week }}</th></tr><tr v-for="r in 8" :key="r" align="center"><td v-if="r < 5 && r === 1" rowspan="4">上午</td><td v-else-if="r === 5" rowspan="4">下午</td><td>{{ parts[r - 1] }}</td><td@dragover.prevent@drop="handleDrop($event)"v-for="d in 5":key="d"></td></tr></table></div></div>
</template><script setup>
import { ref } from "vue";const subjects = [{ id: 1, name: "语文", bgColor: "rgb(102, 233, 251)" },{ id: 2, name: "数学", bgColor: "rgb(242, 149, 123)" },{ id: 3, name: "英语", bgColor: "rgb(141, 220, 39)" },{ id: 4, name: "物理", bgColor: "rgb(211, 220, 39)" },{ id: 5, name: "化学", bgColor: "rgb(230, 181, 111)" },{ id: 6, name: "生物", bgColor: "rgb(102, 110, 251)" },{ id: 7, name: "地理", bgColor: "rgb(223, 142, 213)" },{ id: 8, name: "历史", bgColor: "rgb(242, 233, 123)" },{ id: 9, name: "政治", bgColor: "rgb(197, 167, 180)" },
];
const weeks = ["星期一", "星期二", "星期三", "星期四", "星期五"];
const parts = ["第一节","第二节","第三节","第四节","第五节","第六节","第七节","第八节",
];
const classObj = ref({ id: "", name: "", bgColor: "" });
const handleDragStart = (item) => {classObj.value = item;
};
const handleDrop = (e) => {e.target.textContent = classObj.value.name;e.target.style.backgroundColor = classObj.value.bgColor;
};
</script><style lang="scss" scoped>
.box {display: flex;user-select: none;
}
.subject {margin: 10px;padding: 20px 10px;width: 100px;text-align: center;border-radius: 20px;
}
table {margin-top: 20px;margin-left: 50px;caption {font-size: 30px;}
}
</style>

通过以上代码即可实现展示效果

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

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

相关文章

Linux 通过关键字查找文件

按文件名查找 find 路径 -name “文件名” 查找当前目录下的所有mk文件 find . -name "*.mk"按关键字查找 find 路径 -name “文件名” | xargs grep -n “关键字” 参数&#xff1a; xargs 是给命令传递参数的一个过滤器&#xff0c;也是组合多个命令的一个工具 -n…

使用 Python 进行图像验证码识别训练及调用

目录 1、验证码识别原理1.1 Tensorflow 介绍1.2 Tensorflow 运行原理1.3 卷积神经网络 CNN&#xff08;Convolutional Neural Networks&#xff09; 2、验证码识别实现步骤2.1 安装第三方模块2.1.1 安装 TensorFlow 模块2.2.2 安装 cuda2.2.3 下载 cudnn 2.2 读取验证码样本形成…

重磅!麒麟信安发布CentOS安全加固套件

CentOS Linux 7系统即将在6月30日停服&#xff0c;标志CentOS全部停止更新和维护。党政、金融、能源、通信、交通、公共服务等关键信息基础设施领域已经投运使用的CentOS系统将无法获取官方提供的漏洞修复补丁&#xff0c;此后&#xff0c;CentOS系统将面临巨大的安全风险与危害…

【Kubenetes】微服务治理:服务网格Istio安装搭建体验

文章目录 ServiceMesh介绍Istio解决方案安装Istio第一步 下载istio第二步 安装istio环境第三部 安装istio应用第四部 暴露到外部流量然后再下一步 把dashboard弄好 ServiceMesh介绍 扯淡环节 什么是服务网格?–服务间通信&#xff0c;可扩展性和灵活性服务网格的工作原理 --…

GMV ES6直流变频多联空调机组室外机工作原理

GMV ES6直流变频多联空调机组室外机工作原理如下&#xff1a; 内机为制冷模式运行时&#xff0c;室外机根据室内机的运行负荷需求启动运行&#xff0c;室外换热器作为系统的冷凝器&#xff0c;各制冷室内机的换热器并联作为系统的蒸发器&#xff0c;通过室内机的送回风循环实现…

推荐网站(8)iconfinder图标网站,包含大量图标

今天推荐网站iconfinder&#xff0c;他是一个包含大量图标网站&#xff0c;你可以找到自己想要的图标在里面&#xff0c;各种图标任你选择。 比如搜索appple图标 链接直达&#xff1a;https://www.iconfinder.com

通义千问模型升级:2.5正式上线的使用体验

个人对比各AI大模型的使用体会 正在用的国内的AI大模型主要有“通义千问”、“文心一言”、“讯飞星火”&#xff0c;还有国外的"ChatGPT"和"Copilot"&#xff0c;我觉得"通义千问"进步神速&#xff0c;因此现在我最常使用的就是"通义千问&…

Java逐层解析JSON的内存占用分析

哈喽&#xff0c;大家好&#xff0c;我是木头左&#xff01; 在当今的软件开发世界中&#xff0c;JSON&#xff08;JavaScript Object Notation&#xff09;已经成为了数据传输和存储的事实标准。由于其轻量级且易于人类阅读的特点&#xff0c;JSON被广泛用于Web服务、移动应用…

代码随想录打卡day27day28

回溯算法 回溯法解决的问题都可以抽象为树形结构&#xff0c;是的&#xff0c;我指的是所有回溯法的问题都可以抽象为树形结构&#xff01; 因为回溯法解决的都是在集合中递归查找子集&#xff0c;集合的大小就构成了树的宽度&#xff0c;递归的深度就构成了树的深度。 递归…

数据库管理-第190期 备份堪比生死(20240515)

数据库管理190期 2024-05-15 数据库管理-第190期 备份堪比生死&#xff08;20240515&#xff09;1 DDL误操作2 强大的RMAN3 ZDLRA总结 数据库管理-第190期 备份堪比生死&#xff08;20240515&#xff09; 作者&#xff1a;胖头鱼的鱼缸&#xff08;尹海文&#xff09; Oracle A…

【制作100个unity游戏之26】unity2d横版卷轴动作类游戏4(附带项目源码)

最终效果 系列导航 文章目录 最终效果系列导航前言添加敌人受击动画第一种 配置闪烁动画第二种 受伤击退效果人物死亡源码完结 前言 欢迎来到【制作100个Unity游戏】系列&#xff01;本系列将引导您一步步学习如何使用Unity开发各种类型的游戏。在这第26篇中&#xff0c;我们将…

照片误删如何恢复?这些方法帮你重拾回忆!

手机照片是我们记录美好时刻的重要工具。但有时我们会因为不小心或者错误操作而导致珍贵照片的丢失。那些与家人、朋友共度的美好时刻、旅途中的风景、重要的纪念日&#xff0c;一旦删除&#xff0c;就如同从记忆中抹去&#xff0c;令人惋惜不已。幸运的是&#xff0c;随着科技…