SVG에서 플레이하기 위해 Vue.js 사용
SVG 초보자가 SVG에서 놀고있는 기록입니다.
Vue를 사용하면 상태 관리가 간단하고 SVG를 작성하는 데 집중할 수있었습니다.
배경
어드벤트 캘린더 첫날의 테두리를 확보해, SVG로 2018년 Vue 캘린더를 북돋울 것이다! 라고 생각하고 있습니다만, 미완성 때문에, Vue 에 관한 정보는 서서히 가볍게 기재하겠습니다.
다음은 GitHub의 코드와는 다르지만 원래의 생각을 조금 기록해 둡니다.
<polygon>의 points를 배열에서 문자열로
<polygon>
에서 사각형을 지정하려면 다음과 같이 "0,0 100,0 100,100 0,100"
를 씁니다.<polygon points="0,0 100,0 100,100 0,100"></polygon>
points
를 Vue 로 조작할 수 있도록(듯이) 하기 위해서, 다음과 같이 재기록합니다.<polygon :points="points"></polygon>
이
points
를 JavaScript에서 문자열로 유지하지만 원래 데이터 (pointsArray
)는 배열로 유지됩니다. 앞으로 포인트를 늘리거나 변경할 수 있도록 하는 것이 목적으로 배열로 하고 있습니다.배열의
pointsArray
에서 문자열의 points
로 좋은 느낌으로 변환하고 있습니다. data() {
return {
pointsArray: [[0, 0], [100, 0], [100, 100], [0, 100]],
}
},
computed: {
points() {
return this.pointsArray.join(' ') // "0,0 100,0 100,100 0,100"
}
}
이제 포인트를 늘릴 때는
pointsArray
를 조작하면 자동으로 points
도 변경되어 좋은 느낌이 들었습니다.SVG의 <text>를 다시 그리지 못하는 문제
msg 라고 하는 데이터가 존재해, 다음과 같이 SVG 로 렌더링 하려고 하고 있는 경우,
msg
의 변경시에 다시 렌더링 되지 않는 문제가 있었습니다.<text>{{ msg }}</text>
이 문제를 해결하기 위해 watch를 사용하여
msg
변경시 빈 문자열을 한 번 할당합니다.<text>{{ text }}</text>
watch: {
msg(val) {
this.text = ''
this.$nextTick(() => {
this.text = val
})
}
}
향후 업데이트 예정
<linearGradient>
<pattern>
<mask>
<clipPath>
etc 라이센스 정보
아직 어떤 라이선스로 할지 결정하고 있지 않습니다만, 앞으로 소재 서비스를 이용해 텍스처를 추가하려고 생각하고 있으므로, 거기에 맞춘 라이선스가 된다고 생각합니다.
Reference
이 문제에 관하여(SVG에서 플레이하기 위해 Vue.js 사용), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/akifo/items/5ccc021861554e2537cc텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)