欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

分別使用vue和Android實(shí)現(xiàn)長(zhǎng)按券碼復(fù)制功能

 更新時(shí)間:2019年10月14日 14:35:46   作者:Sherry慈  
最近分別用vue和Android實(shí)現(xiàn)了一個(gè)券碼復(fù)制功能,長(zhǎng)按券碼會(huì)在上方彈出一個(gè)拷貝的icon提示,點(diǎn)擊icon將券碼內(nèi)容復(fù)制到剪貼板。下面小編給大家?guī)?lái)實(shí)現(xiàn)代碼,需要的朋友參考下吧

最近分別用vue和Android實(shí)現(xiàn)了一個(gè)券碼復(fù)制功能,長(zhǎng)按券碼會(huì)在上方彈出一個(gè)拷貝的icon提示,點(diǎn)擊icon將券碼內(nèi)容復(fù)制到剪貼板。現(xiàn)將一些經(jīng)驗(yàn)代碼分享給大家以供參考。廢話不多說(shuō),先上效果圖

在這里插入圖片描述

vue實(shí)現(xiàn):

npm install clipboard --save

<div class="coupon-count-container" @click="closePopBubble">
 <ul>
  <li v-for="(couponItem, index) in couponArray" :key="index">
   <div class="coupon-code-item">
    <img class="pop-bubble-copy" :style="{left: x + 'px', top: y + 'px', visibility: showPopBubble && index === clickedIndex ? 'visible' : 'hidden'}" src="../../assets/couponPayResult/copy_icon.png" @click="copyToClipboard($event, couponArray[clickedIndex].codeNo)">
    <span class="code-label">券碼:</span><span class="code-active" v-tap="{longMethod: getPopBubble, params: index}">{{couponItem.codeNo}}</span>
   </div>
  </li>
 </ul>
</div>
data: function() {
 return {
  couponArray: [],
  showPopBubble: false,
  x: 0,
  y: 0,
  clickedIndex: 0
 }
}

.coupon-code-item {
 position: relative;
 padding: 10px 0;
 font-size: 13px;
}

.pop-bubble-copy {
 position: absolute;
 width: 73px;
 height: 39px;
}

.code-label {
 margin-left: 28px;
 margin-right: 26px;
 color: #989898;
}

.code-active {
 color: $color-ff5532;
}

methods: {
 closePopBubble() {
  if (this.showPopBubble) {
   this.showPopBubble = false;
  }
 },
 getPopBubble(e, index) {
  this.showPopBubble = true;
  this.clickedIndex = index;
  // 對(duì)x,y的計(jì)算結(jié)果進(jìn)行微調(diào)
  this.x = e.target.offsetLeft + 30;
  this.y = e.target.offsetTop - 40;
 },
 copyToClipboard(e, text) {
  this.showPopBubble = false;
  var clipboard = new Clipboard(e.target, {text: () => text.replace(/\s/g, "")});
  clipboard.on('success', e => {
   // 釋放內(nèi)存
   clipboard.off('error');
   clipboard.off('success');
   clipboard.destroy();
  });
  clipboard.on('error', e => {
   // 釋放內(nèi)存
   clipboard.off('error');
   clipboard.off('success');
   clipboard.destroy();
  });
  clipboard.onClick(e);
 }
}

實(shí)現(xiàn)原理是將氣泡彈窗設(shè)置為絕對(duì)定位,根據(jù)券碼的位置來(lái)計(jì)算氣泡彈窗相對(duì)于父元素的位置,其中父元素為每一條item的包裹元素coupon-code-item

本次的實(shí)現(xiàn)難點(diǎn)是需要自己手動(dòng)定義vue的長(zhǎng)按點(diǎn)擊事件:

Vue.directive('tap',{
 bind:function(el,binding){
  var startTx, startTy,endTx,endTy,longClick,timeOutEvent,
  longMethod=binding.value.longMethod,
  method = binding.value.method,
  params = binding.value.params,
  propagation=binding.value.propagation;
  el.addEventListener("touchstart",function(e){
   var touch=e.touches[0];
   startTx = touch.clientX;
   startTy = touch.clientY;
   if(longMethod && typeof longMethod==='function'){
    longClick=0;
    timeOutEvent =setTimeout(function(){
    longClick=1;
    longMethod(e, params);
    },500)
   }
   if(!propagation){
    if (e.stopImmediatePropagation) {
    e.stopImmediatePropagation();
    } else {
     e.propagationStopped = true;
    }
   }
  },false );
  el.addEventListener("touchmove",function(e){
   if(longMethod && timeOutEvent){
   clearTimeout(timeOutEvent);
   timeOutEvent = 0;
   }
  },false);
  el.addEventListener("touchend",function(e){
   var touch = e.changedTouches[0];
   endTx = touch.clientX;
   endTy = touch.clientY;
   if(longMethod && timeOutEvent){
    clearTimeout(timeOutEvent);
   }
   if((timeOutEvent!=0 && longClick==0)||!longMethod){
    if( Math.abs(startTx - endTx) < 6 && Math.abs(startTy - endTy) < 6){
    if(params instanceof Array){
     method(...params);
    }
    else method(params);
    }
    var focusInput=document.querySelector('input:focus');
    if(focusInput)focusInput.blur();
    var tagName=el.tagName.toLowerCase();
    if(tagName==='input'||tagName==='textarea')el.focus();//獲取焦點(diǎn)
    if(!propagation){
    if (e.stopImmediatePropagation) {
     e.stopImmediatePropagation();
    } else {
     e.propagationStopped = true;
    }
    e.stopPropagation();
    return false;
    }
   }
  },false);
 }
})

Android實(shí)現(xiàn):

Android原生實(shí)現(xiàn)起來(lái)比較簡(jiǎn)單,直接貼代碼

在這里插入圖片描述

以上兩種實(shí)現(xiàn)方法全部完成,為了簡(jiǎn)單直接讓UI切了一張氣泡彈窗的顯示圖,如果感興趣也可以用代碼手動(dòng)繪制

總結(jié)

以上所述是小編給大家介紹的分別使用vue和Android實(shí)現(xiàn)長(zhǎng)按券碼復(fù)制功能,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
如果你覺(jué)得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!

相關(guān)文章

  • java asp分析各種搜索引擎的關(guān)鍵字,自動(dòng)識(shí)別url 中關(guān)鍵字的編碼

    java asp分析各種搜索引擎的關(guān)鍵字,自動(dòng)識(shí)別url 中關(guān)鍵字的編碼

    網(wǎng)上也有一些代碼,大部分都是通過(guò)輸入的關(guān)鍵字來(lái)識(shí)別編碼,并解碼。但是搜索引擎得到的referer來(lái)源地址上的關(guān)鍵字是通過(guò)URLencode編碼過(guò)的,而且各個(gè)網(wǎng)站的關(guān)鍵字Urlencode編碼都不一樣,gbk,utf-8,gb2312等等。
    2009-01-01
  • 聯(lián)邦學(xué)習(xí)論文解讀分散數(shù)據(jù)的深層網(wǎng)絡(luò)通信

    聯(lián)邦學(xué)習(xí)論文解讀分散數(shù)據(jù)的深層網(wǎng)絡(luò)通信

    這篇文章主要為大家介紹了論文解讀分散數(shù)據(jù)的深層網(wǎng)絡(luò)通信有效學(xué)習(xí),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • Jebrains付費(fèi)插件Activation code[持續(xù)更新]

    Jebrains付費(fèi)插件Activation code[持續(xù)更新]

    這篇文章主要介紹了Jebrains付費(fèi)插件Activation code[持續(xù)更新],使用本Activation code需要jetbrains-agent支持!感興趣的朋友跟隨小編一起看看吧
    2020-09-09
  • Web前端和JAVA應(yīng)該學(xué)哪個(gè)?哪個(gè)就業(yè)形勢(shì)更勝一籌?

    Web前端和JAVA應(yīng)該學(xué)哪個(gè)?哪個(gè)就業(yè)形勢(shì)更勝一籌?

    這篇文章主要介紹了Web前端和JAVA應(yīng)該學(xué)哪個(gè)?哪個(gè)就業(yè)形勢(shì)更好?本文通過(guò)幾個(gè)城市的薪資收入對(duì)比分析,需要的朋友可以參考下
    2020-07-07
  • 字符編碼詳解及由來(lái)(UNICODE,UTF-8,GBK) 比較詳細(xì)

    字符編碼詳解及由來(lái)(UNICODE,UTF-8,GBK) 比較詳細(xì)

    很久很久以前,有一群人,他們決定用8個(gè)可以開合的晶體管來(lái)組合成不同的狀態(tài),以表示世界上的萬(wàn)物。他們看到8個(gè)開關(guān)狀態(tài)是好的,于是他們把這稱為字節(jié)
    2012-04-04
  • GitHub配置SSH?Key的完整步驟

    GitHub配置SSH?Key的完整步驟

    ssh是一種通信方式,在本地電腦生成ssh key之后,配置到github里,就不用像http協(xié)議那樣每次都輸入賬戶密碼了,這篇文章主要給大家介紹了關(guān)于GitHub配置SSH?Key的完整步驟,需要的朋友可以參考下
    2022-03-03
  • 消息交換模式RabbitMQ簡(jiǎn)介

    消息交換模式RabbitMQ簡(jiǎn)介

    這篇文章簡(jiǎn)單介紹了消息交換模式RabbitMQ,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • 微信支付、支付寶支付等常用第三方支付通道接口手續(xù)費(fèi)對(duì)比

    微信支付、支付寶支付等常用第三方支付通道接口手續(xù)費(fèi)對(duì)比

    微信支付、支付寶等第三方支付,需要和銀聯(lián)、網(wǎng)聯(lián)對(duì)接,有清算機(jī)構(gòu)和銀行的交易處理通道成本。費(fèi)率指支付手續(xù)費(fèi)的費(fèi)率,不同行業(yè)、不同的支付平臺(tái)、不同的支付額度或次數(shù)所對(duì)應(yīng)的通道費(fèi)率是不一樣的。
    2023-01-01
  • 一文了解文檔寫作利器 Markdown

    一文了解文檔寫作利器 Markdown

    這篇文章主要介紹了一文了解文檔寫作利器 Markdown,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2020-04-04
  • Typora使用方法

    Typora使用方法

    今天用Typora因?yàn)樯?jí)了一下,所以需要激活雖然勉強(qiáng)能用,但是老是彈出激活頁(yè)面,很是苦惱,只能通過(guò)百度找方法進(jìn)行解決一下了,下面跟隨小編看下Typora使用方法,需要的朋友可以參考下
    2022-04-04

最新評(píng)論