이 글은 SVG 동적 아이콘을 구현하는 방법을 공유합니다. 도움이 필요한 친구들이 참고할 수 있습니다.
원과 사각형을 그리는 방법은 무엇인가요? 색칠하는 방법? 이동하는 방법? 먼저 svg의 기본을 살펴보고, 위의 첫 번째 아이콘을 그려보겠습니다.
1. 기본 그래픽 요소
1 <!-- viewBox定义画布大小 width/height定义实际大小 --> 2 <svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="300" height="300" viewBox="0 0 300 300"> 3 4 <!-- 直线 (x1,y1)与(x2,y2)为两点坐标 --> 5 <line x1="0" y1="0" x2="250" y2="30" /> 6 7 <!-- 多边形 通过多个点的坐标形成封闭图形 --> 8 <polygon points="5,5 100,100 50,200" /> 9 10 <!-- 矩形 (x,y)为左上角起始点 --> 11 <rect x="100" y="100" width="120" height="100" /> 12 13 <!-- 圆形 (cx,cy)圆心点 r半径 --> 14 <circle cx="100" cy="50" r="40" stroke="black"/> 15 16 <!-- 文本 (x,y)左下角坐标 --> 17 <text x="0" y="20" style="font-size:16px;font-weight: bold">Try SVG</text>18 19 </svg>
svg 요소의 스타일은 태그의 속성으로 작성하거나 스타일에 작성할 수 있습니다. 몇 가지 주요 스타일 속성은 다음과 같습니다.
Stroke : 스트로크 컬러
스트로크 폭 : 스트로크 너비
스트로크-옵션 : 스트로크 투명도
필 : 채우기 색상, 배경
fill -불투명도: 채우기 색상의 투명도
transform: CSS3 변환과 유사한 그래픽 변환
참고: 변환은 기본적으로 원의 중심이나 다른 중심이 아닌 svg의 왼쪽 상단을 기준점으로 설정됩니다. 왼쪽 위 모서리는 svg 좌표계의 원점입니다. 변환 및 좌표계에 대해 알아보려면 여기를 참조하세요.
SVG에는
1 <svg width="80px" height="80px" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" preserveAspectRatio="xMidYMid"> 2 <g transform="translate(20 50)"> 3 <circle cx="0" cy="0" r="7" fill="#e15b64" transform="scale(0.99275 0.99275)" /> 4 </g> 5 <g transform="translate(40 50)"> 6 <circle cx="0" cy="0" r="7" fill="#f47e60" transform="scale(0.773605 0.773605)" /> 7 </g> 8 <g transform="translate(60 50)"> 9 <circle cx="0" cy="0" r="7" fill="#f8b26a" transform="scale(0.42525 0.42525)" /> 10 </g> 11 <g transform="translate(80 50)"> 12 <circle cx="0" cy="0" r="7" fill="#abbd81" transform="scale(0.113418 0.113418)" /> 13 </g> 14 </svg>
IV. 애니메이션 구현
svg의 애니메이션 효과는 애니메이션 태그 요소를 기반으로 합니다.
svg의 작성 방법은 매우 유연합니다. 스타일은 태그 속성으로 작성하거나 스타일에 작성할 수 있습니다. 애니메이션 태그는 xlink를 통해 요소를 지정하거나 애니메이션 요소 내에 작성할 수 있습니다. 다음은 animateTransform의 xlink 작성 방법을 보여줍니다.
<svg xmlns="http://www.w3.org/2000/svg"> <rect id="animateObject" x="20" y="20" width="50" height="50" fill="blue"></rect> <animateTransform xlink:href="#animateObject" <!-- 指定动画元素 --> attributeName="transform" <!-- 需要动画的属性名称 --> type="scale" <!-- 指定transform属性 --> begin="0s" <!-- 开始时间,即延迟 --> dur="3s" <!-- 动画时间 --> from="1" <!-- 开始值 --> to="2" <!-- 结束值 --> repeatCount="indefinite" <!-- 重复方式,indefinite无限重复 --> /> </svg>
위 예의 애니메이션은 A에서 B로의 전환입니다. 원활한 순환을 형성하려면 최소한 세 가지 핵심 지점을 정의해야 합니다. animateTransform은 점점 더 유연한 속성 설정을 지원합니다.
🎜🎜🎜values: 여러 키 포인트의 값, value="0;1;0"과 같은 from 및 to 대체 🎜keyTimes:跟values对应,各个点的时间点
calcMode:动画快慢方式。discrete
| linear
| paced
| spline
keySplines:设置运动的贝塞尔控制点,calcMode为spline时有效
对svg动画的更详细介绍,参考 这里 。
五、代码实例
circle画圆,fill着色,用g标签包裹并定位,transform设置初始形变,animateTransform设置动画。现在来看代码,相信不会再是一头雾水了:
<svg class="lds-message" width="80px" height="80px" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" preserveAspectRatio="xMidYMid"> <g transform="translate(20 50)"> <circle cx="0" cy="0" r="7" fill="#e15b64" transform="scale(0.99275 0.99275)"> <animateTransform attributeName="transform" type="scale" begin="-0.375s" calcMode="spline" keySplines="0.3 0 0.7 1;0.3 0 0.7 1" values="0;1;0" keyTimes="0;0.5;1" dur="1s" repeatCount="indefinite"></animateTransform> </circle> </g> <g transform="translate(40 50)"> <circle cx="0" cy="0" r="7" fill="#f47e60" transform="scale(0.773605 0.773605)"> <animateTransform attributeName="transform" type="scale" begin="-0.25s" calcMode="spline" keySplines="0.3 0 0.7 1;0.3 0 0.7 1" values="0;1;0" keyTimes="0;0.5;1" dur="1s" repeatCount="indefinite"></animateTransform> </circle> </g> <g transform="translate(60 50)"> <circle cx="0" cy="0" r="7" fill="#f8b26a" transform="scale(0.42525 0.42525)"> <animateTransform attributeName="transform" type="scale" begin="-0.125s" calcMode="spline" keySplines="0.3 0 0.7 1;0.3 0 0.7 1" values="0;1;0" keyTimes="0;0.5;1" dur="1s" repeatCount="indefinite"></animateTransform> </circle> </g> <g transform="translate(80 50)"> <circle cx="0" cy="0" r="7" fill="#abbd81" transform="scale(0.113418 0.113418)"> <animateTransform attributeName="transform" type="scale" begin="0s" calcMode="spline" keySplines="0.3 0 0.7 1;0.3 0 0.7 1" values="0;1;0" keyTimes="0;0.5;1" dur="1s" repeatCount="indefinite"></animateTransform> </circle> </g> </svg>
相关推荐:
위 내용은 SVG 동적 아이콘이 구현되는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!