无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 1573|回复: 20
打印 上一主题 下一主题

为了证明我 不是大大说的玻璃心 再发一个 呵呵!

[复制链接]
跳转到指定楼层
1#
发表于 2025-8-8 14:01:03 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式
本帖最后由 879792799 于 2025-8-8 14:22 编辑

本文代码大部分参考https://zhuanlan.zhihu.com/p/698006468?_refluxos=a10 -----有点问题就是手机上无法用我已修改
也参考这篇https://juejin.cn/post/7351691676917170187   





第11行 zoom:50%; 自己调整缩放大小!
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4.     <meta charset="UTF-8">
  5.     <meta http-equiv="X-UA-Compatible" content="IE=edge">
  6.     <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7.     <title>拖拽实现排课</title>
  8.     <style>
  9.         body {
  10.                
  11.             zoom:50%;
  12.             margin: 0;
  13.             padding: 0;
  14.             display: flex;
  15.             justify-content: center;
  16.             align-items: center;
  17.             height: 100vh;
  18.             background-color: #f0f0f0;
  19.         }
  20.                
  21.         .box {
  22.             width: 1000px;
  23.             height: 600px;
  24.             display: flex;
  25.             padding: 5px;
  26.             box-sizing: border-box;
  27.         }
  28.                
  29.         .left {
  30.                     margin: 0;
  31.             padding: 0;
  32.             width: 620px;
  33.             display: flex;
  34.                         box-sizing: border-box;
  35.                         font-size: 29px;
  36.                         
  37.         }
  38.                
  39.       
  40.                
  41.         .yu { background: #999999;
  42.     width: 180px; height: 70px; line-height: 70px;
  43.     padding: 2px;
  44.     text-align: center;
  45.     overflow: hidden;
  46.     text-overflow: ellipsis;
  47.     white-space: nowrap;
  48.      margin: 10px;
  49. }

  50.         .yi { background: #FC6B66;
  51.     width: 180px; height: 70px; line-height: 70px;
  52.     padding: 2px;
  53.     text-align: center;
  54.     overflow: hidden;
  55.     text-overflow: ellipsis;
  56.     white-space: nowrap;
  57.      margin: 10px;
  58. }


  59.   .wuu { background: #09496C;
  60.     width: 180px; height: 70px; line-height: 70px;
  61.     padding: 2px;
  62.     text-align: center;
  63.     overflow: hidden;
  64.     text-overflow: ellipsis;
  65.     white-space: nowrap;
  66.      margin: 10px;
  67. }

  68.         .shu { background: skyblue; width: 180px; height: 70px; line-height: 70px;
  69.     padding: 2px;
  70.     text-align: center;
  71.     overflow: hidden;
  72.     text-overflow: ellipsis;
  73.     white-space: nowrap;
  74.       margin: 10px;
  75.     }
  76.         .ying { background: mediumslateblue;width: 180px; height: 70px;line-height: 70px;
  77.     padding: 2px;
  78.     text-align: center;
  79.     overflow: hidden;
  80.     text-overflow: ellipsis;
  81.     white-space: nowrap;  margin: 10px;
  82.     }
  83.         .wu { background: aqua; width: 180px; height: 70px; line-height: 70px;
  84.     padding: 2px;
  85.     text-align: center;
  86.     overflow: hidden;
  87.     text-overflow: ellipsis;
  88.     white-space: nowrap;  margin: 10px;
  89.     }
  90.         .hua { background: violet; width: 180px; height: 70px; line-height: 70px;
  91.     padding: 2px;
  92.     text-align: center;
  93.     overflow: hidden;
  94.     text-overflow: ellipsis;
  95.     white-space: nowrap; margin: 10px;
  96.     }
  97.         .sheng { background: navajowhite; width: 180px; height: 70px; line-height: 70px;
  98.     padding: 2px;
  99.     text-align: center;
  100.     overflow: hidden;
  101.     text-overflow: ellipsis;
  102.     white-space: nowrap; margin: 10px;
  103.     }

  104.      
  105.         
  106.         .right { background: rgb(238, 238, 238); padding: 0px; height: fit-content; font-size: 25px;}

  107. .info { display: flex; justify-content: center; }


  108. table { font-family: monospace; table-layout: fixed;  margin-bottom: 20px; }
  109. table.colorless .item { background: unset; color: unset; }



  110. td, th { border: 1px solid rgb(153, 153, 153); height: 60px; line-height: 60px; padding: 2px; text-align: center; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

  111. th { font-weight: normal; background: rgb(204, 204, 204); }

  112. td[data-drop="copy"] { width: 80px; }

  113. thead th.editable { width: 176px; height: 60px; }

  114. thead th.controlable.editable { width: 80px; height: 60px; }

  115. tbody th.controlable.editable { width: 44px; height: auto; }

  116. tbody td.controlable.editable { width: 124px; height: 60px; }

  117. tbody td.editable { width: auto; height: 60px; }

  118. body td { width: 80px; height: 60px; position: relative; }
  119.     </style>
  120. </head>
  121. <body>

  122.     <div class="box">
  123.         

  124.         <div class="right">
  125. <div class="content" id="content">
  126.   <div class="left">
  127.         <div class="yu" draggable="true">语文</div>
  128.         <div class="shu" draggable="true">数学</div>
  129.         <div class="ying" draggable="true">英语</div>
  130.         <div class="wu" draggable="true">物理</div>
  131.         
  132.   </div>
  133.   <div class="left">
  134.   <div class="hua" draggable="true">化学</div>
  135.   <div class="sheng" draggable="true">地理</div>
  136.   <div class="yi" draggable="true">音乐</div>
  137.   <div class="wuu" draggable="true">武术</div>
  138.   </div>

  139.   <div class="info"><h1 class="editable">离线本地存储-可拖拽小学课表</h1>  </div>

  140.   <table>
  141.     <colgroup>
  142.       <col>
  143.       <col>
  144.       <col>
  145.       <col>
  146.       <col>
  147.       <col>
  148.       <col>
  149.       <col>
  150.     </colgroup>
  151.     <thead>
  152.       <tr>
  153.         <th class="editable" colspan="2">时间</th>
  154.         <th class="controlable editable">星期一</th>
  155.         <th class="controlable editable">星期二</th>
  156.         <th class="controlable editable">星期三</th>
  157.         <th class="controlable editable">星期四</th>
  158.         <th class="controlable editable">星期五</th>
  159.       
  160.       </tr>
  161.     </thead>
  162.     <tbody>
  163.       <tr>
  164.         <th class="controlable editable" rowspan="6">上午</th>
  165.         <td class="controlable editable">08:00-08:30</td>
  166.         <td class="editable" colspan="5" data-controlable="split">早读</td>
  167.       </tr>
  168.       <tr>
  169.         <td class="controlable editable">08:35-9:20</td>
  170.         <td data-drop="copy" data-controlable="merge"></td>
  171.         <td data-drop="copy"></td>
  172.         <td data-drop="copy"></td>
  173.         <td data-drop="copy"></td>
  174.         <td data-drop="copy"></td>
  175.       
  176.       </tr>
  177.       <tr>
  178.         <td class="controlable editable">9:30-10:15</td>
  179.         <td data-drop="copy" data-controlable="merge"></td>
  180.         <td data-drop="copy"></td>
  181.         <td data-drop="copy"></td>
  182.         <td data-drop="copy"></td>
  183.         <td data-drop="copy"></td>
  184.   
  185.       </tr>
  186.       <tr>
  187.         <td class="controlable editable">10:15-10:40</td>
  188.         <td class="editable" colspan="5" data-controlable="split">课间操</td>
  189.       </tr>
  190.       <tr>
  191.         <td class="controlable editable">10:40-11:25</td>
  192.         <td data-drop="copy" data-controlable="merge"></td>
  193.         <td data-drop="copy"></td>
  194.         <td data-drop="copy"></td>
  195.         <td data-drop="copy"></td>
  196.         <td data-drop="copy"></td>
  197.       
  198.       </tr>
  199.       <tr>
  200.         <td class="controlable editable">11:35-12:20</td>
  201.         <td data-drop="copy" data-controlable="merge"></td>
  202.         <td data-drop="copy"></td>
  203.         <td data-drop="copy" class=""></td>
  204.         <td data-drop="copy" class=""></td>
  205.         <td data-drop="copy" class=""></td>
  206.       
  207.       </tr>
  208.       <tr>
  209.         <th class="controlable editable" rowspan="1">中午</th>
  210.         <td class="controlable editable">12:20-15:30</td>
  211.         <td class="editable" colspan="5" data-controlable="split">午休</td>
  212.       </tr>
  213.       <tr>
  214.         <th class="controlable editable" rowspan="5">下午</th>
  215.         <td class="controlable editable">15:35-16:20</td>
  216.         <td data-drop="copy" data-controlable="merge" class=""></td>
  217.         <td data-drop="copy" class=""></td>
  218.         <td data-drop="copy" class=""></td>
  219.         <td data-drop="copy" class=""></td>
  220.         <td data-drop="copy" class=""></td>
  221.    
  222.       </tr>
  223.       <tr>
  224.         <td class="controlable editable">16:30-17:15</td>
  225.         <td data-drop="copy" data-controlable="merge"></td>
  226.         <td data-drop="copy" class=""></td>
  227.         <td data-drop="copy" class=""></td>
  228.         <td data-drop="copy" class=""></td>
  229.         <td data-drop="copy" class=""></td>
  230.       
  231.       </tr>
  232.       <tr>
  233.         <td class="controlable editable">17:15-17:30</td>
  234.         <td class="editable" colspan="5" data-controlable="split">眼保健操</td>
  235.       </tr>
  236.       <tr>
  237.         <td class="controlable editable">17:30-18:15</td>
  238.         <td data-drop="copy" data-controlable="merge"></td>
  239.         <td data-drop="copy"></td>
  240.         <td data-drop="copy"></td>
  241.         <td data-drop="copy"></td>
  242.         <td data-drop="copy"></td>

  243.       </tr>
  244.       <tr>
  245.         <td class="controlable editable">18:25-19:10</td>
  246.         <td data-drop="copy" data-controlable="merge"></td>
  247.         <td data-drop="copy"></td>
  248.         <td data-drop="copy"></td>
  249.         <td data-drop="copy"></td>
  250.         <td data-drop="copy"></td>

  251.       </tr>
  252.       
  253.     </tbody>
  254.   </table>

  255.                
  256.         
  257.     </div>
  258.                 </div>
  259.           </div>
  260.     <script>
  261.    
  262.           document.addEventListener('DOMContentLoaded', function () {

  263.   //定义数组
  264. //  if (this.localStorage.getItem('contentHTML')) {
  265.    
  266. //alert('数据已从 localStorage 加载成功');
  267.   //}

  268. loadpoition() ;
  269.          

  270.        // 获取所有可拖动的课程项
  271.         const draggables = document.querySelectorAll('.left > div');
  272.         // 获取所有可放置课程的时间段单元格(不包括第一列)
  273.         const droppables = document.querySelectorAll('.right td:not(:first-child)');

  274.         // 添加拖拽开始事件监听器
  275.         draggables.forEach(draggable => {
  276.             draggable.addEventListener('dragstart', e => {
  277.                 e.dataTransfer.setData('text/plain', e.target.className);
  278.                 e.dataTransfer.dropEffect = 'move';
  279.             });
  280.         });

  281.         // 添加拖拽进入和放置事件监听器
  282.         droppables.forEach(droppable => {
  283.             droppable.addEventListener('dragover', e => {
  284.                 e.preventDefault();
  285.                 e.dataTransfer.dropEffect = 'move';
  286.             });

  287.             droppable.addEventListener('drop', e => {
  288.                 e.preventDefault();
  289.                 const draggedItemClass = e.dataTransfer.getData('text/plain');
  290.                 const draggedItem = document.querySelector(`.${draggedItemClass}`);

  291.                 if (e.target.tagName === 'TD') {
  292.                     e.target.textContent = draggedItem.textContent;
  293.                     e.target.style.backgroundColor = window.getComputedStyle(draggedItem).backgroundColor;
  294.                 }
  295.                
  296.                 archive()         
  297.             });
  298.         });





  299.           });
  300.          
  301. // 读档
  302. function loadpoition() {
  303.   const contentHTML = localStorage.getItem('contentHTML');

  304.   let contentLoaded = false;

  305.   if (contentHTML) {
  306.     const contentElement = document.querySelector('.right');
  307.     if (contentElement) {
  308.       contentElement.outerHTML = contentHTML;
  309.       contentLoaded = true; // 标记content元素已加载
  310.     } else {
  311.       console.warn('页面上未找到类名为 "content" 的元素。');
  312.     }
  313.   }

  314.   // 检查两个元素是否都已成功加载
  315.   if (contentLoaded) {
  316.   //  alert('数据已从 localStorage 加载成功');
  317.   
  318.   }
  319. }
  320.             // 存档
  321. function archive() {
  322.   const contentElement = document.querySelector('.right');

  323.   if (contentElement) {
  324.     const contentHTML = contentElement.outerHTML;
  325.     localStorage.setItem('contentHTML', contentHTML);
  326.   }
  327. // alert('数据已保存到 localStorage');
  328. }
  329.    
  330.    
  331.   
  332.         
  333.         
  334.     </script>
  335. </body>
  336. </html>
复制代码



点评

本人菜鸟不保证能用 抛砖引玉 希望大大改进!  发表于 2025-8-8 14:04
19#
发表于 昨天 03:54 | 只看该作者
可加个按钮,一键复位,还原到拖动前的状态。

评分

参与人数 1无忧币 +5 收起 理由
879792799 + 5 ok 这个可以有 到时一起加上!

查看全部评分

回复

使用道具 举报

18#
 楼主| 发表于 前天 22:43 | 只看该作者
准备加个遮罩层来提示当天课程  更加直观!!请关注最近要更新一下!
回复

使用道具 举报

17#
发表于 7 天前 | 只看该作者
我是爱钻 牛角尖 的执着人!

评分

参与人数 1无忧币 +2 收起 理由
879792799 + 2 赞一个!

查看全部评分

回复

使用道具 举报

16#
发表于 2025-8-10 08:26:10 | 只看该作者
还 特意搜了下 楼主的帖子

感觉 是一个喜欢 钻研 很有想法的人   给你顶

评分

参与人数 1无忧币 +5 收起 理由
879792799 + 5 谢谢大大的眼光!

查看全部评分

回复

使用道具 举报

15#
发表于 2025-8-9 13:53:16 | 只看该作者
楼主的想法 可以呀 想法很奇特 有点意思  

点评

呵呵 兴趣使然!  发表于 2025-8-10 19:59
回复

使用道具 举报

14#
发表于 2025-8-9 08:43:48 | 只看该作者
感谢分享
回复

使用道具 举报

13#
发表于 2025-8-9 08:11:40 | 只看该作者
有课代表没有?
回复

使用道具 举报

12#
发表于 2025-8-9 07:41:54 | 只看该作者
谢谢楼主分享
回复

使用道具 举报

11#
发表于 2025-8-9 06:01:28 | 只看该作者
谢谢分享
回复

使用道具 举报

10#
发表于 2025-8-8 20:40:28 | 只看该作者
版主不是玻璃心 是爱钻牛角尖的执着好男儿!

评分

参与人数 1无忧币 +5 收起 理由
879792799 + 5 感谢 感谢!!

查看全部评分

回复

使用道具 举报

9#
发表于 2025-8-8 20:19:33 | 只看该作者
有点东西的
回复

使用道具 举报

8#
发表于 2025-8-8 17:56:02 | 只看该作者
感觉挺方便的
回复

使用道具 举报

7#
发表于 2025-8-8 15:17:00 | 只看该作者
谢谢分享
回复

使用道具 举报

6#
发表于 2025-8-8 15:10:51 | 只看该作者
这真是有点东西的
回复

使用道具 举报

5#
发表于 2025-8-8 14:49:07 | 只看该作者
感谢分享
回复

使用道具 举报

4#
发表于 2025-8-8 14:25:34 | 只看该作者
感謝大大辛苦分享!感恩!^^
回复

使用道具 举报

3#
发表于 2025-8-8 14:24:30 | 只看该作者
做的不错 支持了
回复

使用道具 举报

2#
 楼主| 发表于 2025-8-8 14:02:26 | 只看该作者
备用
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2025-8-18 00:07

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表