【案例】使用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.mzph.cn/pingmian/11855.shtml

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

相关文章

Peter算法小课堂—序列切割

讲序列切割之前&#xff0c;先来个铺垫 高手集训 题目描述&#xff1a; 课程表里有连续的n天可以供你选择&#xff0c;每天都有专题课程。其中第i天的专题趣味程度为h[i]。假设你选择了其中连续的若干天&#xff0c;从第l天到第r天。那么&#xff0c; 训练效果 h[l]*1 h[…

HTML的使用(上)

文章目录 前言一、HTML是什么&#xff1f;二、使用内容 &#xff08;1&#xff09;换行标记<br>&#xff08;2&#xff09;加粗标记<b> </b>&#xff08;3&#xff09;段落标记<p> </p>&#xff08;4&#xff09;标题标记<h1>~<h6> …

Express框架下搭建GraphQL API

需要先下载apollo-server-express&#xff0c;apollo-server-express是Express框架下&#xff0c;用于构建GraphQL服务的中间件&#xff0c;属于Apollo Server的一部分&#xff1a; npm install apollo-server-express 随后在index.js添加 apollo-server-express包&#xff1…

找不到iutils.dll怎么解决,需要如何修复

iutils.dll 是一个系统级的动态链接库&#xff08;Dynamic Link Library&#xff09;文件&#xff0c;通常与Windows操作系统中的应用程序运行密切相关。动态链接库文件如同一个代码库&#xff0c;存储了多个程序可以共享的功能和指令。iutils.dll具体提供了哪些功能可能依据它…

嵌入式学习——51单片机——(UART串口通信)day18

1. 单片机中的串口通信—51单片机中串行t通信的波特率发生器由定时器1来产生—&#xff08;&#xff09; 电脑发送USB信号 单片机发送TTL信号 1.1 单片机向电脑发送信息 单片机由P3.1 TxD 向电脑发送TTL电平信号&#xff0c;TTL信号经过CH340转化为USB信号发送到电脑上 1.2 …

百度文心一言 java 支持流式输出,Springboot+ sse的demo

参考&#xff1a;GitHub - mmciel/wenxin-api-java: 百度文心一言Java库&#xff0c;支持问答和对话&#xff0c;支持流式输出和同步输出。提供SpringBoot调用样例。提供拓展能力。 1、依赖 <dependency> <groupId>com.baidu.aip</groupId> <artifactId…

【Java应用】Java提取B站视频教程详情(完整代码|下载可直接运行|自带页面|可直接复制)

提取B站视频教程详情 背景 B站这个视频列表是真的体验感太差了,有时候想把章节复制下来,再对应的章节下面做笔记,实在是太难搞了,于是就有了这篇文文章 效果图 根据关键字获取视频id public Result videoList(RequestBody VideoDto videoDto) {String keyword videoDto.get…

ArcGIS10.2能用了10.2.2不行了(解决)

前两天我们的推文介绍了 ArcGIS10.2系列许可到期解决方案-CSDN博客文章浏览阅读2次。本文手机码字&#xff0c;不排版了。 昨晚&#xff08;2021\12\17&#xff09;12点后&#xff0c;收到很多学员反馈 ArcGIS10.2系列软件突然崩溃。更有的&#xff0c;今天全单位崩溃。​提示许…

Nginx详解:高性能Web服务器与反向代理的奥秘

Nginx&#xff0c;发音为“engine-x”&#xff0c;是一个开源、高性能的HTTP和反向代理服务器&#xff0c;也是邮件代理服务器。自2004年首次发布以来&#xff0c;Nginx凭借其轻量级、高效能和高并发处理能力&#xff0c;在互联网领域迅速崛起&#xff0c;成为许多大型网站和高…

【Spark】Spark编程体验,RDD转换算子、执行算子操作(六)

Spark编程体验 项目依赖管理 <dependencies><dependency><groupId>org.scala-lang</groupId><artifactId>scala-library</artifactId><version>2.12.10</version></dependency><dependency><groupId>org.ap…

银河麒麟V10终端出现“/home/kylin/.config/caja”读写权限问题,进程杀不掉。解决办法

问题如上图所示&#xff0c;一直关不了进程&#xff0c;桌面显示不正常。 解决办法 步骤一&#xff1a;切换字符登录“ctrl alt f1切字符登录下”。&#xff08;先输用户名&#xff0c;回车输密码&#xff09; 步骤二&#xff1a;删除“caja”缓存文件&#xff08;rm -r /home/…

记一次从jenkins安装到构建出第一个jar

1.安装 官方教程见&#xff1a;https://www.jenkins.io/zh/doc/book/installing/ 可以选择docker安装相对简单。 docker环境安装见https://blog.csdn.net/taotao_guiwang/article/details/135508643 2.环境配置 见https://blog.whsir.com/post-4865.html 注意&#xff1a…

智能终端RK3568主板在智慧公交条形屏项目的应用,支持鸿蒙,支持全国产化

基于AIoT-3568A的智慧公交条形屏&#xff0c;可支持公交线路动态展示&#xff0c;语音到站提醒&#xff0c;减少过乘、漏乘的情况&#xff0c;有效提高了公交服务效率和质量&#xff0c;为乘客提供了更舒适、更安全和更方便的出行体验&#xff0c;为城市的发展增添了新的活力。…

day5

利用迭代器&#xff01; #include <vector> #include <map>class Solution { public:std::vector<int> intersection(std::vector<int>& nums1, std::vector<int>& nums2) {std::map<int, int> Mymap;std::vector<int> qq…

程序员的神奇应用:从代码创造到问题解决的魔法世界之 自动化测试工具

文章目录 自动化测试工具 在软件开发的海洋中&#xff0c;程序员的实用神器如同航海中的指南针&#xff0c;帮助他们导航、加速开发、优化代码质量&#xff0c;并最终抵达成功的彼岸。这些工具覆盖了从代码编写、版本控制到测试和部署的各个环节。 在当今数字化的世界里&#x…

windows上vcpkg install openssl失败后手动nmake编译安装openssl

最近需要移植一个跨平台项目代码到windows上&#xff0c;其中依赖curl和openssl&#xff1b; ** 1.vcpkg安装 ** 首先自然而然想到使用vckpg进行包管理&#xff0c;因为不牵扯到多项目引用&#xff0c;所以用vcpkg的经典模式进行安装&#xff1a; 项目依赖的curl版本是8.6.…

31万奖金池等你挑战!IJCAI 2024 第九届“信也科技杯”全球AI算法大赛正式开赛!聚焦AI尖端赛题!

文章目录 ⭐️ 赛事概况⭐️ 赛事奖励⭐️ 赛事日程速览⭐️ 报名通道与赛事交流群⭐️ 关于 “信也科技杯”⭐️ 关于信也科技 ⭐️ 赛事概况 随着语音合成技术的不断进步,合成语音与真实语音之间的界限变得模糊,这不仅对数据安全构成威胁,也对科技伦理提出了新的要求。 第九…

ValueError: source code string cannot contain null bytes

导入pandas报如下错误&#xff1a; 解决&#xff1a; pandas好像只支持到3.8&#xff0c;我的python是3.10&#xff0c;改成3.7就能正常使用了

【stm32-5】输入捕获模式测频率PWMI模式测频率占空比

1.输入捕获模式测频率 &#xff08;1&#xff09;main.c #include "Device/Include/stm32f10x.h" // Device header #include "pwm.h" #include "delay.h" #include "OLED.h" #include "IC.h" uint8_t i; int main(void…

idea连接远程仓库

git ->克隆。 url为远程仓库的地址&#xff0c;输入好后&#xff0c;选择项目存放目录&#xff0c;再点击克隆 点击新窗口打开。 切换到对应分支