精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

使用 Vue 實(shí)現(xiàn)一個(gè)簡(jiǎn)單的鼠標(biāo)拖拽滾動(dòng)效果插件

開發(fā) 前端
簡(jiǎn)單描述一下,就是鼠標(biāo)拖動(dòng)頁面,整個(gè)頁面會(huì)隨著的鼠標(biāo)的拖拽而移動(dòng),如果頁面有內(nèi)容,里面的內(nèi)容也需要跟著拖動(dòng)的外層整體移到。

 [[356473]]

演示事例

http://www.longstudy.club/vue-drag-scroll/index.html

最近在做一個(gè)新的項(xiàng)目,有個(gè)需要是這樣的:

 

簡(jiǎn)單描述一下,就是鼠標(biāo)拖動(dòng)頁面,整個(gè)頁面會(huì)隨著的鼠標(biāo)的拖拽而移動(dòng),如果頁面有內(nèi)容,里面的內(nèi)容也需要跟著拖動(dòng)的外層整體移到。

一開始沒啥思路,所以就發(fā)了個(gè)朋友圈,得到的答案挺多的,主要還是用拖拽之類的,但這個(gè)拖拽只是單個(gè)元素的拖動(dòng),我想要的整個(gè)視圖的拖動(dòng)。

這里線索又?jǐn)嗔恕?/p>

于是又回到飛書有類似功能的頁面,然后仔細(xì)檢查一下它頁面的 DOM 結(jié)構(gòu),如下所示:

 

發(fā)現(xiàn)有這一層,它把頁面設(shè)置的很寬,很高,為了隱藏滾動(dòng)條,所以設(shè)置overflow: hidden;,看了這一設(shè)置,突然靈光一現(xiàn),難道它是用拖拽來觸發(fā)滾動(dòng)條的滾動(dòng),在細(xì)想,哇靠,這思路可行的,NB。

準(zhǔn)備上手試試

創(chuàng)建一個(gè) vue 項(xiàng)目,這個(gè)就不細(xì)說的,我已經(jīng)把原碼發(fā)布到 github 上了,有興趣自己看看:

https://github.com/qq449245884/vue-drag-scroll

首先給外層加個(gè)大大的寬和高:

  1. <div class="vue-drag-scroll-wrapper" :style="zoomStye"
  2.   // 這里省略一些不太重要的代碼 
  3. </div> 
  4.  
  5. <script> 
  6. export default { 
  7.   name'VueDragScroll'
  8.   props: { 
  9.     msg: String 
  10.   }, 
  11.   data () { 
  12.     return { 
  13.       scale: 100 
  14.     } 
  15.   }, 
  16.   computed: { 
  17.     zoomStye () { 
  18.       const INIT_WIDTH = 2208 
  19.       const INIT_HEIGHT = 1206 
  20.       const width = INIT_WIDTH * (1 + (100 - this.scale)/100) 
  21.       const height = INIT_HEIGHT * (1 + (100 - this.scale)/100) 
  22.       console.log(width) 
  23.       console.log(height) 
  24.       return { 
  25.         width: `${width}px`, 
  26.         height: `${height}px`, 
  27.         transform: `scale(${this.scale/100})` 
  28.       } 
  29.     } 
  30.   } 
  31. </script> 

這里設(shè)置了一個(gè)計(jì)算屬性 zoomStye,主要使用就是給外層加一個(gè)在的寬,和高,這里我還設(shè)置了一個(gè)縮放比較,為了是能放大縮小頁面,下面講。運(yùn)行效果:

 

接著,我們需要監(jiān)聽鼠標(biāo)的拖拽來觸發(fā)滾動(dòng)條效果,因?yàn)樾枰獙?duì) dom 的操作,所以這里把拖拽處理邏輯用 vue 指令封裝起來,這樣后面有需要,只要使用該指令即可。

注意:在 vue 中如果需要對(duì) dom 進(jìn)行多次操作,最好是把它封裝在指令中。

指令代碼如下:

  1. import Vue from 'vue' 
  2.  
  3. Vue.directive('dragscroll'function (el) { 
  4.   el.onmousedown = function (ev) { 
  5.     console.log(el) 
  6.     const disX = ev.clientX 
  7.     const disY = ev.clientY 
  8.     const originalScrollLeft = el.scrollLeft 
  9.     const originalScrollTop = el.scrollTop 
  10.     const originalScrollBehavior = el.style['scroll-behavior'
  11.     const originalPointerEvents = el.style['pointer-events'
  12.     // auto: 默認(rèn)值,表示滾動(dòng)框立即滾動(dòng)到指定位置。 
  13.     el.style['scroll-behavior'] = 'auto' 
  14.     el.style['cursor'] = 'grabbing' 
  15.     // 鼠標(biāo)移動(dòng)事件是監(jiān)聽的整個(gè)document,這樣可以使鼠標(biāo)能夠在元素外部移動(dòng)的時(shí)候也能實(shí)現(xiàn)拖動(dòng) 
  16.     document.onmousemove = function (ev) { 
  17.       ev.preventDefault() 
  18.       // 計(jì)算拖拽的偏移距離 
  19.       const distanceX = ev.clientX - disX 
  20.       const distanceY = ev.clientY - disY 
  21.  
  22.       el.scrollTo(originalScrollLeft - distanceX, originalScrollTop - distanceY) 
  23.       console.log(originalScrollLeft - distanceX, originalScrollTop - distanceY) 
  24.       // 由于我們的圖片本身有點(diǎn)擊效果,所以需要在鼠標(biāo)拖動(dòng)的時(shí)候?qū)Ⅻc(diǎn)擊事件屏蔽掉 
  25.       el.style['pointer-events'] = 'none' 
  26.       document.body.style['cursor'] = 'grabbing' 
  27.     } 
  28.     document.onmouseup = function () { 
  29.       document.onmousemove = null 
  30.       document.onmouseup = null 
  31.       el.style['scroll-behavior'] = originalScrollBehavior 
  32.       el.style['pointer-events'] = originalPointerEvents 
  33.       el.style['cursor'] = 'grab' 
  34.     } 
  35.   } 
  36. }) 

這里的主要思路就是利用 el.scrollTo 來觸發(fā)滾動(dòng)條的移到。

有了 dragscroll 指令,我們來使用一下,首先我們需要在增加一層外層:

  1. <div v-dragscroll  class="vue-drag-scroll-out-wrapper"
  2.  <div  class="vue-drag-scroll-wrapper" :style="zoomStye"
  3.     // 這里省略一些不太重要的代碼 
  4.   </div> 
  5. </div> 
  6.  
  7. <style scoped> 
  8. .vue-drag-scroll-out-wrapper{ 
  9.     overflow-x: hidden; 
  10.     width: 100%; 
  11.     height: 100%; 
  12.     cursor: grab; 
  13.     position: absolute
  14.     top:0; 
  15.     left: 0; 
  16.     &::-webkit-scrollbar { width: 0 !important } // 隱藏垂直方向的滾動(dòng)條 
  17. </style> 

// 這里省略一些不太重要的代碼 這里需要注意的在 .vue-drag-scroll-out-wrapper 要設(shè)置 overflow 值,否則無法滾動(dòng)(測(cè)試出來的)。

這樣拖拽效果就出來啦:

 

增加縮放

這里,我們?cè)黾右粋€(gè)視圖的放大和縮小,所以增加兩個(gè)按鈕:

  1. <div class="tolbox-zoom-wrapper"
  2.   <div class="zoom-inner"
  3.   <span class="iconfont iconsuoxiao" 
  4.     :class="{'disabled': scale === 25}" style="font-size:22px" 
  5.     @click="handleReduce" 
  6.   /> 
  7.   <span class="iconfont iconfangda" 
  8.     :class="{'disabled': scale === 100}" 
  9.     @click="handleEnlarge"   
  10.   /> 
  11.   <div class="scale-text">{{scale}}%</div> 
  12.   </div> 
  13. </div> 

效果:

 

這里的放大和縮小的邏輯就是通過我們?cè)黾訙p少 scale 來實(shí)現(xiàn)

  1. handleReduce () { 
  2.   if (this.scale === 25) return 
  3.   this.scale -= 25 
  4. }, 
  5. handleEnlarge () { 
  6.   if (this.scale === 100) return 
  7.   this.scale += 25 

縮放比例的關(guān)系就是開關(guān)給出的代碼:

  1. const INIT_WIDTH = 2208 
  2. const INIT_HEIGHT = 1206 
  3. const width = INIT_WIDTH * (1 + (100 - this.scale)/100) 
  4. const height = INIT_HEIGHT * (1 + (100 - this.scale)/100) 

這個(gè)比例是我自己定的,比如現(xiàn)在減少到 75% ,那么最外層的高和寬就要對(duì)應(yīng)的增加原來的 25%,因?yàn)榭s放就是視野上的縮小,對(duì)應(yīng)的距離就是拉寬。

最后就是使用 CSS 的 transform 來做縮放:

  1. transform: `scale(${this.scale/100})` 

最終的效果:

本文轉(zhuǎn)載自微信公眾號(hào)「大遷世界」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請(qǐng)聯(lián)系大遷世界公眾號(hào)。

 

責(zé)任編輯:武曉燕 來源: 大遷世界
相關(guān)推薦

2018-09-18 10:11:21

前端vue.jsjavascript

2022-10-10 08:39:19

CSS前端

2009-08-17 10:26:39

鼠標(biāo)手勢(shì)

2022-09-20 11:00:14

Vue3滾動(dòng)組件

2023-05-22 09:10:53

CSSloading 效

2012-05-10 16:46:09

Visual Stud

2021-07-20 10:30:46

Golanghttp語言

2016-11-08 18:53:08

編譯器

2009-09-01 16:14:06

C#窗口抖動(dòng)

2012-05-17 13:17:26

HTML5

2022-11-29 17:34:43

虛擬形象系統(tǒng)

2021-04-28 10:01:00

JSCSS進(jìn)度條

2021-11-02 15:35:01

JavaScriptCSS開發(fā)

2012-05-28 13:38:41

HTML5

2020-06-04 12:55:44

PyTorch分類器神經(jīng)網(wǎng)絡(luò)

2024-05-07 09:02:47

2024-06-04 14:17:26

2022-06-13 06:33:04

瀏覽器瀏覽器插件

2022-03-08 13:23:38

Vue3抖音前端

2009-09-03 16:50:35

C#鼠標(biāo)形狀
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

国产精品欧美一区二区| 亚洲天堂日韩电影| 热99这里只有精品| 男同在线观看| 国产在线精品视频| 91sa在线看| www.99热| 国产精品一区二区中文字幕| 色8久久人人97超碰香蕉987| 国产高清免费在线| 手机在线观看毛片| 麻豆专区一区二区三区四区五区| 欧美俄罗斯乱妇| 久操视频在线观看免费| 白嫩白嫩国产精品| 欧美日韩午夜在线| 欧美日韩在线视频一区二区三区| 国产视频中文字幕在线观看| 久久蜜桃av一区二区天堂 | 蜜臀久久99精品久久久久宅男| 欧美成人免费va影院高清| av女人的天堂| 国产精品2023| 日韩欧美中文字幕制服| 亚洲视频在线a| 交100部在线观看| 亚洲激情校园春色| youjizz.com亚洲| 国产人成在线观看| 91麻豆国产福利精品| 99精品国产高清在线观看| 在线观看中文字幕av| 翔田千里一区二区| 91精品国产91久久久久久久久| 国产大学生自拍| 日韩精品看片| 国产一区二区三区久久精品 | 999免费视频| 日韩高清一级片| 日本久久久久久久久| 五月婷婷中文字幕| 日韩亚洲精品在线| 国语自产精品视频在免费| 欧美片一区二区| 一本一本久久a久久综合精品| 深夜成人在线观看| 久久一级免费视频| 国产精品99一区二区三区| 一本一本久久a久久精品综合小说 一本一本久久a久久精品牛牛影视 | 欧美黄色高清视频| 国模精品一区| 一区二区三区久久精品| 亚洲天堂岛国片| 欧美三级美国一级| 中文字幕精品视频| 精品国产国产综合精品| 外国成人免费视频| 久久在线免费视频| 午夜免费激情视频| 一区在线免费观看| 4444欧美成人kkkk| aaaaaa毛片| 美女网站视频久久| 成人免费淫片aa视频免费| 国产伦精品一区二区三区视频痴汉| 看电视剧不卡顿的网站| 成人免费网站在线看| 亚洲av无码乱码国产精品| 夫妻av一区二区| 久久偷窥视频| 最新97超碰在线| 亚洲欧洲精品成人久久奇米网| 中文字幕在线乱| www.8ⅹ8ⅹ羞羞漫画在线看| 日韩欧美在线观看视频| 国产视频手机在线播放| 国产高清精品二区| 亚洲第一中文字幕| 人人人妻人人澡人人爽欧美一区| 日韩久久久久| 欧美国产日韩视频| 国产寡妇亲子伦一区二区三区四区 | 日韩一中文字幕| 免费日韩在线视频| 国产日韩欧美| 91久久久国产精品| 人妻少妇一区二区三区| 国产欧美日韩精品a在线观看| 综合视频在线观看| 蜜桃麻豆影像在线观看| 欧美四级电影在线观看| 日韩精品xxx| 久久99视频| 欧美成人精品h版在线观看| 亚洲视频免费播放| 久久91精品国产91久久小草| 国产精品久久久久久久天堂第1集| 色视频在线观看福利| 18成人在线视频| 欧美 国产 日本| 国产电影一区| 国产亚洲精品一区二555| 免费一级片视频| 青青青伊人色综合久久| 国产日韩欧美二区| 成人av福利| 91久久精品一区二区| 韩国一区二区三区四区| 成人av二区| 57pao成人国产永久免费| 国产喷水福利在线视频| 国产清纯白嫩初高生在线观看91 | 最近2019年中文视频免费在线观看| 青青草手机视频在线观看| 久久婷婷丁香| 久久精品人人做人人爽电影| av免费在线观看网站| 91福利在线播放| 在线观看国产网站| 国产精品a久久久久| 国产日韩精品一区二区| 视频在线观看你懂的| 亚洲一区二区三区影院| 国内av一区二区| 全球成人免费直播| 国产精品高潮呻吟久久av野狼| 天堂在线资源8| 亚洲自拍偷拍综合| 亚洲精品免费一区亚洲精品免费精品一区| 国产成人黄色| 奇米影视亚洲狠狠色| 丰满熟妇人妻中文字幕| 尤物视频一区二区| 五月天开心婷婷| 先锋资源久久| 成人日韩av在线| 免费大片黄在线观看视频网站| 色久优优欧美色久优优| 成人网站免费观看| 在线观看一区视频| 粉嫩av免费一区二区三区| av软件在线观看| 欧美一区二区三区日韩视频| 天天色天天综合| 精品亚洲aⅴ乱码一区二区三区| 亚洲成人a**址| 精品69视频一区二区三区| 国产亚洲美女精品久久久| 免费av中文字幕| 欧美国产精品一区二区| 色噜噜狠狠一区二区| 国产精品国产一区| 亚洲va电影大全| 超碰超碰在线| 亚洲成人久久久久| 国产成人在线视频观看| 国产亚洲女人久久久久毛片| 日韩中文字幕免费在线| 凹凸成人精品亚洲精品密奴| 国产精品久久久久久久久男| 中文日本在线观看| 制服丝袜中文字幕亚洲| 九九在线观看视频| 不卡一区二区中文字幕| 亚洲色欲综合一区二区三区| 精品国产1区| 国产日韩欧美在线看| 1769免费视频在线观看| 亚洲福利视频专区| 无码人妻精品一区二区三区9厂| 国产欧美日韩在线| 一级片免费在线观看视频| 激情综合中文娱乐网| 蜜桃999成人看片在线观看| 国产第一亚洲| 欧美国产日韩在线| 欧美日韩国产中文字幕在线| 欧美日韩色综合| 久久一区二区三| 久久久99精品免费观看| 999在线精品视频| 一区视频在线| 亚洲不卡1区| 亚洲欧美综合久久久久久v动漫| 久久久亚洲福利精品午夜| 青青草免费在线| 欧美一区二区视频在线观看2022| 激情五月色婷婷| 国产精品免费免费| 亚洲一区二区三区四区av| 日韩精品久久久久久| 国产日韩欧美大片| 免费一区二区| 鬼打鬼之黄金道士1992林正英| 欧洲亚洲两性| 欧美激情一二三| 欧美三级黄网| 亚洲美女动态图120秒| 99久久夜色精品国产亚洲| 精品日韩美女的视频高清| 欧美做爰爽爽爽爽爽爽| 久久久国产一区二区三区四区小说 | 国产免费黄色录像| 欧美午夜影院在线视频| 东方av正在进入| 欧美国产日韩一二三区| 久久久国产精品无码| 国产专区综合网| 日韩欧美xxxx| 一区二区91| 欧美日韩dvd| 久久精品高清| 欧美在线视频一区二区三区| 1769国产精品视频| 91精品免费视频| 成人国产网站| 国产999在线观看| 老司机深夜福利在线观看| 乱亲女秽乱长久久久| 久草视频视频在线播放| 亚洲第一精品电影| av网站免费大全| 欧美电影一区二区| 中文字幕av影视| 色综合久久久久综合体| 日韩三级视频在线| 亚洲一区在线视频观看| av成人免费网站| 中文字幕色av一区二区三区| a级在线免费观看| 久久久亚洲午夜电影| 中国美女乱淫免费看视频| 成人免费av资源| 精品伦一区二区三区| 国产69精品久久777的优势| xxx中文字幕| 国产高清无密码一区二区三区| www.com污| 极品销魂美女一区二区三区| 日韩成人精品视频在线观看| 久久成人免费网站| 污污的网站免费| 狠狠色丁香婷婷综合久久片| 捷克做爰xxxⅹ性视频| 精品亚洲porn| 人妻精品久久久久中文字幕69| 国产最新精品精品你懂的| 日韩欧美亚洲另类| 国产一区二区三区在线观看免费 | 欧美国产精品专区| 国产不卡在线观看视频| 国产精品三级电影| 国产小视频你懂的| 日韩理论片在线| tube国产麻豆| 香蕉久久一区二区不卡无毒影院 | 久久精品magnetxturnbtih| 日韩av黄色在线| 青青草成人网| 91久久夜色精品国产按摩| 欧美a级黄色大片| 国内一区二区三区| 国产视频一视频二| 美女诱惑黄网站一区| 自拍偷拍 国产| 国产真实乱对白精彩久久| 国产又黄又嫩又滑又白| 99精品热视频| 91l九色lporny| 亚洲日本在线观看| 国产精品一区二区6| 在线观看亚洲一区| a级片免费观看| 亚洲精品福利免费在线观看| 国产对白叫床清晰在线播放| 久久成人精品视频| av成人 com a| 国产精品香蕉在线观看| 一区二区三区视频免费视频观看网站| 久久爱av电影| 天天做天天爱天天爽综合网| 国产亚洲黄色片| 日韩av一级片| 人妻激情偷乱视频一区二区三区| 99久久精品免费看| 亚洲一二三精品| 亚洲成人自拍一区| a片在线免费观看| 精品奇米国产一区二区三区| 国产在线免费观看| 欧美大片免费观看在线观看网站推荐 | 自拍偷拍国产亚洲| 久久久久久久久久久影院| 在线不卡一区二区| 日本不卡免费播放| 欧美乱大交xxxxx| 成人在线高清| 狠狠色综合欧美激情| 婷婷综合激情| 国产福利一区视频| av午夜一区麻豆| 亚洲综合视频网站| 在线视频你懂得一区二区三区| 性欧美8khd高清极品| 一区二区三区天堂av| h片在线观看视频免费| 91中文在线观看| 欧美综合一区| 男人天堂网视频| 丁香一区二区三区| 国产精品老熟女一区二区| 在线观看日韩一区| 日韩精品一二| 久久免费国产精品1| 久久国产精品免费一区二区三区| 茄子视频成人在线观看 | 99久久久久久中文字幕一区| 久久婷婷国产精品| www.在线成人| 久草视频免费在线| 91精品在线免费观看| 在线观看黄av| 国产精品久久久久久av福利软件| 任你躁在线精品免费| 欧美精品久久久久久久久久久| 国产一区二区精品久久| 后入内射无码人妻一区| 91国模大尺度私拍在线视频| 台湾av在线二三区观看| 国内精品400部情侣激情| 涩涩屋成人免费视频软件| 自拍偷拍视频在线| 激情图片小说一区| 免费黄色国产视频| 欧美特级限制片免费在线观看| seseavlu视频在线| 国产成人精品最新| 免费观看不卡av| 久久9精品区-无套内射无码| 26uuu亚洲综合色| 国产精品男女视频| 亚洲欧美日韩一区二区在线| 性欧美videohd高精| 日韩av在线电影观看| 美日韩一区二区三区| 亚洲a∨无码无在线观看| 欧美精品视频www在线观看| 毛片免费不卡| 91欧美精品成人综合在线观看| 欧美1区3d| 色哟哟视频在线| 欧美视频在线视频| 免费在线观看污视频| 国产精品 欧美在线| 久久一区二区三区喷水| 亚洲精品乱码久久久久久动漫| 亚洲精品国产第一综合99久久 | 欧美国产禁国产网站cc| 国产又粗又猛又色又| 久99久在线视频| 久久a爱视频| 免费在线观看的毛片| 国产精品久久久久精k8| 亚洲成熟女性毛茸茸| 97超级碰碰人国产在线观看| 蜜桃精品wwwmitaows| 97超碰人人爽| 一区二区不卡在线视频 午夜欧美不卡在| 亚洲乱码精品久久久久..| 欧美在线亚洲在线| 不卡在线一区二区| 一级做a爱视频| 精品久久久久久久久久久| 91在线直播| 国产精品我不卡| 日本午夜精品一区二区三区电影| 日韩精品123区| 日韩成人高清在线| 欧美大片网站| 欧美黑人经典片免费观看| 中文av一区二区| 丰满少妇被猛烈进入| 国产精品久久久91| 综合av在线| 欧洲美一区二区三区亚洲| 欧美一区二区观看视频| jizz内谢中国亚洲jizz| 中文字幕av日韩精品| 91丨porny丨首页| 91久久久久久久久久久久| 97人人做人人爱| 外国成人免费视频| 国产女主播喷水高潮网红在线| 欧美一区二区三区婷婷月色| 欧美男体视频| 青草网在线观看| 中文字幕中文字幕在线一区| 日韩有码第一页| 91精品视频网站| 青青草国产成人av片免费|