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

网站直播怎样做app推广接单平台

网站直播怎样做,app推广接单平台,怎么搭建网页服务器,外贸网站建设方案目录 1. 效果展示 2. 效果分析 2.1 关键点 2.2 实现方法 3. 代码实现 3.1 html部分 3.2 css部分 3.3 js部分 3.4 完整代码 4. 总结 1. 效果展示 如图所示,页面左侧有一个包含不同课程(如语文、数学等)的列表,页面右侧…

目录

1. 效果展示

2. 效果分析

2.1 关键点

2.2 实现方法

3. 代码实现

3.1 html部分

3.2 css部分

3.3 js部分 

3.4 完整代码

4. 总结


1. 效果展示

如图所示,页面左侧有一个包含不同课程(如语文、数学等)的列表,页面右侧是一个表格,表示一周内每天的不同时间段。用户可以通过拖拽左侧的课程到右侧的时间表中,来安排课程。

 

2. 效果分析

目标:鼠标摁下左侧某一科目,拖拽到右侧某一位置放下,拖拽的课程就会嵌入到课表框当中

2.1 关键点

(1) 拖拽与放置逻辑的实现

(2) HTML与CSS布局的设计

2.2 实现方法

(1) 将拖拽过程分为 开始拖拽、允许放置、放置三部分分析。

(2) 页面主要由两部分组成——左侧是可拖动的课程项列表,右侧是一个表格,用于显示每周的时间安排。每个课程项都设定了 draggable = "true" 属性,使其可以被拖动。表格中的 <td> 元素(不包括第一列)是可以放置课程的目标区域。

(3) 通过 CSS 确保页面居中显示,并设置了 .box 容器的尺寸和边框。.left  和 .right 分别代表课程项列表和时间表的位置和大小。

3. 代码实现

接下来我会一步一步解说每段关键代码的含义。

3.1 html部分

  <div class="box"><div class="left"><div class="yu" draggable="true">语文</div><div class="shu" draggable="true">数学</div><div class="ying" draggable="true">英语</div><div class="wu" draggable="true">物理</div><div class="hua" draggable="true">化学</div><div class="sheng" draggable="true">生物</div></div><div class="right"><table><tr><th>时间/星期</th><th>星期一</th><th>星期二</th><th>星期三</th><th>星期四</th><th>星期五</th></tr><tr><td>08:00-09:00</td><td></td><td></td><td></td><td></td><td></td></tr><tr><td>10:00-11:00</td><td></td><td></td><td></td><td></td><td></td></tr><tr><td>11:00-12:00</td><td></td><td></td><td></td><td></td><td></td></tr><tr><td>12:00-13:00</td><td></td><td></td><td></td><td></td><td></td></tr><tr><td>14:00-15:00</td><td></td><td></td><td></td><td></td><td></td></tr><tr><td>15:00-16:00</td><td></td><td></td><td></td><td></td><td></td></tr></table></div></div>

左侧是课程列表,  该部分包含六个 <div> 元素,每个元素代表一门课程(如语文、数学等),并赋予了 draggable = "true" 属性,这意味着这些课程项可以被拖动。

右侧是时间表,提供了五个工作日(周一至周五)和六个上课时段的时间框架,使得用户可以直观地安排每周的课程。

3.2 css部分

 .left {width: 150px;display: flex;flex-direction: column;justify-content: space-between;gap: .7rem;}.left > div {width: 100%;height: 50px;border: 1px solid black;text-align: center;line-height: 50px;font-weight: bold;letter-spacing: 4px;cursor: move;}.yu { background: lawngreen; }.shu { background: skyblue; }.ying { background: mediumslateblue; }.wu { background: aqua; }.hua { background: violet; }.sheng { background: navajowhite; }.right {width: 750px;height: 400px;overflow: auto;}

css部分没什么好说的,按照自己的喜好随意编写即可。

3.3 js部分 

const draggables = document.querySelectorAll('.left > div');
const droppables = document.querySelectorAll('.right td:not(:first-child)');

 获取所有可拖动的课程项 和 所有可放置课程的时间段单元格(不包括第一列)。

draggables.forEach(draggable => {draggable.addEventListener('dragstart', e => {e.dataTransfer.setData('text/plain', e.target.className);e.dataTransfer.dropEffect = 'move';});});

拖拽开始::当用户开始拖动一个课程项时,浏览器触发 dragstart 事件。在这个事件处理函数中,我们使用 setData 方法将被拖拽元素的类名作为数据存储在 Datatransfer 对象中。同时,设置drapEffect 属性为 ‘move’,以表明这是一个移动操作。

droppables.forEach(droppable => {droppable.addEventListener('dragover', e => {e.preventDefault();e.dataTransfer.dropEffect = 'move';});
});

允许放置: 当拖拽元素经过目标单元格时,浏览器会触发 dragover 事件。默认情况下,浏览器会阻止这个事件,所以我们需要调用 preventDefault() 来允许放置。同样地,我们设置 dropEffect为 ‘move’,以便与 dragstart 中的设置相匹配。

droppable.addEventListener('drop', e => {e.preventDefault();const draggedItemClass = e.dataTransfer.getData('text/plain');const draggedItem = document.querySelector(`.${draggedItemClass}`);if (e.target.tagName === 'TD') {e.target.textContent = draggedItem.textContent;e.target.style.backgroundColor = window.getComputedStyle(draggedItem).backgroundColor;}
});

放置:当用户释放鼠标按钮,拖拽元素被放置到目标单元格时,浏览器触发 drap 事件。在这个事件处理函数中,我们获取之前存储的数据(即课程项的类名),找到对应的课程项,并将其内容和背景颜色复制到目标单元格中。

3.4 完整代码

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>拖拽实现排课</title><style>body {margin: 0;padding: 0;display: flex;justify-content: center;align-items: center;height: 100vh;background-color: #f0f0f0;}.box {width: 1000px;height: 600px;border: 1px solid red;display: flex;justify-content: space-between;align-items: center;padding: 20px;box-sizing: border-box;}.left {width: 150px;display: flex;flex-direction: column;justify-content: space-between;gap: .7rem;}.left > div {width: 100%;height: 50px;border: 1px solid black;text-align: center;line-height: 50px;font-weight: bold;letter-spacing: 4px;cursor: move;}.yu { background: lawngreen; }.shu { background: skyblue; }.ying { background: mediumslateblue; }.wu { background: aqua; }.hua { background: violet; }.sheng { background: navajowhite; }.right {width: 750px;height: 400px;overflow: auto;}table {width: 100%;border-collapse: collapse;}th, td {width: 120px;height: 50px;border: 1px solid black;text-align: center;}td {cursor: pointer;}</style>
</head>
<body><div class="box"><div class="left"><div class="yu" draggable="true">语文</div><div class="shu" draggable="true">数学</div><div class="ying" draggable="true">英语</div><div class="wu" draggable="true">物理</div><div class="hua" draggable="true">化学</div><div class="sheng" draggable="true">生物</div></div><div class="right"><table><tr><th>时间/星期</th><th>星期一</th><th>星期二</th><th>星期三</th><th>星期四</th><th>星期五</th></tr><tr><td>08:00-09:00</td><td></td><td></td><td></td><td></td><td></td></tr><tr><td>10:00-11:00</td><td></td><td></td><td></td><td></td><td></td></tr><tr><td>11:00-12:00</td><td></td><td></td><td></td><td></td><td></td></tr><tr><td>12:00-13:00</td><td></td><td></td><td></td><td></td><td></td></tr><tr><td>14:00-15:00</td><td></td><td></td><td></td><td></td><td></td></tr><tr><td>15:00-16:00</td><td></td><td></td><td></td><td></td><td></td></tr></table></div></div><script>// 获取所有可拖动的课程项const draggables = document.querySelectorAll('.left > div');// 获取所有可放置课程的时间段单元格(不包括第一列)const droppables = document.querySelectorAll('.right td:not(:first-child)');// 添加拖拽开始事件监听器draggables.forEach(draggable => {draggable.addEventListener('dragstart', e => {e.dataTransfer.setData('text/plain', e.target.className);e.dataTransfer.dropEffect = 'move';});});// 添加拖拽进入和放置事件监听器droppables.forEach(droppable => {droppable.addEventListener('dragover', e => {e.preventDefault();e.dataTransfer.dropEffect = 'move';});droppable.addEventListener('drop', e => {e.preventDefault();const draggedItemClass = e.dataTransfer.getData('text/plain');const draggedItem = document.querySelector(`.${draggedItemClass}`);if (e.target.tagName === 'TD') {e.target.textContent = draggedItem.textContent;e.target.style.backgroundColor = window.getComputedStyle(draggedItem).backgroundColor;}});});</script>
</body>
</html>

 

4. 总结

以上即是实现拖拽排课动效的全部内容。如果对您有所帮助,不妨点赞、关注+收藏,下次不迷路😀。

更多前端动效点击下方链接↓ ↓ ↓

前端动效_借来一夜星光的博客-CSDN博客

http://www.hkea.cn/news/156319/

相关文章:

  • wordpress旧版页面编辑界面百度seo推广计划类型包括
  • 网站建设茶店网网站换友链平台
  • 珠海建设工程信息网站网络营销百度百科
  • 帮别人做网站推广犯法吗关键词排名网站
  • 建设通网站是政府的么高端网站定制设计
  • 玉溪做网站的公司夸克搜索网页版
  • wordpress导航主题haowseo挂机赚钱
  • 广州做家教的网站深圳网络推广招聘
  • 锐捷网络公司排名seo技术介绍
  • 新圩做网站公司拼多多代运营一般多少钱
  • 免费网站可以做cpa?短视频营销的优势
  • b2b外贸营销型网站如何做电商赚钱
  • 建设无障碍网站seo分析报告怎么写
  • 电子商务网站开发进什么科目模板自助建站
  • 威海市住房和城乡建设局官方网站北京seo营销公司
  • 开网页卡优化关键词排名工具
  • wordpress右侧文章归档东莞公司seo优化
  • 个人网站建设需求说明书免费外链生成器
  • 湖南网站建设的公司排名网页制作网站制作
  • 公司网页网站建设 ppt模板app开发公司排行榜
  • 网站开发yuanmus联合早报 即时消息
  • 为什么只有中国人怕疫情seo 页面
  • 网站开发总结报告十大门户网站
  • 临淄信息港发布信息临沂seo建站
  • 门户网站系统介绍企业推广哪个平台好
  • 免费网站建站排行榜网站策划报告
  • 网站设计的评估最近发生的热点新闻
  • 设建网站广告投放渠道
  • 日ip5000的网站怎么做如何提高网站在搜索引擎中的排名
  • 网站描文本链接怎么做深圳互联网营销