iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >如何用js实现一个拖拽效果
  • 530
分享到

如何用js实现一个拖拽效果

2023-07-05 01:07:42 530人浏览 安东尼
摘要

这篇文章主要介绍“如何用js实现一个拖拽效果”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“如何用js实现一个拖拽效果”文章能帮助大家解决问题。.markdown-body{Word-break:br

这篇文章主要介绍“如何用js实现一个拖拽效果”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“如何用js实现一个拖拽效果”文章能帮助大家解决问题。

准备

这里我们要用到字体图标,所以我们从iconfont阿里图标库直接引入

  • 找到需要的图标,添加进项目

  • 找到图标所在的项目,点击查看链接

  • 复制地址,或者点击地址复制跳转后地址链接

如何用js实现一个拖拽效果

<link rel="stylesheet" href="https://at.alicdn.com/t/c/font_2579455_c6xlnvkj0j.CSSspm=a313x.7781069.1998910419.53&file=font_2579455_c6xlnvkj0j.css">复制代码

创建所需要结构

把我们需要结构先写出来

  • draggable:让盒子可以进行拖拽

  • style="--color:#e63e31"--color让盒子背景色根据--color显示(与下方css样式相联系)

 <div class="list">        <div class="list-item" draggable="true" style="--color:#e63e31">
           <i class="iconfont icon-shuangyuzuo constellation"></i>
           <span class="list-item-title">双鱼座</span>
       </div>
       <div class="list-item" draggable="true" style="--color:#70d265">
           <i class="iconfont icon-shuipingzuo constellation"></i>
           <span class="list-item-title">水平座</span>
       </div>
       <div class="list-item" draggable="true" style="--color:#f0e941">
           <i class="iconfont icon-mojiezuo constellation"></i>
           <span class="list-item-title">摩羯座</span>
       </div>
       <div class="list-item" draggable="true" style="--color:#da8218">
           <i class="iconfont icon-chunvzuo constellation"></i>
           <span class="list-item-title">处女座</span>
       </div>
       <div class="list-item" draggable="true" style="--color:#7ff0ec">
           <i class="iconfont icon-shizizuo constellation"></i>
           <span class="list-item-title">狮子座</span>
       </div>
   </div>复制代码

编写样式

这里直接采用flex对盒子进行排版布局

  • background-color: var(--color);var(--color)是或者自定义属性的颜色

body{
 background-color: #000;
}
.list{  width: 300px;  height: 360px;  
 margin: 100px auto 0;  display: flex;
 flex-direction: column;
 justify-content: space-around;
}
.list-item{  width: 100%;  display: flex;
 align-items: center;  padding: 0 16px;
 border-radius: 10px;  background-color: var(--color);
}
.constellation{
 line-height: 2.5em;
 font-size: 20px;  color: #fff;
}
.list-item-img{  width: 30px;  height: 30px;
}
.list-item-title{
 margin-left: 20px;  color: #fff;
}// 移动动画class.list-item.moving{
background-color: transparent;border: 2px dashed #ccc;
}复制代码

如何用js实现一个拖拽效果

js编写拖拽效果

首先获取需要用到的元素

// 获取整个listconst list = document.querySelector('.list')// 获取每一个盒子const item = document.querySelectorAll('.list-item')复制代码

开始拖动的时候需要加上移动的类,并且设置移动效果

// 开始拖动
   list.ondragstart = e => {
       source_node = e.target
       recode(item)        setTimeout(() => {        // 拖拽时样式
           e.target.classList.add('moving')
       }, 0)        // 设置拖动效果
       e.dataTransfer.effectAllowed = 'move'
   }复制代码

拖拽中需要判断是从上往下还是从下往上,根据拖拽元素和放入元素的索引进行比对,从而对拖拽元素进行插入节点操作

注意:码上掘金从上往下的时候会出现bug,在浏览器不会,我个人觉得应该是是码上掘金的问题

 // 拖拽放入有效目标触发
   list.ondragenter = e => {
       e.preventDefault()        console.log(e.target.id, list)        if (e.target === list || e.target === source_node) {            return false
       }        const childer = Array.from(list.children)        const sourceIndex = childer.indexOf(source_node)        const targetIndex = childer.indexOf(e.target)        // console.log(sourceIndex, targetIndex)
       if (sourceIndex < targetIndex) {            // 从下往上拖动
           list.insertBefore(source_node, e.target.nextElementSibling)
       } else {            // 从上往下拖动
               list.insertBefore(source_node, e.target)
       }        // 动画效果函数
       last([e.target, source_node])
   }复制代码

拖拽结束后把拖拽时的样式移除

// 拖放结束
   list.ondragend = e => {
       e.target.classList.remove('moving')
   }复制代码

解释方法

这里有好多没有用过或者比较少用的方法,这里给大家解释一下

  • ondragstart:当用户开始拖动一个元素或文本选择时,会触发dragstart事件

  • ondragover:当元素或文本选择被拖到有效的拖放目标上时(每几百毫秒一次),就会触发拖放事件

  • ondragenter:当被拖动的元素或文本选择进入有效的拖放目标时,会触发dragenter事件

  • ondragend: 当拖放操作结束时(通过释放鼠标按钮或点击escape键)触发dragend事件。

  • e.dataTransfer.effectAllowed:用于设置拖放时的效果,常用参数有(move,link,copy)

  • getBoundingClientRect:返回元素对于视口的信息

  • requestAnimationFrame:重绘动画

  • cancelAnimationFrame:用于取消requestAnimationFrame调用请求

关于“如何用js实现一个拖拽效果”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注编程网精选频道,小编每天都会为大家更新不同的知识点。

--结束END--

本文标题: 如何用js实现一个拖拽效果

本文链接: https://www.lsjlt.com/news/348792.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何用js实现一个拖拽效果
    这篇文章主要介绍“如何用js实现一个拖拽效果”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“如何用js实现一个拖拽效果”文章能帮助大家解决问题。.markdown-body{word-break:br...
    99+
    2023-07-05
  • 手把手教你用js实现一个拖拽效果
    .markdown-body{word-break:break-word;line-height:1.75;font-weight:400;font-size:15px;overflow-x:hidden;color:#333}.markd...
    99+
    2023-05-14
    拖拽 javascript
  • 如何使用JavaScript实现一个拖拽缩放效果
    这篇文章主要介绍“如何使用JavaScript实现一个拖拽缩放效果”,在日常操作中,相信很多人在如何使用JavaScript实现一个拖拽缩放效果问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何使用JavaS...
    99+
    2023-06-30
  • 原生JS如何实现圆环拖拽效果
    这篇文章给大家分享的是有关原生JS如何实现圆环拖拽效果的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。最近用原生JS写一个环形的鼠标滑动效果,代码如下:<!DOCTYPE&n...
    99+
    2024-04-02
  • js如何实现模态框的拖拽效果
    今天小编给大家分享一下js如何实现模态框的拖拽效果的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。分析思路:点击弹出层,模态框...
    99+
    2023-07-02
  • 如何使用原生js实现可拖拽效果
    这篇文章主要介绍如何使用原生js实现可拖拽效果,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!效果图:代码如下:<!DOCTYPE html> <html&...
    99+
    2024-04-02
  • 使用JavaScript实现一个拖拽缩放效果
    目录前言基本思路拖拽实现缩放实现最后前言 在写一个简单的H5页面时,需要实现如下的一个拖拽效果,找了半天未能找到符合要求的,含泪手写先来看一下我们要是实现一个怎样的效果 基本思路 ...
    99+
    2024-04-02
  • js实现简单的拖拽效果
    本文实例为大家分享了js实现简单的拖拽效果的具体代码,供大家参考,具体内容如下 1.拖拽的基本效果 思路: 鼠标在盒子上按下时,准备移动 (事件加给物体) 鼠标移动时,盒子跟随鼠标移...
    99+
    2024-04-02
  • js如何实现登录框鼠标拖拽效果
    小编给大家分享一下js如何实现登录框鼠标拖拽效果,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!效果图:代码如下:<!DOC...
    99+
    2024-04-02
  • JS如何实现模态框拖拽动态效果
    本篇内容主要讲解“JS如何实现模态框拖拽动态效果”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“JS如何实现模态框拖拽动态效果”吧!在实现这个案例效果首先我们了解几个属性,offsetLeft.o...
    99+
    2023-07-02
  • js拖拽效果的原理及实现
    拖拽功能主要是用在让用户做一些自定义的动作,比如拖动排序,弹出框拖动移动等等 拖拽的流程动作 1、鼠标按下 会触发onmousedown事件 2、鼠标移动 会触发onmousemov...
    99+
    2024-04-02
  • js实现模态框的拖拽效果
    本文实例为大家分享了js实现模态框拖拽效果的具体代码,供大家参考,具体内容如下 之前学习js遇到了这样的需求:鼠标按下后,移动鼠标,模态框随鼠标移动,鼠标松开,模态框也不会随鼠标移动...
    99+
    2024-04-02
  • 如何使用JavaScript实现拖拽效果
    这篇文章主要介绍如何使用JavaScript实现拖拽效果,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!拖拽在前端开发中是很常见的功能,也是基本功之一,本文是不限制范围的拖拽也就是最简...
    99+
    2024-04-02
  • JS实现模态框拖拽动态效果
    本文实例为大家分享了JS实现模态框拖拽的具体代码,供大家参考,具体内容如下 在实现这个案例效果首先我们了解几个属性,offsetLeft.offsetTop,e.pageX,e.pa...
    99+
    2024-04-02
  • Android RecycleView如何实现Item拖拽效果
    这篇文章将为大家详细讲解有关Android RecycleView如何实现Item拖拽效果,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。基于公司产品的优化需求,其中一个需求涉及到R...
    99+
    2023-06-26
  • 拖拽插件sortable.js如何实现el-table表格拖拽效果
    这篇文章将为大家详细讲解有关拖拽插件sortable.js如何实现el-table表格拖拽效果,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。问题描述Sortable.js是一款优秀的js拖拽库,因为是原生...
    99+
    2023-06-29
  • AndroidRecycleView实现Item拖拽效果
    基于公司产品的优化需求,其中一个需求涉及到RecycleView的拖拽,以及拖拽后item位置的持久化,目的是可以用户自定义界面偏好,并在用户下次进入本界面后,之前设置的偏好仍然有效...
    99+
    2024-04-02
  • js如何实现拖拽功能
    这篇文章主要为大家展示了“js如何实现拖拽功能”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“js如何实现拖拽功能”这篇文章吧。效果图:(红色方块可任意拖动)代码...
    99+
    2024-04-02
  • JavaScript如何实现九宫格拖拽效果
    这篇文章主要介绍“JavaScript如何实现九宫格拖拽效果”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“JavaScript如何实现九宫格拖拽效果”文章能帮助大家解决问题。代码如下:<!DO...
    99+
    2023-07-02
  • JavaScript实现拖拽简单效果
    本文实例为大家分享了JavaScript实现拖拽效果的具体代码,供大家参考,具体内容如下 1.1 拖拽的基本效果 思路: 鼠标在盒子上按下时,准备移动 (事件加给物体) 鼠标移动时,...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作