🗒️原生js实现弧形文字效果
2024-3-5
| 2024-3-19
0  |  0 分钟
type
status
date
slug
summary
tags
category
icon
password
😀
前言: 不使用插件实现滑块控制弧形文本
 
 

📝 主旨内容

1.要求

具体配合视频的文字版本需求是这样的:往上卷曲是以这行字体上边缘线来做卷曲,左右往上卷曲。卷曲角度是拖拉杆参数决定,卷曲最大是360.和-360。简单说就是文字的弧长不变,往上往下弯曲
notion image

2.拆解

  1. 滑块控制-100到100,为0时水平,为100或-100时是向上或向下的圆形,当一条直线逐渐卷曲成一个圆形时可以视作一条弧,这个弧所对应的圆心角不断的增大,从无穷接近于0增大到360°。
  1. 滑块控制圆心角,把360°拆分成100份,这样控制才平滑;
  1. 弧长就是文字总长,弧长不变,弧长=圆心角*半径,可以计算出半径,随后由半径推出每个字体的偏转角度;

2.实现

1.将输入的滑块值进行转换
2.将元素拆分成span元素,计算文字总长
3.计算计算圆半径,计算偏移和旋转角度
计算偏移和旋转角度这里我是参考的circletype.js这个库,但是里面有坑,此处不表,后来我自己写了一个,可能兼容性不是好,只适用于所有文字大小相等的情况,如出现中英文混杂请修改rotations这个数组,逻辑就是以所有文字这条线的中点,向左向右去增加或者减少单个文字的旋转角度。
4.遍历span元素,去进行效果渲染
这里也是借鉴的circletype,根据自身情况进行调整。
 
 
 

🤗 实现效果和总结

notion image
贴一个所有代码合并起来的效果,点击传送门跳转codepen进行调试摸索学习 → 传送门

📎 参考文章

 
前端
  • JS
  • CSS
  • HTML
  • Linux学习大坝监测模块
    Catalog