그에 따라 스크롤에서 점선 SVG 애니메이션을 얻는 방법은 무엇입니까?

지네 쉬 판찰

여기에 이미지 설명 입력

점선 svg의 스크롤 애니메이션에 적용 할 때마다 점선이없는 단순한 선으로 변환됩니다.

현재 작동중인 동일한 애니메이션을 원하지만 라인은 아래 예 dashed-line와 같이 표시됩니다 Svg Before animation.

// Get the id of the <path> element and the length of <path>
var triangle = document.getElementById("dashed-path");
var length = triangle.getTotalLength();

// The start position of the drawing
triangle.style.strokeDasharray = length;

// Hide the triangle by offsetting dash. Remove this line to show the triangle before scroll draw
triangle.style.strokeDashoffset = length;

// Find scroll percentage on scroll (using cross-browser properties), and offset dash same amount as percentage scrolled
window.addEventListener("scroll", myFunction);

function myFunction() {
var scrollpercent = (document.body.scrollTop + document.documentElement.scrollTop) / (document.documentElement.scrollHeight - document.documentElement.clientHeight);

  var draw = length * scrollpercent;
  
  // Reverse the drawing (when scrolling upwards)
  triangle.style.strokeDashoffset = length - draw;
}
.height-div{
        height: 500px; width: 100%; background:#eeeeee; 
    }
    .desktop-pattern-wrap{display: inline-block;vertical-align: top;width: 100%;}
    .desktop-pattern-wrap > div{float: left;width: 50%;}
<div class="desktop-pattern-wrap">
        <div class="desktop-pattern">
            <h2>Svg after animation</h2>
            <svg width="198px" height="1458px" viewBox="0 0 198 1458" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
                <defs>
                    <linearGradient x1="50%" y1="7.06935325%" x2="50%" y2="100%" id="linearGradient-1">
                        <stop stop-color="#DE1652" offset="0%"></stop>
                        <stop stop-color="#F37121" offset="50.2239948%"></stop>
                        <stop stop-color="#FBAB26" offset="100%"></stop>
                    </linearGradient>
                </defs>
                <g id="Homepage" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-dasharray="12,16" stroke-linejoin="round">
                    <g id="Desktop-Homepage-1" transform="translate(-646.000000, -825.000000)" stroke="url(#linearGradient-1)" stroke-width="4">
                        <g id="content" transform="translate(0.000000, 560.000000)">
                            <path d="M702,266 C682,424 795.064639,474.307498 716,600 C599,786 769,821 688,988 C548.560405,1275.48657 822.815807,1223 840.843207,1373 C858.870608,1523 605.485477,1528 687.610302,1728" id="dashed-path"></path>
                        </g>
                    </g>
                </g>
            </svg>
        </div>
        <div class="desktop-pattern-right">
            <h2>Svg Before animation</h2>
            <svg width="198px" height="1458px" viewBox="0 0 198 1458" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
                <defs>
                    <linearGradient x1="50%" y1="7.06935325%" x2="50%" y2="100%" id="linearGradient-1">
                        <stop stop-color="#DE1652" offset="0%"></stop>
                        <stop stop-color="#F37121" offset="50.2239948%"></stop>
                        <stop stop-color="#FBAB26" offset="100%"></stop>
                    </linearGradient>
                </defs>
                <g id="Homepage" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-dasharray="12,16" stroke-linejoin="round">
                    <g id="Desktop-Homepage-1" transform="translate(-646.000000, -825.000000)" stroke="url(#linearGradient-1)" stroke-width="4">
                        <g id="content" transform="translate(0.000000, 560.000000)">
                            <path d="M702,266 C682,424 795.064639,474.307498 716,600 C599,786 769,821 688,988 C548.560405,1275.48657 822.815807,1223 840.843207,1373 C858.870608,1523 605.485477,1528 687.610302,1728" id="dashed-path"></path>
                        </g>
                    </g>
                </g>
            </svg>
        </div>
    </div>
    <div class="height-div">
        
    </div>

Barhatsor

SVG를 추가 한 mask다음 경로 위에 그려서 수행 할 수 있습니다 .

var path = document.getElementById("thePath");
var mask = document.getElementById("maskPath");

var pathLength = path.getTotalLength();
var maskLength = 1050;

mask.style.strokeDashoffset = maskLength;

window.addEventListener("scroll", myFunction);

function myFunction() {
  var scrollpercent = (document.body.scrollTop + document.documentElement.scrollTop) / (document.documentElement.scrollHeight - document.documentElement.clientHeight);

  var draw = pathLength * scrollpercent;

  mask.style.strokeDashoffset = maskLength - draw;
}
<h1>Scroll down</h1>
<svg width="198px" height="1458px" viewBox="0 0 198 1458">
  <defs>
    <linearGradient x1="50%" y1="7.06935325%" x2="50%" y2="100%" id="linearGradient-1">
    <stop stop-color="#DE1652" offset="0%"></stop>
    <stop stop-color="#F37121" offset="50.2239948%"></stop>
    <stop stop-color="#FBAB26" offset="100%"></stop>
    </linearGradient>
    <mask id="theMask" maskUnits="userSpaceOnUse">
      <path id="maskPath"
      d="M702,266 C682,424 795.064639,474.307498 716,600 C599,786 769,821 688,988 C548.560405,1275.48657 822.815807,1223 840.843207,1373 C858.870608,1523 605.485477,1528 687.610302,1728"
      fill="none"
      fill-rule="evenodd"
      stroke-dasharray="1637"
      stroke-dashoffset="1050"
      transform="translate(-646.000000, -825.000000)"
      stroke-width="4"
      stroke="#fff"/>
    </mask>
  </defs>
  <g id="content" mask="url(#theMask)">
    <path id="thePath"
      d="M702,266 C682,424 795.064639,474.307498 716,600 C599,786 769,821 688,988 C548.560405,1275.48657 822.815807,1223 840.843207,1373 C858.870608,1523 605.485477,1528 687.610302,1728"
      fill="none"
      fill-rule="evenodd"
      stroke-dasharray="12,16"
      transform="translate(-646.000000, -825.000000)"
      stroke-width="4"
      stroke="url(#linearGradient-1)"
    ></path>
  </g>
</svg>

Codepen 예

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

그에 따라 스크롤에서 점선 SVG 애니메이션을 얻는 방법은 무엇입니까?

분류에서Dev

중심점에서 svg 선을 애니메이션하는 방법은 무엇입니까?

분류에서Dev

matplotlib 애니메이션에서 점을 사라지게하는 방법은 무엇입니까?

분류에서Dev

matplotlib를 사용하여 Python에서 원의 원주를 따라 움직이는 여러 점을 애니메이션하는 방법은 무엇입니까?

분류에서Dev

SVG 경로에서 펄스 애니메이션을 만드는 방법은 무엇입니까?

분류에서Dev

시퀀스에서 svg 애니메이션 시간을 측정하는 방법은 무엇입니까?

분류에서Dev

Angular Component 메서드에서 SVG 애니메이션을 트리거하는 방법은 무엇입니까?

분류에서Dev

<mpath>에서 SVG 애니메이션의 이동 방향을 바꾸는 방법은 무엇입니까?

분류에서Dev

JS에서 마스크 SVG를 애니메이션하는 방법은 무엇입니까?

분류에서Dev

SVG 웨이브 이미지에 애니메이션을 적용하는 방법은 무엇입니까?

분류에서Dev

두 점 사이의 선에있는 모든 점을 따라 파이 게임을 그리는 방법은 무엇입니까?

분류에서Dev

각 호 비율에 따라 svg 원에 여러 호를 그리는 방법은 무엇입니까?

분류에서Dev

Three.js에서 직선을 따라 카메라를 이동하는 방법은 무엇입니까?

분류에서Dev

paper.js에서 베 지어 곡선 경로를 따라 개체를 애니메이션하는 방법은 무엇입니까?

분류에서Dev

선택한 옵션에 따라 인스턴스 메서드를 호출하는 방법은 무엇입니까?

분류에서Dev

iOS-선을 따라 지정된 거리에서 CGPoint를 얻는 방법은 무엇입니까?

분류에서Dev

SVG에서 S- 곡선을 그리는 방법은 무엇입니까?

분류에서Dev

스크롤 작업을 위해 SVG 애니메이션을 변환하는 방법은 무엇입니까?

분류에서Dev

Rails 점수에 따라 별을 채우는 방법은 무엇입니까?

분류에서Dev

값에 따라 숫자 이름을 얻는 방법은 무엇입니까?

분류에서Dev

iOS : 사인 곡선을 따라 이미지를 애니메이션하는 방법은 무엇입니까?

분류에서Dev

Unity 3D에서 애니메이션 곡선을 선형 보간하는 방법은 무엇입니까?

분류에서Dev

SVG에서 선의 일부를 그리는 방법은 무엇입니까?

분류에서Dev

조건에 따라 SQL 선택을 만드는 방법은 무엇입니까?

분류에서Dev

Dragcompleted에서 개체에 연결된 선을 애니메이션하는 방법은 무엇입니까?

분류에서Dev

줄거리에서 직선을 애니메이션하는 방법은 무엇입니까?

분류에서Dev

이미지에 슬라이드 업 애니메이션을 추가하는 방법은 무엇입니까?

분류에서Dev

matplotlib에서 스크롤되는 수직선을 애니메이션하는 쉬운 방법이 있습니까?

분류에서Dev

scrollview 애니메이션에 대해 뷰 스크롤을 만드는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    그에 따라 스크롤에서 점선 SVG 애니메이션을 얻는 방법은 무엇입니까?

  2. 2

    중심점에서 svg 선을 애니메이션하는 방법은 무엇입니까?

  3. 3

    matplotlib 애니메이션에서 점을 사라지게하는 방법은 무엇입니까?

  4. 4

    matplotlib를 사용하여 Python에서 원의 원주를 따라 움직이는 여러 점을 애니메이션하는 방법은 무엇입니까?

  5. 5

    SVG 경로에서 펄스 애니메이션을 만드는 방법은 무엇입니까?

  6. 6

    시퀀스에서 svg 애니메이션 시간을 측정하는 방법은 무엇입니까?

  7. 7

    Angular Component 메서드에서 SVG 애니메이션을 트리거하는 방법은 무엇입니까?

  8. 8

    <mpath>에서 SVG 애니메이션의 이동 방향을 바꾸는 방법은 무엇입니까?

  9. 9

    JS에서 마스크 SVG를 애니메이션하는 방법은 무엇입니까?

  10. 10

    SVG 웨이브 이미지에 애니메이션을 적용하는 방법은 무엇입니까?

  11. 11

    두 점 사이의 선에있는 모든 점을 따라 파이 게임을 그리는 방법은 무엇입니까?

  12. 12

    각 호 비율에 따라 svg 원에 여러 호를 그리는 방법은 무엇입니까?

  13. 13

    Three.js에서 직선을 따라 카메라를 이동하는 방법은 무엇입니까?

  14. 14

    paper.js에서 베 지어 곡선 경로를 따라 개체를 애니메이션하는 방법은 무엇입니까?

  15. 15

    선택한 옵션에 따라 인스턴스 메서드를 호출하는 방법은 무엇입니까?

  16. 16

    iOS-선을 따라 지정된 거리에서 CGPoint를 얻는 방법은 무엇입니까?

  17. 17

    SVG에서 S- 곡선을 그리는 방법은 무엇입니까?

  18. 18

    스크롤 작업을 위해 SVG 애니메이션을 변환하는 방법은 무엇입니까?

  19. 19

    Rails 점수에 따라 별을 채우는 방법은 무엇입니까?

  20. 20

    값에 따라 숫자 이름을 얻는 방법은 무엇입니까?

  21. 21

    iOS : 사인 곡선을 따라 이미지를 애니메이션하는 방법은 무엇입니까?

  22. 22

    Unity 3D에서 애니메이션 곡선을 선형 보간하는 방법은 무엇입니까?

  23. 23

    SVG에서 선의 일부를 그리는 방법은 무엇입니까?

  24. 24

    조건에 따라 SQL 선택을 만드는 방법은 무엇입니까?

  25. 25

    Dragcompleted에서 개체에 연결된 선을 애니메이션하는 방법은 무엇입니까?

  26. 26

    줄거리에서 직선을 애니메이션하는 방법은 무엇입니까?

  27. 27

    이미지에 슬라이드 업 애니메이션을 추가하는 방법은 무엇입니까?

  28. 28

    matplotlib에서 스크롤되는 수직선을 애니메이션하는 쉬운 방법이 있습니까?

  29. 29

    scrollview 애니메이션에 대해 뷰 스크롤을 만드는 방법은 무엇입니까?

뜨겁다태그

보관