网站首页 > 基础教程 正文
栗体 发自 凹非寺
量子位 报道 | 公众号 QbitAI
这个字体叫Leon Sans,表面看去平平无奇。
但事实上,它并不是普通的字体,体内蕴藏着魔力。
Leon Sans最特别的地方在于,字体是由代码构成的。有了这些代码,它可以随意变身。
比如,在暗夜里闪耀出七色的光影:
比如,在春天里枝繁叶茂,花也开好了:
比如,雨点打在地上汇成了河:
形状 (Shapes) 、效果 (Effects) 、动画 (Animations) ,特技丰盛任君选择。
魔法字体,是名叫Jongmin Kim的韩国小伙伴,为了庆祝宝宝降生而设计的。
不过,这不是独乐乐,是普天同庆:代码开源了,GitHub已经有6200星。
除此之外,有线上Demo可以玩耍。
都能怎么玩
最基本的操作,就是改变粗细 (Weight) 。
不止给标准字体调粗细,也给炫彩的艺术字调粗细:
然后,加大一点难度,让字体瑟瑟发抖。就是把线条变得曲折。
稍稍不平整,就会轻微的抖动。剧烈的弯折,就是触电了,烧糊了:
拔电,再也不动了。
不过还好,可以顺手把它埋在春天里 (误) :
当然,埋法不止这一种。
也可以把字母截断,变成粉红色的“多米诺骨牌”,每张牌的宽窄还能自由选择:
还可以让文字看上去,在平静中流淌:
线上Demo的功能一共十几种,大家也可以自己试一下:
如果,Demo还不能满足你的想象,那就去食用代码吧:
字体是代码组成的
文本有代码表示:text,字体大小有代码表示:size,粗细有代码:weight,字间距有代码表示:tracking……
另外,每一种特技都有各自的代码,也都有可以调节的参数。
比如,瑟瑟发抖叫做wave,抖动频率用fps来调。
只要用这一串代码,就可以把灵动的字体,在H5上显示了:
1let leon, canvas, ctx; 2 3const sw = 800; 4const sh = 600; 5const pixelRatio = 2; 6 7function init() { 8 canvas = document.createElement('canvas'); 9 document.body.appendChild(canvas); 10 ctx = canvas.getContext("2d"); 11 12 canvas.width = sw * pixelRatio; 13 canvas.height = sh * pixelRatio; 14 canvas.style.width = sw + 'px'; 15 canvas.style.height = sh + 'px'; 16 ctx.scale(pixelRatio, pixelRatio); 17 18 leon = new LeonSans({ 19 text: 'The quick brown\nfox jumps over\nthe lazy dog', 20 color: ['#000000'], 21 size: 80, 22 weight: 200 23 }); 24 25 requestAnimationFrame(animate); 26} 27 28function animate(t) { 29 requestAnimationFrame(animate); 30 31 ctx.clearRect(0, 0, sw, sh); 32 33 const x = (sw - leon.rect.w) / 2; 34 const y = (sh - leon.rect.h) / 2; 35 leon.position(x, y); 36 37 leon.draw(ctx); 38} 39 40window.onload = () => { 41 init(); 42};
如果想把生成过程的动画也显示出来,就加一行:
1<script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/2.1.3/TweenMax.min.js"></script>
GitHub项目页有个完整列表,各种功能的设置方法都能查到。说不定,排列组合会有惊喜呢。
大家也去玩一波吧。
GitHub传送门:
https://github.com/cmiscm/leonsans
官网传送门:
https://leon-kim.com/
— 完 —
诚挚招聘
量子位正在招募编辑/记者,工作地点在北京中关村。期待有才气、有热情的同学加入我们!相关细节,请在量子位公众号(QbitAI)对话界面,回复“招聘”两个字。
量子位 QbitAI · 头条号签约作者
?'?' ? 追踪AI技术和产品新动态
- 上一篇: 文字跳动特效表白网页 只有文字跳动的小视频做法
- 下一篇: 每天一个设计模式之命令模式 命令模式例子
猜你喜欢
- 2024-10-12 面试常客系列之跨域 java跨域面试题
- 2024-10-12 如何根治 Script Error. 如何根治神经性皮炎
- 2024-10-12 只用一个js文件,为你的网站加个黑暗模式
- 2024-10-12 闭包(一):闭包的9个应用场景 闭包一般用在什么地方
- 2024-10-12 LLM工程师应该如何防范提示注入?指导来了
- 2024-10-12 如何实现前端社交媒体分享功能 前端聊天功能如何实现
- 2024-10-12 「WWDC2018」-Web安全策略 web安全进阶
- 2024-10-12 「JS库」3个很棒的小众JavaScript库
- 2024-10-12 如何使用 如何使用验孕棒
- 2024-10-12 2 JavaScript核心 script标签 营养标签中的核心营养素
- 最近发表
- 标签列表
-
- jsp (69)
- pythonlist (60)
- gitpush (78)
- gitreset (66)
- python字典 (67)
- dockercp (63)
- gitclone命令 (63)
- dockersave (62)
- linux命令大全 (65)
- mysql教程 (60)
- pythonif (86)
- location.href (69)
- deletesql (62)
- c++模板 (62)
- linuxgzip (68)
- 字符串连接 (73)
- nginx配置文件详解 (61)
- html标签 (69)
- c++初始化列表 (64)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- console.table (62)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)