成人怡红院-成人怡红院视频在线观看-成人影视大全-成人影院203nnxyz-美女毛片在线看-美女免费黄

站長資訊網
最全最豐富的資訊網站

手把手教你用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;  /* padding: 20px 0; */   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;  /* margin-bottom: 20px; */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實現一個拖拽效果

結尾

此次小案例主要是讓我們了解并運用draggable屬性,及一些拖拽方法的學習,學到就是賺到,歡迎大家找我溝通交流,一起學習

推薦學習:《JavaScript視頻教程》

贊(0)
分享到: 更多 (0)
?
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
Z0ZOZ0另类Z0ZO| 久久久久亚洲AV片无码| 亚洲AV永久无码精品一福利| 看中国日B大片大片| 波多野结衣加勒比东京热| 亚洲AV 无码片一区二区三区| 久久精品国产亚洲AV麻豆图片| 亚洲AV永久无码精品表情包| 久久精品动漫一区二区三区| 在公车上拨开内裤进入毛片| 久久综合狠狠综合久久综| 一本一道AV中文字幕无码| 免费A级毛片无码免费视频首页| 成人免费看WWW网址入口| 亚洲精品无码MⅤ在线观看| 欧美多人片高潮野外做片黑人| 国产成人V在线免播放观看| 要灬要灬再深点受不了好舒服| 日韩GAY小鲜肉啪啪18禁| 精品国产不卡一区二区三区| 中文精品久久久久人妻| 无码人妻丰满熟妇区免费| 免费高清视频 大片| 国产一级 片内射30岁老熟女| AⅤ日本亚洲欧洲免费| 亚洲国产精久久久久久久蜜桃| 全免费A级毛片免费看无码| 久久精品国产清高在天天线| 俄罗斯VODAFONEWIFI| 在线观看成人片韩剧| 日韩免费一区二区三区高清| 麻豆产精国品一二三产区区| 国产午夜无码片免费| 超碰97久久国产精品牛牛| 中文字幕人妻丝袜美腿乱| 无人区码卡二卡乱码字幕| 久久精品国产亚洲AV香蕉| JAVASCRIPT的成熟分类| 亚洲日本VA午夜中文字幕一区| 少妇粗大进出白浆嘿嘿视频| 欧美人与动欧交视频| 久久亚洲色WWW成人男男| 国内精品久久久久精品爽爽| YEEZY380蜜桃粉满天| 中文字幕久久精品波多野结百度 | 美女露0裸体无档动态视频| 精品无人区卡一卡二卡三 | 欧美肉体裸交做爰XXXⅩ| 久久亚洲AV成人无码国产| 精品久久久无码中文字幕天天| 初小VIDEOS第一次摘花| 中日韩精品卡一卡二卡3卡| 亚洲色自偷自拍另类小说| 亚洲国产成人久久综合三区| 亚洲AV无码成人精品区毛片| 亚洲AV无码一区二区三区dv| 亚洲AⅤ无码牛牛影视| 亚洲AV成人一区二区三区天堂| 人妻AV鲁丝一区二区三区蜜臀| 麻豆亚洲AV永久无码精品久久| 国内精品久久影院综合日日| 日本JAPANESE护士人妻| JIZZ中国JIZZ在线观看| 99久久国产宗和精品1上映| 在线 亚洲 国产 欧美| 重囗味SM在线观看无码| WWW无人区一码二码三码区别| 啊灬啊灬啊灬高潮了视频| 东北小伙二十厘米粗大硬 | 粗大黑人巨茎大战欧美成人免费看| SEERX性欧美老妇| 国产AV激情久久无码天堂| 国产99久久久国产精品~~牛| 国产欧美精品一区二区三区四区| 好男人资源在线WWW免费 | 欧码的XL是亚洲码| 撕开奶罩揉吮奶头视频| 午夜免费无码福利视频网址| 亚洲国产AV一区二区三区丶 | 久久久久久老熟妇人妻av| 联系附近成熟妇女| 日本熟妇大屁股人妻| 亚洲AV成人午夜福利在线观看| 无码人妻丝袜视频在线播免费| 亚洲人成人一区二区在线观看| 97人妻无码一区二区精品免费| 大香伊蕉在人线国产2020年| 狠狠色丁香婷婷久久综合不卡| 精品国产一区二区三区久久| 国产真实强被迫伦姧女在线观看| 精品无码国产日韩制服丝袜| 欧美 日韩 国产 成人 在线观| 吃瓜黑料视频永久地址| 本道久久综合无码中文字幕| 黑人人妻AV一区二区三| 老师你的兔子好软水好多的图片 | 国产成人综合色在线观看网站| 娇妻被黑人杂交呻吟| 妺妺窝人体色www聚色窝欢迎 | 777成了乱人视频| 国产精品VA在线播放| 美美女高清毛片视频免费观看| 天堂√在线中文资源网| 9420高清完整版在线观看| 韩国19禁床震无遮掩免费| 女人ASS人体下部PICS| 亚洲AV秘 无码一区二黑人| 在线观看国产精选免费| 成人亚洲一区二区三区在线 | 欧美又大粗又爽又黄大片视频| 十八禁乳露裸体奶头WWW网站| 亚洲手机看片AV| 国产微拍精品一区二区| 免费观看30分钟哔哩哔哩视频| 亚洲AV成人无码网站大全| 俄罗斯卖CSGO的网站免费进入| 欧美午夜性春猛交XXX| 少女たちよ观看动漫| 中国熟妇内谢69XXXXX| 国产一区精选播放022| 女人被狂躁c到高潮视频| 亚洲乱码中文字幕综合234| 成人久久免费网站| 欧美日韩在线视频一区二区| 拔萝卜打牌不盖被子| 人扒开女人添高潮的视频嗯啊| 亚洲深深色噜噜狠狠网站| 黑人大性殖器大战欧美白妇| 人人妻人人澡人人爽欧美精品| 亚洲精品无码AV专区最新| 国产婷婷丁香五月缴情成人网| 十八禁无遮无拦视频免费| 产后漂亮奶水人妻| 欧洲无人区卡一卡二卡三| 野花香电视剧全集免费观看| 国产麻花豆剧传媒精品MV在线| 日韩人妻无码一区二区三区99| 宝宝才两根手指就疼哭了怎么回事| 久久九九精品国产AV片国产| 亚洲AV无码乱码精品国产按摩| 国产三级精品三级男人的天堂| 无码人妻一区二区免费AV| 动漫高H纯肉无码视频在线观看 | 国产女主播白浆在线看| 亚洲AV无码成人精品区欧洲 | 2021国产麻豆剧传媒网站| 久久久久久久99精品国产片| 天天做天天爱天天综合网2021| 高雅人妻被迫沦为玩物电影BD| 色悠久久久久综合网伊| 成人午夜精品久久久久久久| 少妇18p一区二区三区| 国产午夜福利内射青草| 无码人妻久久一区二区三区免费丨 | 人妻av无码一区二区| 成人欧美日韩一区二区三区| 无码AⅤ精品一区二区三区| 禁止18点击进入在线看片尤物| 亚洲中文字幕无码永久在线不卡 | 高清一区二区三区免费视频| 亚洲AⅤ精品无码一区二区嫖妓 | 中文字幕AV一区二区三区人妻少| 久久WWW成人_看片免费不卡| 影音先锋最新AV资源网站| 人妻在厨房被侮辱高清版| 国产伦精品一区二区三区免.费| 性生大片免费观看网站| 久久久精品中文字幕乱码18| 一本大道无码AV天堂| 色翁荡息又大又硬又粗又爽| 国产精品白浆无码流出视频| 一米八五插一米六可以吗| 欧美最猛黑人XXXⅩ猛男无码| 国产精品久久久久久久久电影网| 怡红院亚洲第一综合久久| 蜜桃传媒在线观看免费版7| JAVAPARSER少妇高潮| 四虎国产精品永久在线动漫| 久久精品夜色国产亚洲AV| 公玩弄年轻人妻HD| 最新 国产 精品 精品 视频| 四川绿帽人妻51分钟在线| 蜜桃AV抽搐高潮一区二区| 德国FREE性VIDEO极品| 在厨房被C到高潮A毛片奶水| 午夜精品久久久久久中宇| 欧美交性一级视频免费播放| 国产亚洲AV浪潮A∨尹人Av| 啊灬啊灬啊灬快灬深视频无遮掩| 国产午夜鲁丝片AV无码| 一区二区三区AV波多野结衣| 十八禁无码免费网站| 久久久久久老熟妇人妻av | 涩反差合集91综合一区二区清纯| 老色鬼久久亚洲AV综合| 国内老熟妇乱子伦视频| 国产成人AV无码永久免费| 厨房里我扒了岳的内裤| CHINA丰满人妻VIDEOS| 中文字幕亚洲乱码熟女1区2区|