子比官网同款动态Logo制作教程

前段时间发现子比官网的这个Logo是动态的,“B”的上下两个形状分别展示,然后“ZIBLL”带有笔画地呈现出来。接下来教各位朋友如何复刻一个这样的Logo。我把这个Logo扒下来发现是SVG的,SVG相较于GIF有两个好处,一是远比GIF小,子比官网这个Logo不到10KB,而相同清晰度与流畅度的GIF绝对无法做到这么小;二是无损,SVG本身就是矢量图,无论放多大都不会出现一点锯齿。不过想要做这个要花费不少心思(或者说其实很简单但是我没找到更简单的方法),没耐心的朋友不用试了(不如PPT录屏转GIF)。找站长50块钱代做也可以。

关于代做这件事,我想要补充一下:其实我目的是在于说这篇文章各位能看懂,就自己亲手做,没必要让别人来,自己做更能理解其中的意义,做其他图标也能够自己搞定,难道说你建设了五个站,都想弄个动态logo,然后找我两百多画五个?你还不如自己学了自己动手丰衣足食。 我的初衷是认为肯定有人会觉得“50太贵了,还不如我自己亲手做”,并不是真的收50,要是我心情好或者说比较简单免费帮你做都可以

成品演示:

下载图标
海枫筑梦计划Logo.svg
svg文件
10.7K

 

教程开始

需要自备一张SVG矢量Logo和Ai(adobe画矢量图那个),以及一个代码编辑器VS Code(其他的也行,推荐在里面装个SVG插件)

屏幕截图 2024-07-07 022901

我们先来分析一下其中的代码结构:

第一行是xml头文件,不需要管它;

第二行以下是svg内容,后面跟随的viewBox里面有几个参数,其中viewBox="0 0 295.52155 92.399581" 代表整个SVG的可见内容范围,xmlns和xmlns:svg不用管,width="300" height="92.3996"分别代表整个图片的宽度和高度。

第三行开始就是<style>这段css以及<g>的主图像文件。我们先看<g>中zibll-icon这个class:<path class="zibll-icon" d="......" />其中class代表每一个元素的名字,d代表这个元素的描点坐标。不考虑改名字的话我们需要改动的就是d中的内容。将你自备的SVG打开,里面内容大致也有类似的内容,它们都以m/M开头,以z/Z结尾。我们先删掉d中的值(不要删掉了d=""),你会发现图片只剩下了下面那部分:

屏幕截图 2024-07-07 191700

然后打开你自己的SVG文件,它大概长这个样子:

屏幕截图 2024-07-07 023853

如果有g=””你就复制g的值,没有的话应该就是point,复制point就行。把复制好的内容粘贴到zibll-icon的g那里,可以看到子比的图案Logo被替换成了你自己的Logo:

屏幕截图 2024-07-07 193928

如果你图案logo中没有更多的元素可以把zibll-icon p-2直接删了,上面的css那里也要删掉:

屏幕截图 2024-07-07 192055

或者说你logo中有更多的元素,那就加class,css那里复制粘贴改个名字就OK。

接下来是右侧标题的绘制。这一步才是真正的煎熬,如果你不希望这么麻烦,在css那里直接复制zibll-url的效果就可以,否则请根据想象绘制坐标:

坐标绘制的话,可以想象一下平面直角坐标系(学过CNC数控车床加工的朋友很容易上手这个),但请注意定位原点不在画板原点处。具体内容可以参考页面顶部的演示。其中字母内容示意如下:

1. **m (moveto)**: 移动到指定的坐标位置。相对位置移动。
2. **M (Moveto)**: 移动到指定的坐标位置。绝对位置移动。
3. **l (lineto)**: 从当前位置绘制一条直线到指定的相对坐标。
4. **L (Lineto)**: 从当前位置绘制一条直线到指定的绝对坐标。
5. **c (curveto)**: 绘制三次贝塞尔曲线,使用相对坐标。
6. **C (Curveto)**: 绘制三次贝塞尔曲线,使用绝对坐标。
7. **H (horizontal lineto)**: 从当前位置绘制一条水平线到指定的 x 坐标。
8. **V (vertical lineto)**: 从当前位置绘制一条垂直线到指定的 y 坐标。
9. **z 或 Z (closepath)**: 关闭路径,绘制一条从当前点到起始点的直线。

1. **rx**:椭圆弧的 x 轴半径。
2. **ry**:椭圆弧的 y 轴半径。
3. **x-axis-rotation**:椭圆弧相对于 x 轴的旋转角度(度)。
4. **large-arc-flag**:大弧标志,取值为 `0` 或 `1`,决定是否绘制大于或小于 180 度的弧:
   - `0` 表示小弧。
   - `1` 表示大弧。
5. **sweep-flag**:弧线方向标志,取值为 `0` 或 `1`,决定弧线是顺时针还是逆时针绘制:
   - `0` 表示逆时针。
   - `1` 表示顺时针。
6. **dx,dy**(或 x,y):相对(或绝对)终点坐标。

比如说我想要画一个我Logo标题想要写个单字符长宽均为100的HEYFUN,那么首先就要把每个笔画的坐标想好。这里以“H”举例:

屏幕截图 2024-07-07 025451

然后就是参考笔画,首先我们需要将画笔移动到原点,就要用命令M(绝对位置移动),移动到0,0的话代码就是“M 0,0”

然后H的第一笔是向下移动,我们需要用到命令v画一条垂直方向的线。图中需要从0,0画到0,-100的话代码就是”v 100″

然后需要移动到0,-50,代码是“M 0,-50”。

然后H的第二笔是向右移动,我们需要用到命令h画一条水平方向的线。图中需要从0,-50画到100,-50的话代码就是”h 100″

经过上述代码不难得出总代码为“M 0,0 v 100 M 0,-50 h 100 M 100,0 h 100 z”(结尾最好加个z,用于闭合)

把代码填到zibll-z-1就可以完成修改:

屏幕截图 2024-07-07 193928

其余字母不赘述。

 

接下来是url部分,打开Ai然后新建一个网页画布(1366×768),然后新建文字,里面写上你的链接:

屏幕截图 2024-07-06 182206

如果是上面的那个主标题,推荐字体大小144px,副标题推荐120px,双行副标题推荐72px。

然后点击左上角-导出-导出为,选择svg,然后弹出的参数窗口如下配置,不需要保存:

屏幕截图 2024-07-06 182437

小数千万不要改成0,否则打开的svg会是一片空白。

不要点确定,然后点击“显示代码”,将新窗口的内容复制下来,egde搜索xml格式化:

屏幕截图 2024-07-06 182718

点击xml,然后将内容粘贴进去,点击格式,再复制,vscode新建一个标签页,粘贴下来:

屏幕截图 2024-07-06 182934

麻烦的部分来了:你需要把所有d的值拼合在一起,也就是说只留下一个path class。

具体操作如下:把第一个d的值的末尾的z去掉,然后加一个空格,将第二个d的值剪切到第一个d值的末尾,然后删掉z,再复制第三个d的值,剪切插入,再删掉,依此类推,添加完最后一个值后,记得补一个Z上去,否则在某些浏览器中会显示错误。删掉多余的path class,如下:

屏幕截图 2024-07-06 183508

后续我会做一个脚本,一键将这个xml中的d值拼合。

然后复制d的值,将zibll-url替换掉就OK。

关于位置偏移问题:

如果出现位置偏移问题,比如图中的标题出现在了错误的位置,太过于偏下了:

屏幕截图 2024-07-06 183656

这种情况可以用transform=”translate(x y)”来解决。加在class名后面就OK:

<g class=”heyfun-stroke” transform=”translate(746.46 -588.78)”><path class=”heyfun-h-1″ d=”m-265 680v178″/>
坐标根据你自己的需要进行调整。

CSS修改:

我们翻到代码前面,找到这一段:

.zibll-icon {
         fill: #1fbc45;
         stroke: #1fbc45;
         fill-opacity:0;
         stroke-width: 5px;
         stroke-dasharray: var(--s-dd);
         stroke-dashoffset: var(--s-dd);
         animation: logo-animation 1.3s ease-in-out forwards;
         animation-delay: var(--a-d);
         --s-dd: 1150;
         --s-ddo:-1150;
      }

这是子比图案Logo的样式。其中fill代表填充颜色,stroke代表描边颜色。fill-opacity填写0代表淡入,不为0则代表先淡出后淡入;stroke-width代表描边宽度。而animation中的1.3代表动画速度,你可以改成5之后看效果,明显变慢了,如果你改成零点几的话,前面那个0可以省略(比如你要改成0.5秒,写.5即可)其他没必要修改(我不会)

然后下面还有一段:

.zibll-icon.p-2 {
         --a-d: .6s;
         --s-dd: 1050;
         --s-ddo:-1050;
      }

重点需要改的就是–a-d是动画延迟时间,意思就是说你打开这张图片后多久开始播放这段动画。下面这两个参数要着重修改,你可以根据图案Logo的描边改大改小这两个数值,改太大会导致没有描边动画,改太小会导致描边变虚线。

再往下翻,有这样一个函数:

@keyframes logo-animation {
         60%{
            fill-opacity:0;
            stroke-dashoffset:0;
         }
         to{
            fill-opacity:1;
            stroke-dashoffset:0;
         }
       }

其中60%用来单独控制描边动画播放速度剩下这两个我还在研究

关于SVG的压缩(可选,没太大必要)

做好以后,我们可以通过压缩代码来实现降低文件大小。降低的大小可以微乎其微,但是可以加大代码的阅读难度,让别人更难二开你的这个图片。

正如前文所说,我们这个Logo是xml格式的,而其中又带一段css。我们需要先压缩css,然后再压缩xml。

把css内容复制了(子比原版logo在第5行到第94行),随便一个css压缩网站压缩一下:

屏幕截图 2024-07-06 184620

如果你没有改动子比原版css,可以直接用下面这段已经压缩好的:

.zibll-stroke{fill:none;stroke:#f5f5f5;stroke-width:30;stroke-dasharray:none;stroke-opacity:1}.zibll-stroke path{stroke-dasharray:var(--s-dd);stroke-dashoffset:var(--s-dd);animation:stroke-animation .3s ease-in-out forwards;animation-delay:var(--a-d)}.zibll-z-1{--s-dd:300}.zibll-z-2{--s-dd:300;--a-d:.25s}.zibll-i{--s-dd:180;--a-d:.4s;animation-duration:.17s !important}.zibll-b{--s-dd:880;--a-d:.45s;animation-duration:.8s !important}.zibll-l-1{--s-dd:350;--a-d:1s;animation-duration:.4s !important}.zibll-l-2{--s-dd:350;animation-duration:.5s !important;--a-d:1.45s}@keyframes stroke-animation{to{stroke-dashoffset:0}}.zibll-url{fill:#f5f5f5;opacity:0;animation:url-animation .5s ease-in-out forwards;animation-delay:1.6s;fill-opacity:.8}@keyframes url-animation{to{opacity:.8}}.zibll-icon{fill:#1fbc45;stroke:#1fbc45;fill-opacity:0;stroke-width:5px;stroke-dasharray:var(--s-dd);stroke-dashoffset:var(--s-dd);animation:logo-animation 1.3s ease-in-out forwards;animation-delay:var(--a-d);--s-dd:1150;--s-ddo:-1150}.zibll-icon.p-2{--a-d:.6s;--s-dd:1050;--s-ddo:-1050}@keyframes logo-animation{60%{fill-opacity:0;stroke-dashoffset:0}to{fill-opacity:1;stroke-dashoffset:0}}

然后粘贴回原来的地方。接下来压缩xml,也是随便一个xml压缩网站,最终得到这张只有1行代码的图片:

屏幕截图 2024-07-06 184925

代码展示:

屏幕截图 2024-07-06 185014

教程很长,大佬们请轻喷~

版权声明

   站内部分内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供网络资源分享服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请 联系我们 一经核实,立即删除。并对发布账号进行永久封禁处理。在为用户提供最好的产品同时,保证优秀的服务质量。


本站仅提供信息存储空间,不拥有所有权,不承担相关法律责任。
© 版权声明
THE END
喜欢就支持一下吧
点赞5赞赏 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容