首页 > 其他分享 >MDH 前端周刊第 77 期:布局动画、Arrow JS、vanilla-extract、antd 5、dumi 2

MDH 前端周刊第 77 期:布局动画、Arrow JS、vanilla-extract、antd 5、dumi 2

时间:2022-11-21 23:12:47浏览次数:78  
标签:动画 MDH const vanilla JS 77 extract CSS dumi

MDH 前端周刊第 77 期:布局动画、Arrow JS、vanilla-extract、antd 5、dumi 2

原创 云谦 云谦和他的朋友们 2022-11-21 09:25 发表于浙江 收录于合集#MDH:前端周刊81个

图片

封面图:shawndearn @ unsplash。

Hi,我是云谦,欢迎打开新一期的「MDH:前端周刊」,这是第 0077 期,发表于 2022/11/21。

本周有这些内容想和你分享:

  • Framer Motion 布局动画

  • Arrow JS

  • vanilla-extract 入门

  • antd 5

  • dumi 2

Framer Motion 布局动画

https://www.nan.fyi/magic-motion

图片

这是一篇很好的互动式文章,解释了什么是布局动画。

为什么不用 CSS 动画实现?因为 CSS 动画有两个缺点。1)有些属性是不能做成动画的,比如 justify-content,2)做布局相关的动画时性能上相对较差。

那用什么实现?FLIP。Frame Motion 的布局动画基于此。FLIP 是啥?全称是 First, Last, Inverse, Play。它是一种技术,可以让你用 "快速 "的CSS属性(如transform)来为 "缓慢" 的布局变化制作动画。甚至支持不可动画的 CSS 属性(如 justify-content)。

实现位置变化的 FLIP 非常简单,但要涉及尺寸变化就会变得复杂。因为要考虑。1)尺寸的变化如何影响元素的移动距离,2)纠正由父元素中的变换引起的子元素的扭曲。一旦解决了这两个问题,我们就得到了一个相当可靠的自动布局动画的实现。

Arrow JS

https://www.arrow-js.com/

图片

ArrowJS 是一个实验性的工具,零依赖性,尺寸为 3K min+gzip。他有两个功能,1)可观察的数据,2)声明式/反应式 DOM 渲染。他有 3 个接口,1)r 声明可观察的数据,2)w 跟踪函数内人可观察数据,3)t 模板渲染。

快速上手代码。

import { r, t } from '@arrow-js/core'
const data = r({
clicks: 0
});
t`
<button @click="${() => data.clicks++}">
Fired ${() => data.clicks} arrows
</button>
`

vanilla-extract 入门

https://www.lekoarts.de/javascript/writing-performant-css-with-vanilla-extract

图片

基于 vanilla-extract 编写高性能和类型安全的 CSS,这也是作者在新项目中首选的 CSS 方案,它结合了 TypeScript 和 CSS Modules 的优势,在 CSS in JS 和 CSS Modules 之间找了个很好的平衡点,不会像 CSS in JS 一样性能不好,写起来也没有传统 CSS 那么复杂。

作者的用法分三步。

1、定于全局样式 reset。作者推荐了 Josh Comeau 的 CSS Reset。写法是用 globalStyle API。

import { globalStyle } from "@vanilla-extract/css"
globalStyle(`*`, {
boxSizing: `border-box`,
margin: 0,
})

2、设计主题。不需要多主题时也可以这么操作,适用于单主题,同时可以为未来的多主题留下扩展性。vanilla-extract 有 createThemeContract 和 createTheme 两个接口,前者用于创建主题合约,避免某个主题少实现了一些变量,后者是创建主题。

import { createThemeContract, createTheme } from "@vanilla-extract/css";
export const vars = createThemeContract({});
export const lightThemeClass = createTheme(vars, {});
export const darkThemeClass = createTheme(vars, {});

3、基于 style 和 styleVariants API 声明样式。

import { style } from "@vanilla-extract/css"
const base = style({ padding: 12 });
const wrapper = style([base, { background: `blue` }]);
import { style, styleVariants } from "@vanilla-extract/css"
const footerColors = {
light: vars.colors.gray600,
dark: vars.colors.gray400,
}
export const footer = styleVariants(footerColors, (color) => [
footerBase,
{ color },
])

antd 5

https://www.yuque.com/ant-design/ant-design/cy5nfvdo8oidvwmz

图片

附 YingCi 的省留版介绍。

【 实际部分 】

  1. 新增了组件( Tour 用户引导、FloatButton 等几个新组件,时间选择器优化),自己去看,别伸手党。

  2. 设计上的变化,省略几千字。

  3. css in js ,自己用脑子想想能做啥吧。

【画饼部分】

  1. 详情页画饼:2022 年 到 23 年大改版文档组件详情页,包括设计视角。

  2. Kitchen 对齐画饼:设计资产自定义 + sketch 导出。

  3. 快乐工作主题画饼:还没发,等年底,等通知。

  4. 二维码组件、水印组件画饼:等通知,还没出

  5. pro component 画饼:现在有 beta 版本可以用,但是你懂的。

dumi 2

https://zhuanlan.zhihu.com/p/584551696

图片

dumi 1.0 在 2020 年 3 月 2 日正式发布,到今天一共有 80+ 位 Contributor、提交 1100+ Commit、为近 4000 个开源项目提供了组件库/站点的文档方案;dumi 作为一个 GitHub 数亿开源项目中的渺小一粒,能有这么多人共同参与、能为这么多项目提供价值,无疑是十分幸运的。

与这份幸运一同到来的,还有许多体验问题的反馈、组件研发的思考、实际项目的场景,加上社区的底层技术栈也在飞速迭代,是时候给 dumi 做一次大升级了,所以我们在今年的 7 月 29 日正式启动了 dumi 2.0 的研发,而在今天,它终于与大家正式见面了!

周刊一锅端

小结

如果你喜欢 MDH 前端周刊,请转发给你的朋友,告诉他们到这里来订阅,这是对我最大的帮助。下期见!

MDH,让开发者有笑容 :)

标签:动画,MDH,const,vanilla,JS,77,extract,CSS,dumi
From: https://www.cnblogs.com/sexintercourse/p/16913748.html

相关文章

  • jstat查看jvm的GC情况[转]
    jps(JavaVirtualMachineProcessStatusTool)是JDK1.5提供的一个显示当前所有java进程pid的命令,简单实用,非常适合在linux/unix平台上简单察看当前java进程的一些简单情......
  • 【前端】JS去重
     /**JSON数组去重*@param:[array]jsonArray*@param:[string]唯一的key名,根据此键名进行去重*/exportconstuniqueArray=(array,key)=>{varres......
  • JsonSerializerOptions 时间带T处理
    ///<summary>///对象转JSON///</summary>///<paramname="obj">对象</param>///<returns>JSON格式的字符串</ret......
  • JS中的闭包
    闭包闭包是什么很多小伙伴在面试的时候都会被问到闭包是什么?举例说明下闭包的运用?闭包(closure)是javascript的一大难点,也是它的特色。很多高级应用都要依靠闭包来实现。......
  • uoj #770. 【UER #11】切割冰片
    https://uoj.ac/contest/79/problem/770赛时睡了一觉后就会转化了/hsh考虑这个竖线倘若存在第\(i\)条能发到\(+\infty\),那么\(i\)之后的也一定能发到!考虑每条......
  • axios二次封装-main.js使用
    axios封装:配置代理:axios封装:axios的二次封装:请求拦截统一token处理:引入:使用:导入:响应拦截统一错误处理:导入:main.js:login页面:效果:请求:我们要请求......
  • APP-SQLAP-97731:由于出现以外错误,请与您的系统管理员联系。而使计税失败,系统无法生成
    AP发票验证的时候,提示:OraclePayables由于以下原因而无法计税:出现意外错误。请与您的系统管理员联系。 没啥有用的信息,后来在发票头重点击税详细信息的时候报错:......
  • App开发_表情包json
    [["表情","......
  • Node.js 15正式版发布
    英文| https ://medium.com/@nodejs/node-js-v15-0-0-is-here-deb00750f278前两天,Node.js官方发布了Node.js15的正式版本,Node.js15将替代Node.js14成为当前的稳定发行......
  • 踩坑JSTL标签库:/WEB-INF/jsp/fore/home.jsp (行.: [3], 列: [0]) 无法在web.xml或使用
    Tomcat9及之前使用到的JSTL库最近心血来潮想复习一下JavaWEB,调试JSTL标签的时候出现了一些错误,如标题所示。先说下场景,我已经在:WEB-INF/lib下添加了Tomcat9使用JSTl需要用......