在html中使用js动态交换两个元素的位置

大家好,我的开源项目PakePlus可以将网页/Vue/React项目打包为桌面/手机应用并且小于5M只需几分钟,官网地址:pakeplus.com

  1. DOM操作交换

使用 insertBefore 或 replaceChild 方法直接操作DOM元素

javascript 复制代码
function swapElementsDOM() {
  const container = document.getElementById('elementsContainer');
  const element1 = document.getElementById('element1');
  const element2 = document.getElementById('element2');

  if (element1.nextElementSibling === element2) {
    container.insertBefore(element2, element1);
  } else {
    container.insertBefore(element1, element2);
  }
}
  1. CSS类切换交换

通过切换CSS类来改变元素的显示顺序(使用flex-direction或order属性)

javascript 复制代码
function swapElementsCSS() {
  const container = document.getElementById('elementsContainer');
  container.classList.toggle('reversed');
}

/* CSS部分 */
.reversed {
  flex-direction: column-reverse;
}
  1. 动画交换

使用CSS过渡或动画实现平滑的位置交换效果

javascript 复制代码
function swapElementsAnimated() {
  const element1 = document.getElementById('element1');
  const element2 = document.getElementById('element2');

  // 添加动画类
  element1.classList.add('swapping');
  element2.classList.add('swapping');

  setTimeout(() => {
    // 实际交换位置
    const container = document.getElementById('elementsContainer');
    if (element1.nextElementSibling === element2) {
      container.insertBefore(element2, element1);
    } else {
      container.insertBefore(element1, element2);
    }

    // 移除动画类
    element1.classList.remove('swapping');
    element2.classList.remove('swapping');
  }, 300);
}

大家好,我是1024小神,技术群 / 私活群 / 股票群 或 交朋友 都可以私信我。 如果你觉得本文有用,一键三连 (点赞、评论、关注),就是对我最大的支持~

相关推荐
灵感__idea7 小时前
Hello 算法:贪心的世界
前端·javascript·算法
GreenTea9 小时前
一文搞懂Harness Engineering与Meta-Harness
前端·人工智能·后端
killerbasd10 小时前
牧苏苏传 我不装了 4/7
前端·javascript·vue.js
吴声子夜歌10 小时前
ES6——二进制数组详解
前端·ecmascript·es6
码事漫谈11 小时前
手把手带你部署本地模型,让你Token自由(小白专属)
前端·后端
ZC跨境爬虫11 小时前
【爬虫实战对比】Requests vs Scrapy 笔趣阁小说爬虫,从单线程到高效并发的全方位升级
前端·爬虫·scrapy·html
爱上好庆祝11 小时前
svg图片
前端·css·学习·html·css3
王夏奇11 小时前
python中的__all__ 具体用法
java·前端·python
大家的林语冰12 小时前
《前端周刊》尤大开源 Vite+ 全家桶,前端工业革命启动;尤大爆料 Void 云服务新产品,Vite 进军全栈开发;ECMA 源码映射规范......
前端·javascript·vue.js
jiayong2312 小时前
第 8 课:开始引入组合式函数
前端·javascript·学习