svg实现文字笔画流动效果

背景:

前段时间着手某一项目时UI提出实现文字笔画流动效果的需求,故在github和gitee上寻找灵感,最后从一位学长的项目中找到了实现方法,感觉收获颇多,特此记录。


解决方案:

搭建svg基本的html结构:

<div class="container">
    <svg viewBox="0 0 1000 300">
      <symbol id="line-text">  <!--symbol用来创建模板,通过use实例化-->
        <text text-anchor="middle" x="50%" y="50%">ABCDEFG</text>
        <!--x和y指定锚点位置,text-anchor确定文本相对于锚点的对齐位置-->  
      </symbol>
      <!--以下四个use对应了每个文字中对应的四段虚线-->
      <use href="#line-text" class="text"></use>
      <use href="#line-text" class="text"></use>
      <use href="#line-text" class="text"></use>
      <use href="#line-text" class="text"></use>
    </svg>
  </div>  

通过css3动画实现文字笔画流动效果:

<style>
    .container {  /*svg外层容器*/
      height:150px;
      width:500px;
      margin:0 auto;
    }
    .text { /*内部填充fill和外轮廓stroke属于svg属性而非css,但css中text-fill开头和text-stroke开头的属性能够实现类似效果*/
      font-size: 140px;
      font-weight: bolder;
      fill: none;  /*文字内部填充为空*/
      stroke-width: 5;   /*外轮廓线的宽度*/
      stroke-dasharray: 0 240;  /*定义外轮廓虚线的长度和间隔的循环单位*/
    }

    /*定义动画*/
    @keyframes text1 {
      100% {
        stroke-dashoffset: 1000;
        stroke-dasharray: 60 180;
      }
    }
    @keyframes text2 {
      100% {
        stroke-dashoffset: 1060;
        stroke-dasharray: 60 180;
      }
    }
    @keyframes text3 {
      100% {
        stroke-dashoffset: 1120;
        stroke-dasharray: 60 180;
      }
    }
    @keyframes text4 {
      100% {
        stroke-dashoffset: 1180;
        stroke-dasharray: 60 180;
      }
    }

    /*调用动画*/
    .text:nth-child(4n + 1) {
      stroke: rgb(179, 157, 250);
      animation: text1 4s 1s ease-in-out forwards;
    }
    .text:nth-child(4n + 2) {
      stroke: rgb(198, 209, 79);
      animation: text2 4s 1s ease-in-out forwards;
    }
    .text:nth-child(4n + 3) {
      stroke: rgb(94, 167, 254);
      animation: text3 4s 1s ease-in-out forwards;
    }
    .text:nth-child(4n + 4) {
      stroke: rgb(107, 235, 203);
      animation: text4 4s 1s ease-in-out forwards;
    }
  </style>

学海无涯,长路漫漫啊

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: SVG是一种用于创建以可伸缩矢量图形为基础的图像的标准语言。它可以很好地实现管道流动效果。这一效果可以通过在SVG中使用路径和动画实现。首先,需要创建一条路径,它将表示管道。使用“path”元素来创建路径,并设置其“d”属性来定义其形状。接下来,可以使用“animateMotion”元素来创建动画,将一些物体沿着路径移动。如果需要一个永久的动画,可以将“animateMotion”元素嵌套在“animate”元素中,然后将“repeatCount”属性设置为“indefinite”。这样,物体将一直沿着路径移动。 为了实现流动效果,可以在“path”元素上设置“stroke-dasharray”属性为一些比较小的值,这将使路径看起来像是由一系列短划线组成。接着,使用“animate”元素来增加或减少“stroke-dashoffset”属性值,这将使短划线从路径起点处开始出现或消失,从而达到流动效果。可以使用CSS动画,也可以使用SMIL动画并嵌套在“path”元素中来实现这个效果。 综上所述,使用SVG可以很方便地实现管道流动效果,只需使用路径和动画即可创建一个流动的绘图元素。这样,不仅可以创建出非常生动的场景,而且可以在个人网站和企业网站中应用于动效设计,增加页面的精彩程度。 ### 回答2: 在SVG实现管道流动效果,通常需要使用动画和路径绘制技术。首先,我们需要创建一个管道的路径,可以使用路径指令(如M,L,C等)来绘制。接下来,我们可以使用动画技术来模拟流动效果,可以使用SMIL或JavaScript来实现动画。其中,SMIL是一种内置于SVG中的动画语言,可以使用它来设置动画的时长、延迟、重复等属性。在动画中,我们可以通过修改路径节点属性(例如d属性)来实现不同的状态转换,例如扩展、收缩、扭曲等。此外,我们还可以添加其他效果,如颜色、透明度、滤镜等,以增强动画效果。 总之,SVG可以让我们轻松实现流畅、动态的管道流动效果,同时还可以定制多种附加效果,以提高视觉冲击力和交互性。 ### 回答3: SVG是一种基于XML的矢量图形标准,可以实现各种形式的图形和动画效果。在SVG实现管道流动效果通常使用动画元素和路径元素。首先,我们需要定义一条路径来模拟管道,使用<path>元素创建一条路径,并设置其属性包括路径坐标和路径样式。接着,使用<animateMotion>元素在路径上移动的图形元素,比如矩形或者圆形,在元素上设置动画参数,包括动画路径、持续时间和重复次数等。最后,使用<animate>元素定义样式动画,比如变色、变形等效果,使得流动的矢量图形更加具有视觉冲击力。总之,SVG实现管道流动效果需要娴熟运用SVG的路径、元素和动画等多种技术手段,通过巧妙地组合和调整,才能达到最佳效果
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值