如何延迟html / css加载,直到项目进入视口

问题描述 投票:0回答:1

我在图表上有一个动画,但是我希望CSS动画一旦进入用户视口就加载。当前,它是在页面加载时加载的,但这意味着一旦用户滚动到该部分,动画就已经发生了。

HTML和CSS可以在下面看到:

.chart[data-percent='100'] .outer {
  stroke-dashoffset: 0;
  -webkit-animation: show100 2s;
  animation: show100 2s;
}

.chart[data-percent='96'] .outer {
  stroke-dashoffset: 22;
  -webkit-animation: show96 2s;
  animation: show96 2s;
}

.chart[data-percent='77'] .outer {
  stroke-dashoffset: 123;
  -webkit-animation: show75 2s;
  animation: show75 2s;
}

.chart[data-percent='75'] .outer {
  stroke-dashoffset: 133;
  -webkit-animation: show75 2s;
  animation: show75 2s;
}

.chart[data-percent='52'] .outer {
  stroke-dashoffset: 257;
  -webkit-animation: show52 2s;
  animation: show52 2s;
}

.chart[data-percent='50'] .outer {
  stroke-dashoffset: 267;
  -webkit-animation: show50 2s;
  animation: show50 2s;
}

.chart[data-percent='25'] .outer {
  stroke-dashoffset: 401;
  -webkit-animation: show25 2s;
  animation: show25 2s;
}

@-webkit-keyframes show100 {
  from {
    stroke-dashoffset: 537;
  }
  to {
    stroke-dashoffset: 0;
  }
}

@keyframes show96 {
  from {
    stroke-dashoffset: 537;
  }
  to {
    stroke-dashoffset: 22;
  }
}

@keyframes show75 {
  from {
    stroke-dashoffset: 537;
  }
  to {
    stroke-dashoffset: 124;
  }
}

@-webkit-keyframes show52 {
  from {
    stroke-dashoffset: 537;
  }
  to {
    stroke-dashoffset: 257;
  }
}

@-webkit-keyframes show50 {
  from {
    stroke-dashoffset: 537;
  }
  to {
    stroke-dashoffset: 267;
  }
}

@keyframes show25 {
  from {
    stroke-dashoffset: 537;
  }
  to {
    stroke-dashoffset: 401;
  }
}
<div class="row stat-wheel">
  <div class="col-sm-4">
    <p class="stat-figure">52%</p>
    <figure class="chart" data-percent="52">
      <svg width="200" height="200">
        <circle class="outer" cx="95" cy="95" r="85" transform="rotate(-90, 95, 95)"/>
      </svg>
    </figure>
    <p class="white center">increase in sales generated through campaigns</p>
  </div>
  <div class="col-sm-4">
    <p class="stat-figure">77%</p>
    <figure class="chart" data-percent="77">
      <svg width="200" height="200">
        <circle class="outer" cx="95" cy="95" r="85" transform="rotate(-90, 95, 95)"/>
      </svg>
    </figure>
    <p class="white center">return on investment in the first 2 months</p>
  </div>
  <div class="col-sm-4">
    <p class="stat-figure">96%</p>
    <figure class="chart" data-percent="96">
      <svg width="200" height="200">
        <circle class="outer" cx="95" cy="95" r="85" transform="rotate(-90, 95, 95)"/>
      </svg>
    </figure>
    <p class="white center">increase in the quality of sales leads generated</p>
  </div>
</div>
javascript html css load viewport
1个回答
0
投票

您可以签出intersection observer api,它会告诉您元素何时在视口中可见。您可以听一下,然后开始制作动画。

© www.soinside.com 2019 - 2024. All rights reserved.