【ChatGpt】解决视频框交换中的平滑过渡的问题

【ChatGpt】解决视频框交换中的平滑过渡的问题

    • 问题
    • 抽象
      • chatgpt 看看直接给参考代码
    • 解决
    • 效果

问题

在视频的播放中,我们想调换下容器的位置 ,在互调的过程中,如果需要重新进行数据的初始化,获取与加载,就会很慢,效果不好。在这里插入图片描述

没有整改前的拖曳,有严重的加载缓慢,不丝滑

抽象

这个问题,直接抽象一下,就是一个div与另一个div交换,而不影响里面具体内容的播放。

chatgpt 看看直接给参考代码

在这里插入图片描述
代码肯定明显会有一定的问题,但大体逻辑是对的

<div class="container"><div class="box" draggable="true"></div><div class="box" draggable="true"></div>
</div>
.container {display: flex;justify-content: center;
}.box {width: 100px;height: 100px;background-color: red;margin: 10px;
}
const boxes = document.querySelectorAll('.box');
let dragBox = null;boxes.forEach(box => {box.addEventListener('dragstart', () => {dragBox = box;});box.addEventListener('dragover', e => {e.preventDefault();});box.addEventListener('drop', () => {if (dragBox !== box) {const dragBoxIndex = Array.from(boxes).indexOf(dragBox);const boxIndex = Array.from(boxes).indexOf(box);if (dragBoxIndex < boxIndex) {box.parentNode.insertBefore(dragBox, box.nextSibling);} else {box.parentNode.insertBefore(dragBox, box);}}});
});```

代码解释:

获取所有的box元素,并为每个元素添加拖拽事件监听。
当拖拽开始时,将当前拖拽的box元素保存到dragBox变量中。
当box元素拖拽到其他元素上时,阻止默认行为。
当box元素被拖放时,如果当前拖拽的box元素不等于目标元素,则交换两个box元素的位置。使用insertBefore方法将dragBox插入到box元素前或后,具体位置根据它们在容器中的位置决定。

我们读懂后,整改下```html
<!DOCTYPE html>
<html>
<head><title>drag room</title>
</head>
<body>
<div class="container"><div class="box" draggable="true">111</div><div class="box" draggable="true">2222</div><div class="box" draggable="true">3333</div>
</div><script>const boxes = document.querySelectorAll('.box');
let dragBox = null;boxes.forEach(box => {box.addEventListener('dragstart', () => {dragBox = box;});box.addEventListener('dragover', e => {e.preventDefault();});box.addEventListener('drop', () => {if (dragBox !== box) {const dragBoxIndex = Array.from(boxes).indexOf(dragBox);console.log("dragboxindex is :" , dragBoxIndex);const boxIndex = Array.from(boxes).indexOf(box);console.log("boxIndex is :" , boxIndex);var dragBoxNext= dragBox.nextSibling;var boxNext = box.nextSibling;box.parentNode.insertBefore(dragBox, boxNext);box.parentNode.insertBefore(box, dragBoxNext);//    if (dragBoxIndex < boxIndex) {//      box.parentNode.insertBefore(dragBox, box.nextSibling);//   } else {//     box.parentNode.insertBefore(dragBox, box);//   }}});
});</script><style>.container {display: flex;justify-content: center;
}.box {width: 100px;height: 100px;background-color: red;margin: 10px;
}</style>
</body>
</html>

效果

解决

  const dragItem = document.getElementById("playBox" + dragIndex) as HTMLElement;const targetItem = document.getElementById("playBox" + index) as HTMLElement;const dragBoxNext= dragItem.nextSibling;var boxNext = targetItem.nextSibling;if(targetItem.parentNode){targetItem.parentNode.insertBefore(dragItem, boxNext);targetItem.parentNode.insertBefore(targetItem, dragBoxNext);}

业务代码变更

效果

完成改装后的拖曳

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

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

相关文章

Java 多线程

java多线程 第一种方法&#xff1a; 1.自定义线程类继承Thread类 2.重写run()方法 3.创建线程对象&#xff0c;调用start()方法启动线程 第二种方法&#xff1a; 1.实现Runnable()接口 2.重写run()方法 3.创建线程对象&#xff0c;调用start()启动线程

机器学习李宏毅学习笔记34

文章目录 前言一、Knowledge distillation二、Parameter quantization三、Architecture design四、Dynamic computation总结 前言 神经网络压缩&#xff08;二&#xff09;其他方法 一、Knowledge distillation 先train一个大的network叫做teacher network&#xff0c;小的ne…

selenium-wire简介

目录 前言&#xff1a; 一.简介 二.用法 1.安装selenium-wire库 2.获取请求信息 3.获取响应信息 4.实例 前言&#xff1a; Selenium Wire 是一个 Python 库&#xff0c;它扩展了 Selenium WebDriver 的功能&#xff0c;使其能够轻松地拦截、修改和检查浏览器与服务器之…

【Vue3】学习笔记-watch函数

与Vue2.x中watch配置功能一致 两个小“坑”&#xff1a; 监视reactive定义的响应式数据时&#xff1a;oldValue无法正确获取、强制开启了深度监视&#xff08;deep配置失效&#xff09;。监视reactive定义的响应式数据中某个属性时&#xff1a;deep配置有效。 <template&…

再述时序约束

再述时序约束 一、为什么要加时序约束&#xff1f;二、时序分析是什么&#xff1f;三、时序分析的一些基本概念三、 时序分析的一些基本公式 一、为什么要加时序约束&#xff1f; 一次笔者在调试HDMI输出彩条&#xff0c;出现彩条时有时无现象&#xff0c;笔者视频输出芯片的驱…

MATLAB 之 非线性方程数值求解、最优化问题求解和常微分方程初值问题的数值求解

这里写目录标题 一、非线性方程数值求解1. 单变量非线性方程求解2. 非线性方程组的求解 二、最优化问题求解1. 无约束最优化问题求解2. 有约束最优化问题求解3. 线性规划问题求解 三、常微分方程初值问题的数值求解1. 龙格—库塔法简介2. 龙格—库塔法的实现 一、非线性方程数值…

React hooks文档笔记(四) useRef

useRef 当想让组件记住一些信息&#xff0c;又不想触发新的渲染&#xff0c;可以使用ref&#xff1a;总是返回同一个对象。 1. state 和 refs 的比较 refs&#xff08;普通的 JavaScript 对象&#xff09; state 更改时不触发重新渲染 更改时触发重新渲染 可变的——修改/…

华为OD机试真题 Python 实现【核酸检测人员安排】【2023Q1 100分】,附详细解题思路

目录 一、题目描述二、输入描述三、输出描述四、补充说明五、Python算法源码六、效果展示1、输入2、输出 一、题目描述 在系统、网络均正常的情况下组织核酸采样员和志愿者对人群进行核酸检测筛查。 每名采样员的效率不同&#xff0c;采样效率为N人/小时。 由于外界变化&…

记录一次oracle报错IMP-00058: 遇到 ORACLE 错误 904 ORA-00904: “xxx“: 标识符无效

错误原因&#xff1a;导入的表中缺少DATASRC字段 解决方法&#xff1a;在要导入的表中加上DATASRC字段

TCP协议的十大核心特性总结(全面)

目录 一.TCP本身特性 二.报文格式 TCP十大核心特性 一.确认应答 二.超时重传 三.连接管理(三次握手,四次挥手) 三次握手 四次挥手 四.滑动窗口 情况一:接收方的ACK丢失 情况二:发送方的数据包丢失 五.流量控制 六.拥塞控制 七.延迟应答 八.捎带应答 九.粘包问题 …

k8s安装环境准备:Virtualbox安装CentOS;复制多个CentOS虚拟机

1.安装virtualbox 下载virtualbox https://www.virtualbox.org/wiki/Downloads 安装&#xff08;windows&#xff09; 双击VirtualBox-7.0.8-156879-Win.exe 选择安装目录 安装完成后&#xff0c;打开virtualbox 2.下载CentOS 下载CentOS-7-x86_64-DVD-2009.iso http://isoredi…

Redis的持久化机制(2)

AOF 以独立日志的方式记录每次写命令&#xff08;读操作不记录&#xff09;&#xff0c;重启时再重新执行AOF文件中的命令来恢复数据。AOF会先把命令追加在AOF缓冲区&#xff0c;然后根据对应策略写入硬盘&#xff08;appendfsync&#xff09;&#xff0c;它只许追加文件但不可…