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

news2024/9/27 21:27:42

【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.coloradmin.cn/o/688471.html

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

相关文章

RocketMQ --- 原理篇

一、专业术语 Producer 消息生产者&#xff0c;负责产生消息&#xff0c;一般由业务系统负责产生消息。 Consumer 消息消费者&#xff0c;负责消费消息&#xff0c;一般是后台系统负责异步消费。 Push Consumer Consumer 的一种&#xff0c;应用通常向 Consumer 对象注册一个…

基于JavaScript的百度AI的人脸识别微信小程序(深度学习+机器视觉)含全部工程源码及视频演示(仅供学习)

目录 前言总体设计系统整体结构图系统流程图 运行环境模块实现1. Access token 获取2. 人脸注册3. 人脸删除4. 人脸识别 系统测试工程源代码下载其它资料下载 前言 本项目采用了百度AI的训练模型&#xff0c;利用图像识别接口返回结果&#xff0c;旨在实现人脸在库中的判断&am…

制造业质量管理如何实现数字化转型?这份指南讲透了

一、什么是制造业质量管理 制造业质量管理是现代制造业非常重要的一个方面。它包括了一系列的活动和方法&#xff0c;以确保制造产品或提供服务的过程中&#xff0c;实现高质量标准的目标。 制造业质量管理包括质量规划、控制和改进等各种方法和工具&#xff0c;以确保产品或…

4.25 IO多路复用简介 4.26select API介绍 4.27 select代码编写

4.25 IO多路复用简介 IO多路复用使得程序能同时监听多个文件描述符&#xff0c;能够提高程序的性能&#xff0c;Linux下实现IO多路复用的系统调用主要有select、poll和epoll。 4.26select API介绍 主旨思想&#xff1a; 1、首先构造一个关于文件描述符的列表&#xff…

【高危】Openfire权限绕过漏洞(POC公开)

漏洞描述 Openfire是Java开发且基于XMPP&#xff08;前称Jabber&#xff0c;即时通讯协议&#xff09;的开源实时协作&#xff08;RTC&#xff09;服务器。 在受影响版本中&#xff0c;由于路径验证机制存在缺陷&#xff0c;攻击者可以通过/setup/setup-s/%u002e%u002e/%u002e…

基于Python所写的学生管理系统

点击下方链接获取源码资源&#xff1a; https://download.csdn.net/download/qq_64505944/87950397?spm1001.2014.3001.5503 《学生信息管理系统》程序使用说明 在IDLE中运行《学生信息管理系统》即可进入如图1所示的系统主界面。在该界面中可以选择要使用功能对应的菜单进行…

【编译、链接、装载十四】堆与内存管理

【编译、链接、装载十四】堆与内存管理 一、堆与内存管理1、什么是堆 二、Linux进程堆管理三、Windows进程堆管理Q&A 一、堆与内存管理 相对于栈而言&#xff0c; 堆这片内存面临一个稍微复杂的行为模式&#xff1a; 在任意时刻&#xff0c; 程序可能发出请求&#xff0c;…

请求响应相关知识点

这里写目录标题 请求响应概述 请求postman各种参数的封装以及接收简单参数原始方式springboot方式映射解决参数不匹配小结 实体参数简单的实体参数复杂的实体参数注意点 数组集合参数数组集合总结 日期参数json参数模拟发送注意点服务端注意点 路径参数各个参数总结 响应注解统…

66、基于51单片机超声波测距LCD1602显示报警系统设计(程序+原理图+PCB源文件+Proteus仿真+参考论文+开题报告+任务书+元器件清单等)

前 言 超声波具有指向性强&#xff0c;能量消耗缓慢&#xff0c;在介质中传播的距离较远&#xff0c;因而超声波经常用于距离的测量&#xff0c;如测距仪和物位测量仪等都可以通过超声波来实现。利用超声波检测往往比较迅速、方便、计算简单、易于做到实时控制&#xff0c;并且…

JDK8新特性-中部

文章目录 一、方法引用1.1 为什么要有方法引用?1.1.1 Lambda表达式冗余1.1.2 解决方案 1.2 方法引用的格式1.2 .1 对象::方法名1.2.2 类名::静态方法名1.2.3 类名::引用实例方法1.2.4 类名::构造器1.2.5 数组::构造器 二、Stream API2.1 集合处理的弊端2.2 Steam流式思想概述2…

HttpRunner抓包工具之HttpRunner介绍

HttpRunner简介&#xff1a; HttpRunner 是一款面向HTTP(S) 协议的通用测试框架&#xff0c;只需编写维护一份YAML/JSON 脚本&#xff0c;即可实现自动化测试、性能测试、线上监控、持续集成等多种测试需求。 作者李隆之前是大疆的测试开发工程师&#xff0c;项目起源于大疆内部…

关于数据分析中NumPy,Pandas,看完这一篇基本够了

前言 数据分析是Python的重要应用领域之一&#xff1a;Python在数据分析领域有着广泛的应用&#xff0c;许多数据科学家和分析师使用Python作为主要的数据分析工具。学好数据分析可以让你更好地应用Python来解决实际问题&#xff0c;并提升在数据分析领域的竞争力。 在当今信…

04 todoList案例

React全家桶 一、案例- TODO List 综合案例 功能描述 动态显示初始列表添加一个 todo删除一个 todo反选一个 todotodo 的全部数量和完成数量全选/全不选 todo删除完成的 todo 1.1 静态组件构建 将资料包中的todos_page/index.html中核心代码添加到Todo.jsx文件中&#xff0c;…

高速电路设计系列分享-ADC电源的设计

文章目录 概要整体架构流程技术名词解释技术细节小结 概要 提示&#xff1a;这里可以添加技术概要 如今&#xff0c;在设计人员面临众多电源选择的情况下&#xff0c;为高速ADC设计清洁电源时可能会面临巨大挑战。在利用高效开关电源而非传统LDO的场合&#xff0c;这尤其重要。…

liunx服务器使用selenium

文章目录 前言一、服务器下载google-chrome、chromedriver1、下载chrome2、下载chromedriver 二、安装Xvfb和python库pyvirtualdisplay、selenium1、安装Xvfb2、安装python库pyvirtualdisplay 三、配置好后测试总结 前言 最近在本地windows系统&#xff08;下面简称本地&#…

在线搭建K8S,kubernetes集群v1.23.9,docker支持的最后一个版本

1. 部署环境主机&#xff08;条件说明&#xff09; master 192.168.186.128 CentOS Linux release 7.9.2009 (Core) node1 192.168.186.129 CentOS Linux release 7.9.2009 (Core) node2 192.168.186.130 CentOS Linux release 7.9.2009 (Core)2. 系统初始化-所有节点&am…

探索MediaPipe的人像分割

MediaPipe是Google开源的计算机视觉处理框架&#xff0c;基于TensorFlow来训练模型。图像分割模块提供人像分割、头发分割、多类分割。本文主要探索如何实现人像分割&#xff0c;当然在人像分割基础上&#xff0c;我们可以做背景替换、背景模糊。 目录 一、配置参数与模型 1…

负载均衡 Load Balancing

负载均衡 Load Balancing 数据链路层负载均衡网络层负载均衡应用层负载均衡均衡策略与实现轮询与随机随机权重与加权轮询一致性 hash最少活跃数&#xff08;最少连接数&#xff09; 对于电商平台而言&#xff0c;随着业务的不断发展壮大&#xff0c;网站访问量和数据量也随之急…

什么是堆栈?c语言实现栈上的pop和push操作

什么是堆栈&#xff1f;c语言实现栈上pop和push操作的算法 堆栈&#xff08;stack&#xff09;实现栈上pop和push操作解释 堆栈&#xff08;stack&#xff09; 堆栈&#xff08;stack&#xff09;是一种数据结构&#xff0c;它具有后进先出&#xff08;Last-In-First-Out&…

抖音seo矩阵系统源码开发部署思路

抖音SEO矩阵系统源码开发和部署是一项复杂而又关键的任务。在开发阶段&#xff0c;我们需要根据抖音的搜索规则和算法&#xff0c;结合用户搜索意图和关键词&#xff0c;进行深入的研究和分析&#xff0c;以建立一个优秀的SEO矩阵系统。 在部署方面&#xff0c;我们需要遵循以…