H5 핸드메이드 전자 서명 실현
4151 단어 webapp
export default {
//
name : 'digitaSign',
data() {
return{
imgsrc:""
}
},
mounted() {
let vm = this;
vm.digitaSignType = vm.$route.query.type;
this.$nextTick(()=>{
setTimeout(() => {
vm.initCanvas()
},100)
})
},
methods: {
initCanvas(){
let rate = 2;
let oCanvas = document.getElementById("signCanvas");
oCanvas.width = oCanvas.offsetWidth*rate;
oCanvas.height = oCanvas.offsetHeight*rate;
let cxt = oCanvas.getContext("2d");
cxt.fillStyle = "#fff";
cxt.fillRect(0, 0, oCanvas.width, oCanvas.height);
cxt.lineWidth = 2*rate;
cxt.strokeStyle="#101010";
let posX = 0; //x
let posY = 0; //y
let position = null;
let parentPosintin = oCanvas.getBoundingClientRect()
//
oCanvas.addEventListener("touchstart", function(event) {
posX = event.changedTouches[0].clientX;
posY = event.changedTouches[0].clientY - parentPosintin.top + 0.5;
cxt.beginPath();
cxt.moveTo(posX*rate, posY*rate);
});
//
oCanvas.addEventListener("touchmove", function(event) {
optimizedMove(event);
});
let requestAnimationFrame = window.requestAnimationFrame;
let optimizedMove = requestAnimationFrame ? function(e){
requestAnimationFrame(function(){
move(e);
});
} : move;
function move(event){
posX = event.changedTouches[0].clientX + 0.5;
posY = event.changedTouches[0].clientY - parentPosintin.top + 0.5;
cxt.lineTo(posX*rate, posY*rate);
cxt.stroke();
}
},
//
handelClearEl() {
let oCanvas = document.getElementById("signCanvas");
let cxt = oCanvas.getContext("2d");
cxt.clearRect(0, 0, oCanvas.width, oCanvas.height);
},
//
saveImage() {
let oCanvas = document.getElementById("signCanvas");
let imgBase64 = oCanvas.toDataURL();
this.imgsrc = imgBase64;
if(this.digitaSignType == "partyA"){
this.$store.commit("SET_PAERT_A_IMG", imgBase64)
}else{
this.$store.commit("SET_PAERT_B_IMG", imgBase64)
}
mui.back();
}
}
}
가로스크린의 실현
if (/(iPhone|iPad|iPod|iOS)/i.test(navigator.userAgent)) {
oCanvas.width = oCanvas.offsetWidth*rate;
oCanvas.height = oCanvas.offsetHeight*rate;
} else if (/(Android)/i.test(navigator.userAgent)) {
//Android
oCanvas.width = oCanvas.offsetHeight*rate;
oCanvas.height = oCanvas.offsetWidth*rate;
}
ps: 느낌이 좀 이상해요. 가로화면 이후 애플 핸드폰은 아무런 변화가 필요 없어요. 안드로이드 핸드폰은 높이를 넓이에 줘야 해요. 무슨 이유인지 모르겠지만 이렇게 하면 효과가 있어요.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
단 3단계로 웹 앱에 다크 모드를 빠르게 추가하는 방법다크 모드는 멋지고 날렵하며 이제 우리 앱의 필수 요소가 되었습니다. 모든 최신 앱에는 이 기능이 있으며 거의 85%의 사용자가 이 기능을 선호합니다. 이 게시물에서는 웹 앱에서 을 사용하여 다크 모드의 빠른 구현을...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.