javascript - 使用 CSS3 或 jQuery 从图像中逐点动画

标签 javascript jquery css css-animations

我想对下图中的点进行动画处理,但我的问题是图像的 flex 部分(图像底部)。

animate dot after dot

开始时,所有的点都应该被隐藏,然后每个点都应该一个接一个地动画显示。

我有以下代码:

<div id="dots1"></div>

#dots1 {
    -moz-transition: height 1s linear;
    -o-transition: height 1s linear;
    -webkit-transition: height 1s linear;
    transition: height 1s linear;
    position: absolute;
    left: 50%;
    z-index: 1;
    margin: 0 0 0 -1px;
    width: 3px;
    height: 0;
    background: url(image/pic.png) 0 0 no-repeat;
}

最佳答案

您可以使用两个 SVG path 元素来实现此效果,如下面的代码片段所示。创建了您需要的两条曲线形式的路径。一个路径(位于底部)具有笔划的点图案(黑色)和另一个位于顶部的重复路径。设置重复路径笔划,使得路径的一个完整长度为白色,而另一个长度为透明。

在复制路径上添加了一个动画来动画描边的偏移。随着偏移动画化,笔画的白色部分慢慢移出视野,透明部分开始进入视野。随着白色部分开始消失,其下方的黑点开始显露出来。

一开始理解起来有点复杂,但是一旦你熟悉了 path , stroke-dasharraystroke-dashoffset它看起来很简单。

svg {
  height: 400px;
}
path {
  fill: none;
}
path.dot {
  stroke: black;
  stroke-dasharray: 0.1 4;
  stroke-linecap: round;
}
path.top {
  stroke: white;
  stroke-width: 2;
  stroke-dasharray: 250;
  stroke-linecap: round;
  animation: dash 15s linear forwards;
}
@keyframes dash {
  from {
    stroke-dashoffset: 0;
  }
  to {
    stroke-dashoffset: -250;
  }
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<svg viewBox='0 0 100 100'>
  <path d='M1,1 1,45 C1,60 30,60 30,75 C30,90 1,90 1,100' class='dot' />
  <path d='M1,1 1,45 C1,60 30,60 30,75 C30,90 1,90 1,100' class='top' />
</svg>

关于javascript - 使用 CSS3 或 jQuery 从图像中逐点动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36661126/

相关文章:

javascript - 如何在 jquery 中将值从一个 div 面板转移到另一个?

html - 水平列表项

javascript - 如何使用 CSS 和 JavaScript 使标签居中?

javascript - 如何阻止或编辑 native 浏览器表单弹出窗口/警报?

javascript - 使用纯 JS 滚动到 div(不是窗口)内的位置

javascript - 无法使用 twitter bootstrap 将焦点集中在 jQuery UI 模式内的文本框中

css - 如何在 joomla 模板中覆盖 CSS

javascript - 向对象添加新元素后,我不断收到空值

javascript - 使用 jquery 将元素附加到子元素

jquery - Bootstrap 3 的 Eonasdan DateTimePicker 不工作