Motion:让动画更简单、更轻量、更强大

在现代网页设计中,动画不仅仅是一种装饰,它们可以极大地提升用户体验,使界面更加生动和直观。

今天,我要向大家推荐一个现代的动画库—— Motion,它专为 JavaScript 和 React 设计,不仅完全免费和开源,而且体积小巧、性能卓越。

Motion 是一个现代的动画库,它以其轻量级和高性能而闻名。

以下是 Motion 的一些亮点:

  • 完全免费和开源:Motion 完全免费使用,并且是开源的,遵循 MIT 许可证。
  • 体积小巧:animate 模块比 GSAP 的同等功能小 90%,scroll 模块小 75%。
  • 生产就绪:用 TypeScript 编写,拥有广泛的测试覆盖。
  • 混合引擎:结合了 JS 动画的灵活性和硬件加速的性能。

官方网站:https://motion.dev/

要在你的项目中使用 Motion,你可以通过 npm 或 yarn 来安装:

Motion 的使用非常简单,以下是一些基本的用法示例。

首先,你需要引入 Motion 库:

然后,你可以创建一个简单的动画:

这段代码创建了一个简单的淡入效果。

Motion 还支持基于滚动的动画:

这段代码创建了一个基于滚动位置的弹簧动画。

Motion 是一个强大而灵活的动画库,它不仅能够提升你的网站或应用的用户体验,而且易于学习和使用。

无论你是动画新手还是专业人士,Motion 都能满足你的需求。

那些让人拍案叫绝的小技巧(前端冷知识)

前端世界日新月异,总有一些小技巧能让人眼前一亮。今天就来盘点那些让人拍桌叫绝的前端冷知识,或许它们就是你日常开发中的救命稻草。

需要一个完全不可触摸的元素?pointer-events: none 了解一下。这个属性能让元素直接从鼠标的感知范围中蒸发,点击、悬停完全无效,但视觉上仍然健在。

用法:

场景:

  • 覆盖层不影响底层操作
  • 实现酷炫的“幽灵按钮”效果

厌倦了手写 N 行 CSS 来自定义浏览器表单控件的颜色?accent-color 让你只需一句代码,轻松调整控件的配色风格:

效果:

  • 单选框、复选框、进度条自动焕然一新。

如果你的动画卡成了 PPT,可以试试 will-change。它能提前告知浏览器“我要动了,快点优化吧”:

小心使用!因为它会消耗更多内存,别滥用哦。

为了节省性能,content-visibility 可以让未出现在视口中的元素不参与渲染:

实测对长列表、复杂页面有奇效!

还在写手动滚动的 JS 逻辑?其实只需要:

点击锚点链接时,自动实现丝滑滚动效果。

如果你想实现带提示的输入框,却又不想写复杂的 JavaScript,那 HTML5 的 datalist 来救场了:

简直是贫民窟前端的福音。

:has() 是 CSS 4 的黑科技,能让父级根据子级的状态来改变样式:

浏览器支持有限,但前景一片光明!

想实现一个只在滚动到某处时才“粘住”的效果?sticky 可比 fixed 更听话:

用于表头、导航栏再合适不过。

想让字体大小自适应,但又不想太大或太小?用它设置自适应大小再也不怕翻车了

这比写一堆媒体查询优雅多了。

还在用正则格式化日期或金额?别折腾了,Intl 自带标准 API:

国际化从未如此简单。

为避免变量未定义导致的灾难,var() 提供了默认值功能:

优雅退化,何乐不为?

想给用户一个神奇体验?试试这个:

整个页面都变成可编辑状态,你就是 DOM 的上帝。

调试复杂对象时,用 console.table():

表格展示数据,清晰又美观。

需要在页面关闭前发送数据?

它是异步的,比传统的 fetch 更适合这种场景。

想要一个完美的 16:9 容器?不用再算宽高比了:

还在用 ::selection 调色的你可能不知道,caret-color 可以直接改变输入框光标的颜色!

下一次产品提光标颜色需求时,微微一笑:\”这,还不是分分钟的事儿。\”

将对象转为二维数组再转回对象?没问题,Object.entries 和 Object.fromEntries 简直是形影不离的双胞胎。

有了它俩,JSON 的增删改查都多了一种优雅的实现。

你以为 display 只有 block、flex?错了!contents 能让元素只存在于 DOM 中,而不存在于布局中。

这个属性太酷了,简直是前端里的隐身术!

判断你的代码是否运行在 HTTPS 环境中?直接用 isSecureContext!

还在为滚动到某个元素时太 \”贴脸\” 而烦恼?scroll-margin 轻松解决:

终于可以和 JS 的 \”强行滚动\” 说再见了!

比 || 更智能,因为它只对 null 和 undefined 生效。

\”我只想取消请求,怎么就这么难?\” 的时代结束了!

这才是真正的请求管理,让你的网络请求变得更优雅。

响应式设计不一定要写死在 CSS 里,matchMedia 让 JS 也能监听媒体变化:

表单控件的风格化从未如此简单!

还记得以前为了定制 checkbox 写的那一堆 JS 吗?忘掉它吧!

复制粘贴不需要再靠第三方库,现代浏览器统统支持:

简洁、强大,这功能迟来的让人心疼!

按需加载代码,让你的应用更轻量化。

不只奇数、偶数,nth-of-type 支持自定义公式!

把样式公式玩明白,这波让你在团队技术分享中杀疯!

让用户下载文件,不再需要后端支持,直接前端搞定:

在需要固定表头、侧边栏的时候,position: sticky 可能就是你的“真命天子”。但你知道它有个大坑吗?它必须有一个父级元素且父级不能有 overflow: hidden!要是设置了,sticky 就变“滑稽”了。

用系统字体 font-family: -apple-system, BlinkMacSystemFont, \”Segoe UI\”, Roboto, \”Helvetica Neue\”, Arial, sans-serif;,不仅可以提高渲染速度,还可以迎合用户的设备体验。Win 用户看 Win,Mac 用户看 Mac,大家都说好。

在 HTML 中,有些标签看似“毫无作用”,比如 <b> 和 <i>,但它们其实是语义化标记的老祖宗,配合屏幕阅读器能大显身手。不信?试试吧。

它们不仅能生成漂亮的分割线、虚拟元素,还能用来制作小装饰。加点内容、调个颜色,你的页面立刻“高级”了几分。

结果?按钮立刻变成“会发光的小星星”!

你可能以为它只能用来隐藏溢出的内容,实际上,它还能触发 BFC,解决浮动布局问题,甚至连 CSS 动画的“抖动”也能轻松治好!

告诉浏览器“我要动手了”,让它提前分配资源。比如对需要动画的元素设置:

但别滥用,否则会让性能“压力山大”!

还在手写懒加载逻辑?直接用 loading=\”lazy\”,图片不再和页面一股脑加载,用户滑到哪里,图片加载到哪里。这可是提升性能的“神器”!

多简单!多实在!浏览器原生支持,不用感谢我。

谁说文字只能黑白?用 background-clip: text,实现彩虹效果。

有了这招,你的文字会成为页面焦点!

这个属性不仅可以让元素“隐形”于鼠标事件,还能防止无聊的用户对“装饰性”元素疯狂点击。

以前选择多个类名,需要写一大堆。

现在用 :is(),简直省心省力:

设置 aspect-ratio,不用 padding hack,轻松保持比例。

让背景虚化,美得不要不要的。

支持的浏览器,直接“高大上”。

无需 JS,平滑滚动交给 CSS。

用起来,用户体验立刻满分。

\”等下,CSS 还能画图?\” 是的,只需要 border,你就能轻松搞定一个三角形:

可别小看它,小三角撑起了无数网页的气泡提示。

它会继承 color 的值,这个用法超赞:

再改 color 属性时,边框颜色自动同步,别再死抠 border-color 啦!

浏览器事件分为捕获阶段和冒泡阶段:

true 表示捕获阶段,false 或默认则是冒泡阶段,学会这个就能避免 \”点击不生效\” 的锅了!

  • (?=):正向预查
  • (?! ):负向预查

比如匹配以 abc 开头,但后面不能是 123 的字符串:

用户开小差的瞬间尽收眼底。

要实现 \”悬停暂停动画\”,只需要:

你是不是有过想隐藏滚动条但又不想影响滚动体验的需求?只需一句 CSS 就搞定:

让你的滚动条瞬间隐身,还不影响用户滑动。

实现一个酷炫的倒影,居然只需要一行代码!

没错,filter 属性堪称 CSS 的法术书!

垂直居中难?Flexbox 就是你的救星:

不需要再用 position 和负 margin 画大饼了。

长单词溢出边界时,难看又烦人?

再长的词也能优雅地分行,不用手动插入空格。

有趣的 ::before 和 ::after 可以这样用:

是不是瞬间觉得 content 的能力被低估了?

浏览器自动填充表单的黄色背景色惹恼了你?用这个:

再也不用担心设计被破坏!

完全禁用右键并不是个好习惯,但如果有特殊需求:

让用户点击右键无反应,低调而有效。

想要你的网页在运行时切换图标?试试这个:

是的,你的 Tab 页可以瞬间更换图标了。

字体图标不够酷?用 SVG 图片当字体:

更灵活,更轻量,还能自由调整大小。

想要网站自动适配用户的主题偏好?只需要这样:

你的网页会根据用户设置的深色模式自动切换!

调试代码也可以很酷炫:

彩色输出瞬间点亮你的调试体验!

通过 Intersection Observer 实现滚动动画:

滚动到视口内的元素自动触发动画,让页面更有吸引力。

为按钮或链接添加水波纹动画,用户交互更有趣:

点击按钮时,水波纹效果瞬间提升互动性。

根据用户的输入设备自适应样式:

简单有效,轻松应对触摸屏。

NProgress 是一个很棒的工具,只需几行代码:

瞬间提升用户的视觉体验!

利用 JavaScript 动态响应网络状态:

让你的应用更智能!

希望你读完这些冷知识后,能感叹一句:\”原来前端还能这样玩!\” 如果你也有想补充的冷知识,评论区摆摊,我们一起拍桌子~

本文作者及来源:Renderbus瑞云渲染农场https://www.renderbus.com

点赞 0
收藏 0

文章为作者独立观点不代本网立场,未经允许不得转载。