成人怡红院-成人怡红院视频在线观看-成人影视大全-成人影院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號
综合欧美亚洲日本一区| 亚洲熟悉妇女XXX妇女AV| 午夜精品一区二区三区在线视| 无人区码卡二卡乱码中国字幕| 性色AV免费网站| 亚洲欧美高清一区二区三区| 在厨房我撕开岳的丁字裤| 99精品国产福利在线观看| GAY亚洲男男GV在线观看网站| 成人观看免费毛片爽| 国产精品色内内在线播放| 好紧好爽太大了视频| 久久丫免费无码一区二区| 欧美成人精品欧美一级乱黄| 日韩无码蜜桃视频| 性色AⅤ无码久久久久久精品| 亚洲日韩国产精品第一页一区| 中文字日产幕码三区做法| 被三个男人躁一夜好爽小说| 国产精品V无码A片在线看| 护士扒下内裤让我爽一夜| 麻豆AV一区二区三区| 人人妻人人澡人人爽超污| 五级黄高潮片90分钟视频| 亚洲熟妇无码八AⅤ在线播放| 2021网站无需下载急急急| 丰满人妻熟妇乱又伦精品| 国语第一次处破女| 男女裸体下面进入的免费视频| 色诱视频在线观看| 亚洲精品无码久久久久AV老牛 | 欧美精品成人A在线观看| 少妇与亲子伦系列小说| 亚洲人成自拍网站在线观看| H无遮挡H无码黄3D漫画| 国产麻花豆剧传媒精品MV在线| 久久天天躁夜夜躁狠狠| 日韩GAY小鲜肉啪啪18禁| 亚洲A成人片在线播放| 77777亚洲午夜久久多人| 国产精品乱码高清在线观看| 老师粉嫩小泬喷水视频90| 色噜噜狠狠色综合久色AⅤ网黑 | 91人妻中文字幕在线精品| 国产寡妇XXXX猛交| 免费免APP看大片视频播放器| 婷婷色婷婷开心五月| 一炕四女被窝交换| 国产成人免费A在线视频| 久久午夜夜伦鲁鲁片免费无码| 少妇被躁爽到高潮无码| 一区二区AV在线| 国产丰满麻豆VIDEOSSEX| 毛片亚洲AV无码精品国产午夜| 熟悉妇人妻av无码毛片| 尤物爆乳AV导航| 国产精品爽黄69天堂A| 内射中出日韩无国产剧情| 无遮挡裸体免费视频尤物| 97亚洲狠狠色综合久久| 国色天香十七区品质怎么样| 人人妻人人澡人人爽人人| 亚洲精品午睡沙发系列| 丰满妇女强高潮18ⅩXXX在线| 久久中文字幕人妻丝袜| 无码国产精品一区二区免费模式| 2023极品少妇XXXO露脸| 国精产品999一区二区三区有限| 人妻丰满熟妇AV无码区动漫| 亚洲婷婷五月色香综合缴情| 国产成人AV综合久久视色| 女生会把隐私透露给异性朋友| 亚洲AV永久无码天堂网毛片| 吃饭时把腿张开故意让公| 免费 成 人 黄 色 网站69| 亚洲AV永久无码精品网址 | 越看越湿的啪啪的小说免费| 国产欧美一区二区精品性色| 人与性动交ⅩXXXB| 在线成人看片黄A免费看| 国外精品视频在线观看免费| 色欲AV自慰一区二区三区| 999久久久国产精品| 久久AⅤ人妻少妇嫩草影院| 无码国产精品一区二区免费模式| Www内射熟妇COm| 麻豆E奶女教师国产精品| 亚洲AV无码ⅤS国产AV| 丰满熟妇岳AV无码区HD| 欧美日韩精品视频一区二区三区| 亚洲最刺激成人无码| 国产真实夫妇交换视频| 少妇厨房愉情理伦片BD在线观看| A级国产乱理伦片在线观看| 久久男人AV资源网站无码| 亚洲AV综合色区无码另类小说| 国产69精品久久久久999小说| 青青爽无码视频在线观看| 中文字幕亚洲综合久久蜜桃| 久久精品国产亚洲AV高清色欲 | 人妻系列无码专区免费视频 | 领导不戴套玩弄下属娇妻| 亚洲精品无码AV人在线观看| 国产无遮挡裸体免费视频在线观看 | 国产乱人伦精品一区二区在线观看 | 42岁女子20天断崖式衰老| 巨胸美乳无码人妻在线| 亚洲色偷偷综合亚洲AV伊人蜜桃 | 无码AV最新高清无码专区| 粗大猛烈进出高潮喷浆H| 欧洲美熟女乱又伦AV影片| 中文字幕乱码人妻一区二区三区 | 在线精品动漫一区二区无码| 久久精品成人无码观看免费| 亚洲精品无码久久千人斩| 黑人巨大粗物挺进了少妇| 无码久久一区二区| 国产精品WWW夜色视频| 无码国产精品一区二区免费虚拟V 无码国产精品一区二区免费式直播 | 岳妇伦丰满69ⅩⅩ| 久久久久亚洲精品天堂| 亚洲一区二区三区在线观看网站| 精品一区二区三区免费乱码视频 | 无码国产精品一区二区VR老人| 高潮喷吹一区二区在线观看| 色欲AV永久无码精品无码蜜桃| 欧美午夜精品久久久久久浪潮| 老司机带带我免费看| 亚洲日韩AV无码中文字幕美国| 激情综合婷婷丁香五月尤物| 亚洲AV无码熟妇在线观看| 国产精品免费AⅤ片在线观看| 无码毛片内射白浆视频| 国产精品国产三级国产AV′| 无码毛片内射白浆视频| 国产日产欧产精品精品蜜芽| 无码无套少妇毛少18PXX| 国产精品一线二线三线| 小鲜肉洗澡时自慰网站XNXX| 国产露脸ⅩXXXⅩ高清H| 亚洲AV日韩AV永久无码绿巨人| 国偷自产AV一区二区三区| 亚洲国产精品无码久久青草 | 精品人人妻人人爽D∨D| 亚洲日韩国产精品乱-久| 久久综合给久久狠狠97色| 综合一区无套内射中文字幕| 欧美性大战XXXXX久久久| 成 人 A V免费视频在线观看| 少妇BBW搡BBBB搡| 国产精品一国产精品| 亚洲VA中文字幕无码一区| 久久久久成人片免费观看R| 中文字幕乱码亚洲无线码三区| 欧美日韩精品成人网站二区A∨有| 成 人 黄 色 网站 小说 免| 天天爽天天狠久久久综合麻豆 | 无码AV天堂一区二区三区| 国产亚洲精品精品精品| 亚洲色播爱爱爱爱爱爱爱| 母亲とが话していま在线观看| 爱情岛网站亚洲禁18进入| 特级做A爰片毛片免费看108| 国内精品久久久久精品爽爽| 一本之道无码一区二区| 欧美性激烈粗大精品XXX| 国产CHINASEX对白VIDEOS麻豆| 亚洲AV无码一区二区三区人| 久久亚洲AV永久无码精品| MM1313亚洲精品无码| 婷婷成人综合激情在线视频播放| 黑人巨大BBWBBW| 中文字幕人成无码免费视频| 日韩AV无码一区二区三区不卡毛| 国产日产欧产精品精品软件| 一本一道波多野结衣一区| 人妻无码人妻有码中文字幕在线 | 久久久久人妻精品一区| VR成品在线网站| 无码少妇一区二区浪潮av| 久久伊人五月丁香狠狠色| 产精品无码久久_亚洲国产精| 亚洲AV蜜桃无码精品无码| 蜜臀AV网站在线观看| 高h乱好爽要尿了潮喷了| 亚洲国产精品VA在线看黑人| 欧美巨大乳BBWVIDEOS| 国产精品成人片在线观看| 一本大道一卡2卡三卡4卡国产| 日本三级强伦姧护士HD | 俄罗斯女人与马Z00Z视频| 亚洲国产AV无码精品| 欧美自拍亚洲综合在线| 国产在线成人一区二区三区| 最新中文AV岛国无码免费播放 | 国产AV电影区二区三区曰曰骚网| 亚洲男人综合久久综合天堂| 人妻人妇人妻一区二区三区| 鳮巴又大又爽我高潮了免费视频 | 国产乱人伦偷精品视频免观看|