CSS 전환으로 SVG 직선 애니메이션

Guylan GOD

선과 원을 같은 방식으로 이동하고 CSS로 전환에 애니메이션을 적용하고 싶습니다.
그것은 선이 아니라 원을 위해 작동합니다.

뭐가 문제 야 ?

const state = {
  x: 75,
  y: 75
};
const line = document.getElementsByTagName('line')[0];
const circle = document.getElementsByTagName('circle')[0];

setInterval(() => {
  state.x = Math.floor(Math.random() * 150);
  state.y = Math.floor(Math.random() * 150);
  line.setAttribute("x2", state.x);
  line.setAttribute("y2", state.y);
  circle.setAttribute("transform", `translate(${state.x} ${state.y})`);
}, 2000)
circle,
line {
  transition: all 1s ease;
}
<svg height="150" width="150" style="border: 1px solid black">
  <line 
    x1="0"
    y1="0"
    x2="75"
    y2="75"
    stroke="red"
  >
  </line>
  <circle 
    r="10"
    transform="translate(75 75)"
    fill="none"
    stroke="blue"
  >
  </circle>
</svg>

Alexandr_TT

원과 선을 동시에 애니메이션으로 만드는 가장 쉬운 방법은 원을 마커 로 사용하는 것 입니다.

이 경우 원은 항상 선에 연결되고 함께 애니메이션됩니다.

const state = {
  x: 75,
  y: 75
};
const line = document.getElementsByTagName('line')[0];
const circle = document.getElementsByTagName('circle')[0];

setInterval(() => {
  state.x = Math.floor(Math.random() * 150);
  state.y = Math.floor(Math.random() * 150);
  line.setAttribute("x2", state.x);
  line.setAttribute("y2", state.y);
 
}, 2000)
<svg height="160" width="160" style="border: 1px solid black"> 
<defs>
  <marker id="markEnd"  viewBox="0 0 22 22" refX="10" refY="10"  markerUnits="userSpaceOnUse" markerWidth="22" markerHeight="22">
  <circle r="10" cx="10" cy="10" fill="none"  stroke="blue" />
  </marker> 
</defs>
  <line 
    x1="0"
    y1="0"
    x2="75"
    y2="75"
    stroke="red" 
    marker-end="url(#markEnd)"
  >
  </line>
  
</svg>

최신 정보

줄을 경로 및 마커로 바꾸는 옵션 @AOD

const state = {
  x: 75,
  y: 75
};
const line = document.getElementsByClassName('line')[0];

setInterval(() => {
  state.x = Math.floor(Math.random() * 150);
  state.y = Math.floor(Math.random() * 150);
  line.setAttribute("d", `M 0 0 L ${state.x} ${state.y}`);
}, 2000)
path {
  transition: all 1s ease;
}
<svg height="160" width="160" style="border: 1px solid black"> 
<defs>
  <marker id="markEnd"  viewBox="0 0 22 22" refX="10" refY="10"  markerUnits="userSpaceOnUse" markerWidth="22" markerHeight="22">
  <circle r="10" cx="10" cy="10" fill="none"  stroke="blue" />
  </marker> 
</defs>
    <path
    class="line"
    d="M 0 0 L 75 75"
    stroke="red"
    fill="none"
    marker-end="url(#markEnd)"
    />
</svg>

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

SVG SMIL 애니메이션을 CSS 애니메이션으로 변환

분류에서Dev

SVG 직선 애니메이션

분류에서Dev

CSS 전환 애니메이션으로 인해 페이지에 잔여 경계선이 발생합니다.

분류에서Dev

svg.js로 개체의 곡선 모션 애니메이션

분류에서Dev

IE11에서 CSS로 SVG 경로 애니메이션

분류에서Dev

애니메이션 내 클립 경로 및 SVG 직사각형

분류에서Dev

애니메이션으로 CSS 변환 및 회전

분류에서Dev

CSS의 SVG 애니메이션

분류에서Dev

SVG 및 CSS 중력 애니메이션

분류에서Dev

CSS 및 SVG 애니메이션

분류에서Dev

애니메이션 또는 전환으로 SVG 로고의 크기 변경

분류에서Dev

SVG 애니메이션-중앙에서 SVG 용 CSS 호버 애니메이션

분류에서Dev

순수한 CSS로 선 그리기 애니메이션

분류에서Dev

분산 형 및 원으로 수직선 애니메이션-matplotlib

분류에서Dev

CSS 애니메이션 및 전환

분류에서Dev

CSS3-애니메이션 전환?

분류에서Dev

SVG 반전 애니메이션

분류에서Dev

애니메이션 SVG를 동영상으로 변환

분류에서Dev

SMIL 애니메이션으로 선을 그리는 방법 (CSS 아님)

분류에서Dev

CSS 애니메이션 : 전환이 역방향으로 작동하지 않음

분류에서Dev

CSS 애니메이션 : 전환이 역방향으로 작동하지 않음

분류에서Dev

화면 전체에 지속적으로 SVG 애니메이션

분류에서Dev

Javascript로 SVG 애니메이션

분류에서Dev

SVG 경로 애니메이션 문제

분류에서Dev

SVG 애니메이션 / 더티 경로

분류에서Dev

CSS "사전로드"애니메이션

분류에서Dev

CSS 애니메이션 변환 큐션

분류에서Dev

애니메이션 : 더 큰 직사각형 상자 내부의 자체 중심에서 svg 경로 회전

분류에서Dev

CSS 전환 애니메이션으로 생성 된 불필요한 공백

Related 관련 기사

뜨겁다태그

보관