時隔三年的更新??!支持vue3
-
支持vue3!?。?!更新依賴后,僅
bgColor原來的.sync修飾符需改為vue3寫法v-model:bgColor; - 新增屬性
isClearBgColor,默認值true, 清空畫布時(reset)是否同時清空設置的背景色(bgColor) ; - 直接
npm install vue-esign@latest --save即可,對vue2版本無任何影響;
功能
- 兼容 PC 和 Mobile;
- 畫布自適應屏幕大小變化(窗口縮放、屏幕旋轉時畫布無需重置,自動校正坐標偏移);
- 自定義畫布尺寸(導出圖尺寸),畫筆粗細、顏色,畫布背景色;
- 支持裁剪 (針對需求:有的簽字需要裁剪掉四周空白)。
- 導出圖片格式為
base64; - 示例demo
安裝
npm install vue-esign --save
使用
- 全局使用 、局部
// 全局 vue2 main.js
import vueEsign from 'vue-esign'
Vue.use(vueEsign)
// 全局vue3 main.js
import { createApp } from 'vue'
import App from './App.vue'
import vueEsign from 'vue-esign'
const app = createApp(App)
app.use(vueEsign)
// 局部
import vueEsign from 'vue-esign'
components: { vueEsign }
- 頁面中使用
必須設置ref,用來調用組件的兩個內置方法reset()和generate()
無需給組件設置 style 的寬高,如果畫布的 width屬性值沒超出父元素的樣式寬度,則該組件的樣式寬度就是畫布寬度,超出的話,組件樣式寬度則是父元素的100%; 所以只需設置好父元素的寬度即可;
<!-- vue2 -->
<vue-esign ref="esign" :width="800" :height="300" :isCrop="isCrop" :lineWidth="lineWidth" :lineColor="lineColor" :bgColor.sync="bgColor" />
<!-- vue3 -->
<vue-esign ref="esign" :width="800" :height="300" :isCrop="isCrop" :lineWidth="lineWidth" :lineColor="lineColor" v-model:bgColor="bgColor" />
<!-- isClearBgColor為false時,不必再給bgColor加sync修飾符或v-model -->
<button @click="handleReset">清空畫板</button>
<button @click="handleGenerate">生成圖片</button>
data () {
return {
lineWidth: 6,
lineColor: '#000000',
bgColor: '',
resultImg: '',
isCrop: false
}
},
methods: {
handleReset () {
this.$refs.esign.reset()
},
handleGenerate () {
this.$refs.esign.generate().then(res => {
this.resultImg = res
}).catch(err => {
alert(err) // 畫布沒有簽字時會執(zhí)行這里 'Not Signned'
})
}
}
- 說明
| 屬性 | 類型 | 默認值 | 說明 |
|---|---|---|---|
| width | Number | 800 | 畫布寬度,即導出圖片的寬度 |
| height | Number | 300 | 畫布高度,即導出圖片的高度 |
| lineWidth | 4 | Number | 畫筆粗細 |
| lineColor | String | #000000 | 畫筆顏色 |
| bgColor | String | 空 | 畫布背景色,為空時畫布背景透明,<br />支持多種格式 '#ccc','#E5A1A1','rgb(229, 161, 161)','rgba(0,0,0,.6)','red' |
| isCrop | Boolean | false | 是否裁剪,在畫布設定尺寸基礎上裁掉四周空白部分 |
| isClearBgColor | Boolean | true | 清空畫布時(reset)是否同時清空設置的背景色(bgColor) |
兩個內置方法,通過給組件設置 ref 調用:
清空畫布
this.$refs.esign.reset()
生成圖片
this.$refs.esign.generate().then(res => {
console.log(res) // base64圖片
}).catch(err => {
alert(err) // 畫布沒有簽字時會執(zhí)行這里 'Not Signned'
})
有任何問題請到此提issue 倉庫地址

演示.gif
版權聲明:本文原創(chuàng),轉載請注明出處 http://www.itdecent.cn/p/cfb9d5998cd6