<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當(dāng)前位置: 首頁 - 科技 - 知識百科 - 正文

        Vue.js移動端左滑刪除組件的實現(xiàn)代碼

        來源:懂視網(wǎng) 責(zé)編:小采 時間:2020-11-27 22:30:49
        文檔

        Vue.js移動端左滑刪除組件的實現(xiàn)代碼

        Vue.js移動端左滑刪除組件的實現(xiàn)代碼:左滑刪除在移動端很常見。下面我們一起來封裝一下這個簡單的小組件。我們想要是: 當(dāng)滑塊沒有超過刪除按鈕的一半時自動回到起點位置。 滑動距離超過一半滑動到最大值(刪除按鈕寬度) 盡量精簡代碼 效果如下: 在開始之前,我們先得將 [touchEventA
        推薦度:
        導(dǎo)讀Vue.js移動端左滑刪除組件的實現(xiàn)代碼:左滑刪除在移動端很常見。下面我們一起來封裝一下這個簡單的小組件。我們想要是: 當(dāng)滑塊沒有超過刪除按鈕的一半時自動回到起點位置。 滑動距離超過一半滑動到最大值(刪除按鈕寬度) 盡量精簡代碼 效果如下: 在開始之前,我們先得將 [touchEventA

        左滑刪除在移動端很常見。下面我們一起來封裝一下這個簡單的小組件。我們想要是:

      1. 當(dāng)滑塊沒有超過刪除按鈕的一半時自動回到起點位置。
      2. 滑動距離超過一半滑動到最大值(刪除按鈕寬度)
      3. 盡量精簡代碼
      4. 效果如下:

        在開始之前,我們先得將 [touchEventApi][1]弄清楚了。這個小組件中,用到了:

        1.  TouchEvent.touches (表示一 個 TouchList 對象,包含了所有當(dāng)前接觸觸摸平面的觸點的Touch對象)

        2.  TouchEvent.changedTouches (一個 TouchList 對象,包含了代表所有從上一次觸摸事件到此次事件過程中,
            狀態(tài)發(fā)生了改變的觸點的 Touch 對象。)

        話不多說,直接上代碼: 

        <template>
         <div class="delete">
         <div class="slider">
         <div class="content" 
         @touchstart='touchStart'
         @touchmove='touchMove'
         @touchend='touchEnd'
         :style="deleteSlider"
         >
         <!-- 插槽中放具體項目中需要內(nèi)容 --> 
         <slot></slot>
         </div>
         <div class="remove" ref='remove'>
         刪除
         </div>
         </div>
         
         </div>
        </template>
        

        然后是css,這里我使用的是less

        <style scoped lang="less" scoped>
         .slider{
         width: 100%;
         height:200px;
         position: relative;
         user-select: none;
         .content{
         position: absolute;
         left: 0;
         right: 0;
         top: 0;
         bottom: 0;
         background:green;
         z-index: 100;
         // 設(shè)置過渡動畫
         transition: 0.3s;
         
         }
         .remove{
         position: absolute;
         width:200px;
         height:200px;
         background:red;
         right: 0;
         top: 0;
         color:#fff;
         text-align: center;
         font-size: 40px;
         line-height: 200px;
         }
         }
         
        </style>
        
        <script type="text/ecmascript-6">
         export default {
         data() {
         return {
         startX:0, //觸摸位置
         endX:0, //結(jié)束位置
         moveX: 0, //滑動時的位置
         disX: 0, //移動距離
         deleteSlider: '',//滑動時的效果,使用v-bind:style="deleteSlider"
         }
         
         },
         methods:{
         touchStart(ev){
         ev= ev || event
         //tounches類數(shù)組,等于1時表示此時有只有一只手指在觸摸屏幕
         
         if(ev.touches.length == 1){
         // 記錄開始位置
         this.startX = ev.touches[0].clientX;
         }
         },
         touchMove(ev){
         ev = ev || event;
         //獲取刪除按鈕的寬度,此寬度為滑塊左滑的最大距離
         let wd=this.$refs.remove.offsetWidth;
         if(ev.touches.length == 1) {
         // 滑動時距離瀏覽器左側(cè)實時距離
         this.moveX = ev.touches[0].clientX
         
         //起始位置減去 實時的滑動的距離,得到手指實時偏移距離
         this.disX = this.startX - this.moveX;
         console.log(this.disX)
         // 如果是向右滑動或者不滑動,不改變滑塊的位置
         if(this.disX < 0 || this.disX == 0) {
         this.deleteSlider = "transform:translateX(0px)";
         // 大于0,表示左滑了,此時滑塊開始滑動 
         }else if (this.disX > 0) {
         //具體滑動距離我取的是 手指偏移距離*5。
         this.deleteSlider = "transform:translateX(-" + this.disX*5 + "px)";
         
         // 最大也只能等于刪除按鈕寬度 
         if (this.disX*5 >=wd) {
         this.deleteSlider = "transform:translateX(-" +wd+ "px)";
         
         }
         }
         }
         },
         touchEnd(ev){
         ev = ev || event;
         let wd=this.$refs.remove.offsetWidth;
         if (ev.changedTouches.length == 1) {
         let endX = ev.changedTouches[0].clientX;
         
         this.disX = this.startX - endX;
         console.log(this.disX)
         //如果距離小于刪除按鈕一半,強行回到起點
         
         if ((this.disX*5) < (wd/2)) {
         
         this.deleteSlider = "transform:translateX(0px)";
         }else{
         //大于一半 滑動到最大值
         this.deleteSlider = "transform:translateX(-"+wd+ "px)";
         }
         }
         } 
         }
         }
        </script>
        

        到這里就全部完成了,希望對大家有幫助!也希望大家多多支持腳本之家。

        聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        Vue.js移動端左滑刪除組件的實現(xiàn)代碼

        Vue.js移動端左滑刪除組件的實現(xiàn)代碼:左滑刪除在移動端很常見。下面我們一起來封裝一下這個簡單的小組件。我們想要是: 當(dāng)滑塊沒有超過刪除按鈕的一半時自動回到起點位置。 滑動距離超過一半滑動到最大值(刪除按鈕寬度) 盡量精簡代碼 效果如下: 在開始之前,我們先得將 [touchEventA
        推薦度:
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 成人性生免费视频| 九九精品免费视频| 亚洲成人一区二区| 免费精品久久久久久中文字幕| 国产成人无码区免费A∨视频网站 国产成人涩涩涩视频在线观看免费 | 无码A级毛片免费视频内谢| 国产偷v国产偷v亚洲高清| 中国一级毛片免费看视频| 亚洲av成本人无码网站| 午夜dj在线观看免费视频| 在线观看亚洲专区| 亚洲国产精品成人一区| 久久久久国色AV免费观看| 国产精品亚洲片在线| 99久久人妻精品免费一区| 亚洲在成人网在线看| jizz在线免费观看| 久久精品亚洲中文字幕无码网站| 色欲aⅴ亚洲情无码AV蜜桃| 免费中文字幕不卡视频| 中文字幕免费人成乱码中国| 亚洲伦另类中文字幕| 美女视频黄a视频全免费| 九九精品国产亚洲AV日韩| 国产一卡二卡四卡免费| 日韩va亚洲va欧洲va国产| 香港特级三A毛片免费观看| 亚洲色偷拍另类无码专区| 3d成人免费动漫在线观看| 日韩亚洲欧洲在线com91tv| 97公开免费视频| 亚洲av成人无码网站…| 久久精品国产亚洲av麻豆| 无码区日韩特区永久免费系列| 日本亚洲高清乱码中文在线观看| 亚洲香蕉网久久综合影视| 亚洲美女视频免费| 一级视频免费观看| 中文亚洲成a人片在线观看| 日产久久强奸免费的看| 亚洲麻豆精品果冻传媒|