亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

基于canvas實現(xiàn)手寫簽名(vue)

 更新時間:2020年05月21日 15:40:02   作者:yzbyxmx  
這篇文章主要為大家詳細介紹了基于canvas實現(xiàn)簡易的手寫簽名,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

最近一直在研究canvas的東西,正好之前對手寫簽名這塊有點興趣。就自己基于vue寫了一個簡易的手寫簽名demo。

其中原理比較簡單,先生成一個canvas畫布,并對canvas進行touchstart和touchmove事件進行監(jiān)聽。當(dāng)監(jiān)聽touchstart事件被觸發(fā)時,我們開始觸發(fā)canvas里的beginPath事件并且設(shè)置moveTo原始點。當(dāng)監(jiān)聽touchmove事件則去不斷去觸發(fā)lineTo事件,最后stroke()。

demo里還有清除簽名和保存簽名的功能,分別對應(yīng)了clearRect()和toDataURL()方法。

具體的demo代碼如下:

<template>
  <div>
    <canvas id="canvas" width="300" height="150">

    </canvas>
    <div class="btn">
     <span @click="toClear()">清除</span>
     <span @click="toSave()">保存</span>
    </div>
  </div>
</template>

<script>
  export default {
    name: "sign-name",
    data(){
     return {
       ctx:null,
       canvas:null
     }
    },
    mounted() {
     this.initPage()
    },
    methods:{
     initPage() {
      this.canvas = document.getElementById('canvas')
      if(this.canvas.getContext){
       this.ctx = this.canvas.getContext('2d')
       let background = "#ffffff"
       this.ctx.lineCap = 'round'
       this.ctx.fillStyle = background
       this.ctx.lineWidth = 2
       this.ctx.fillRect(0,0,350,150)

       this.canvas.addEventListener("touchstart",(e)=>{
        console.log(123,e)
        this.ctx.beginPath()
        this.ctx.moveTo(e.changedTouches[0].pageX,e.changedTouches[0].pageY)
       })

       this.canvas.addEventListener("touchmove",(e)=>{
        this.ctx.lineTo(e.changedTouches[0].pageX,e.changedTouches[0].pageY)
        this.ctx.stroke()
       })

      }
     },
     toClear() {
      this.ctx.clearRect(0,0,300,150)
     },
     toSave() {
      let base64Img = this.canvas.toDataURL()
      console.log(123,base64Img)
     }
    }

  }
</script>

<style lang="scss" scoped>
 .btn {
  height: px2Vw(55);
  position: fixed;
  bottom: 0;
  line-height: px2Vw(55);
  border-top: px2Vw(1) solid #f7f8f9;
  span {
   display: inline-block;
   width: px2Vw(185);
   text-align: center;
  }
 }
 canvas {
  position: fixed;
  border: 2px dashed #cccccc;
  float: right;
 }
</style>

代碼運行后的效果圖如下:

這只是個簡易的demo,肯定會有很多未考慮到的地方。demo的下載地址

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • vue實現(xiàn)密碼顯示與隱藏按鈕的自定義組件功能

    vue實現(xiàn)密碼顯示與隱藏按鈕的自定義組件功能

    本文通過兩種思路給大家介紹vue實現(xiàn)密碼顯示與隱藏按鈕的自定義組件功能,感興趣的朋友跟隨小編一起看看吧
    2019-04-04
  • 淺談vue 多個變量同時賦相同值互相影響

    淺談vue 多個變量同時賦相同值互相影響

    這篇文章主要介紹了淺談vue 多個變量同時賦相同值互相影響,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • 淺談vue中resetFields()使用注意事項

    淺談vue中resetFields()使用注意事項

    這篇文章主要介紹了淺談vue中resetFields()使用注意事項,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • 尤大大新活petite-vue的實現(xiàn)

    尤大大新活petite-vue的實現(xiàn)

    打開尤大大的GitHub,發(fā)現(xiàn)多了個叫 petite-vue 的東西,Vue3 和 Vite 還沒學(xué)完呢,又開始整新東西了?本文就來介紹一下
    2021-07-07
  • vue-video-player 斷點續(xù)播的實現(xiàn)

    vue-video-player 斷點續(xù)播的實現(xiàn)

    這篇文章主要介紹了vue-video-player 斷點續(xù)播的實現(xiàn),本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-02-02
  • Vue自動生成組件示例總結(jié)

    Vue自動生成組件示例總結(jié)

    在Vue中,我們可以使用unplugin-generate-component-name插件自動基于目錄名稱生成組件名稱,這個插件使得在大型代碼庫中找到和管理組件更加容易和直觀,這篇文章主要介紹了Vue自動生成組件示例總結(jié),需要的朋友可以參考下
    2023-12-12
  • 分享7個成為更好的Vue開發(fā)者的技巧

    分享7個成為更好的Vue開發(fā)者的技巧

    作為使用Vue已經(jīng)很多年的人,特別是去年一直在使用?Vue3,因此,學(xué)到了很多東西。所以本文為大家準備了7個讓我們成為更好?Vue?開發(fā)者的技巧,需要的可以參考一下
    2022-06-06
  • vue arco.design錨點Anchor使用方式

    vue arco.design錨點Anchor使用方式

    這篇文章主要介紹了vue arco.design錨點Anchor使用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • vue實現(xiàn)圖片拖動排序

    vue實現(xiàn)圖片拖動排序

    這篇文章主要為大家詳細介紹了vue實現(xiàn)圖片拖動排序,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • 使用Vant如何實現(xiàn)數(shù)據(jù)分頁,下拉加載

    使用Vant如何實現(xiàn)數(shù)據(jù)分頁,下拉加載

    這篇文章主要介紹了使用Vant實現(xiàn)數(shù)據(jù)分頁及下拉加載方式。具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06

最新評論