<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)前位置: 首頁(yè) - 科技 - 知識(shí)百科 - 正文

        基于vue2實(shí)現(xiàn)左滑刪除功能

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

        基于vue2實(shí)現(xiàn)左滑刪除功能

        基于vue2實(shí)現(xiàn)左滑刪除功能:左滑刪除,很多UI框架里有,比如Mint-UI, Muse-UI等,一開始我們就是用的這兩個(gè),但是我們需求是要:左滑的時(shí)候出現(xiàn)img然后來實(shí)現(xiàn)點(diǎn)擊刪除,如下: 因?yàn)橛肬I框架,還得改底層代碼= =所以,我們小組就直接寫了一個(gè)- -,心累……此組件多地方使用,所以建議還
        推薦度:
        導(dǎo)讀基于vue2實(shí)現(xiàn)左滑刪除功能:左滑刪除,很多UI框架里有,比如Mint-UI, Muse-UI等,一開始我們就是用的這兩個(gè),但是我們需求是要:左滑的時(shí)候出現(xiàn)img然后來實(shí)現(xiàn)點(diǎn)擊刪除,如下: 因?yàn)橛肬I框架,還得改底層代碼= =所以,我們小組就直接寫了一個(gè)- -,心累……此組件多地方使用,所以建議還

        左滑刪除,很多UI框架里有,比如Mint-UI, Muse-UI等,一開始我們就是用的這兩個(gè),但是我們需求是要:左滑的時(shí)候出現(xiàn)img然后來實(shí)現(xiàn)點(diǎn)擊刪除,如下:

        因?yàn)橛肬I框架,還得改底層代碼= =所以,我們小組就直接寫了一個(gè)- -,心累……此組件多地方使用,所以建議還是放到common下。

        <template>
         <div class="left-delete">
         <div class="move"
         @touchstart="_touchStart"
         @touchmove="_touchMove"
         @touchend="_touchEnd"
         :style="txtStyle">
         <slot></slot>
         </div>
         <div class="deleteIcon" :style="zIndex" @click.prevent="deleteItem(index)"></div>
         </div>
        </template>
        
        <script>
         export default {
         props: {
         index: Number
         },
         data() {
         return {
         startX: 0, //觸摸位置
         moveX: 0, //滑動(dòng)時(shí)的位置
         disX: 0, //移動(dòng)距離
         txtStyle: '',
         delWidth: 200,
         top: '',
         zIndex: 'z-index:-1',
         }
         },
         methods: {
         _touchStart: function(ev) {
         ev = ev || event;
         if(ev.touches.length == 1){
         // 手指按下的時(shí)候記錄按下的位置
         this.startX = ev.touches[0].clientX;
         console.log(this.startX)
         }
         },
         _touchMove: function(ev) {
         ev = ev || event;
         if(ev.touches.length == 1) {
         // 滑動(dòng)過程中的實(shí)時(shí)位置
         this.moveX = ev.touches[0].clientX
         // 滑動(dòng)過程中實(shí)時(shí)計(jì)算滑動(dòng)距離
         this.disX = this.startX - this.moveX;
         // console.log('disX==>',this.disX)
         // 如果是向右滑動(dòng)或者只是點(diǎn)擊,不改變滑動(dòng)位置
         if(this.disX < 0 || this.disX == 0) {
         // console.log('沒有移動(dòng)');
         this.txtStyle = "transform:translateX(0rem)";
         }else if (this.disX > 0) {
        如果是向左滑動(dòng),則實(shí)時(shí)給這個(gè)根元素一個(gè)向左的偏移-left,當(dāng)偏移量到達(dá)固定值delWidth時(shí),固定元素的偏移量為 delWidth
         this.txtStyle = "transform:translateX(-" + this.disX/100 + "rem)";
         if (this.disX >= this.delWidth/100) {
         this.txtStyle = "transform:translateX(-" + this.delWidth/100 + "rem)";
         this.zIndex = "z-index:" + 10 + "rem";
         }
         }
         }
         },
         _touchEnd: function(ev) {
         if (event.changedTouches.length == 1) {
         this.startX = 0;
         this.zIndex = "z-index:" + -1 + "rem";
         console.log(event.changedTouches[0].clientX)
         // 手指移動(dòng)結(jié)束后的水平位置
         let endX = event.changedTouches[0].clientX;
         // 觸摸開始與結(jié)束,手指移動(dòng)的距離
         this.disX = this.startX - endX;
         //如果距離小于刪除按鈕的1/2,不顯示刪除按鈕
         }
         },
         deleteItem: function(index) {
         this.$emit('deleteItem', index);
         }
         }
         }
        </script>
        
        <style>
         .left-delete{
         width:100%;
         height:100%;
         position:relative;
         z-index:2;
         }
         .move{
         position: relative;
         }
         .deleteIcon{
         width: 2rem;
         height:100%;
         position: absolute;
         right:0;
         top:0;
         background:url(./../../assets/main/4.png) no-repeat;
         background-size: contain;
         }
        </style>
        
        

        然后哪個(gè)頁(yè)面需要,哪個(gè)頁(yè)面引入就好。比如myCollect頁(yè)面需要,那么如下:

        <template>
         <section class="myCollect">
         <section>
         <div v-for="(item,index) in collectionList">
         <left-slider :index="index" @deleteItem="deleteItem">
         <Financial :item="item" :index="index"></Financial>
         </left-slider>
         </div>
         </section>
         </section>
        </template>
        <script>
         import api from './../../fetch/api';
         import { mapGetters } from 'vuex';
        
         import Financial from './../common/financial.vue';
         import LeftSlider from './../common/leftSlider.vue';
        
         export default {
         name: 'MyCollect',
         props: {
         item: Object,
         index: Number
         },
         components: {
         Financial,
         LeftSlider
         },
         data() {
         return {
        
         }
         },
         created() {
         this.getCollectionList();
         },
         methods: {
        
         },
         computed: {
         ...mapGetters([
         'getContextPathSrc',
         'sessionId',
         'token'
         ]),
         },
         methods: {
         // 刪除
         deleteItem: function(index) {
         api.commonApi('后臺(tái)接口,請(qǐng)求數(shù)據(jù)')//此處api是封裝的axios,詳情看文章:vue2+vuex+axios即可
         .then(res => {
         console.debug("REQ_ADD_STORE.res.data.result -> " + res.data.result);
         this.collectionList.splice(index, 1);
         });
         }
         },
         mounted() {
        
         }
         }
        </script>
        
        

        然后就完成了。

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

        文檔

        基于vue2實(shí)現(xiàn)左滑刪除功能

        基于vue2實(shí)現(xiàn)左滑刪除功能:左滑刪除,很多UI框架里有,比如Mint-UI, Muse-UI等,一開始我們就是用的這兩個(gè),但是我們需求是要:左滑的時(shí)候出現(xiàn)img然后來實(shí)現(xiàn)點(diǎn)擊刪除,如下: 因?yàn)橛肬I框架,還得改底層代碼= =所以,我們小組就直接寫了一個(gè)- -,心累……此組件多地方使用,所以建議還
        推薦度:
        標(biāo)簽: VUE 左滑刪除 基于vue
        • 熱門焦點(diǎn)

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 亚洲精品中文字幕麻豆| 狠狠亚洲狠狠欧洲2019| 午夜性色一区二区三区免费不卡视频 | 亚洲电影一区二区| 亚洲乱码一二三四区乱码| 亚洲精品无码久久| 国产精品免费大片一区二区| 无码精品国产一区二区三区免费 | 亚洲国产成人久久综合| 成人免费区一区二区三区| 97在线观免费视频观看| 国外亚洲成AV人片在线观看| 亚洲色中文字幕在线播放| 久久免费线看线看| 亚洲精品人成无码中文毛片| 综合自拍亚洲综合图不卡区| 免费看一级一级人妻片| 免费看黄视频网站| 日韩亚洲综合精品国产| AV大片在线无码永久免费| 亚洲国产精品一区二区久久hs| 亚洲欧美国产国产一区二区三区| 免费无码一区二区三区蜜桃大| 亚洲美女免费视频| 在线免费一区二区| 亚洲综合激情视频| 色www永久免费视频| 国产精品美女久久久免费| 亚洲欧洲在线播放| 国产精品99精品久久免费| 伊人久久大香线蕉亚洲| 久久午夜羞羞影院免费观看| 久久久久亚洲精品美女| 好大好硬好爽免费视频| 四虎影视无码永久免费| 免费人成网站在线高清| 亚洲欧美在线x视频| 97se亚洲综合在线| 国产成人免费全部网站| 国产精品亚洲片在线va| 亚洲av午夜精品一区二区三区 |