-
Hello World!
基本的render方法接收2个参数:CSX程序和渲染dom对象。
-
CSX
CSX取名借鉴自JSX,Canvas-Svg-Xml,根据根节点的不同,自动切换为canvas或svg类型,两者功能完全等价。
-
高清方案
在高清屏(如手机、mac)中,canvas会模糊或者1px边框问题,请自行调整meta元素的scale缩放(默认为1),或者为canvas设置style,使其宽高为属性的0.5倍(对应dpr为2的倒数)。
-
dom标签
常见2种标签:div和span,分别对应block和inline元素。其它也少量支持。
-
文本
支持自定义字体的文本,已内置解析字体信息。
-
文本自适应
单行文本自动缩小全展示。
-
弹性布局
flex基本被支持,这是在布局中很常见且实用的布局。
-
绝对定位
绝对定位也很重要,在一些提示窗口中有重大作用。
-
渐变
线性渐变、径向渐变、锥形渐变可以丰富图形表现,css、canvas、svg写法定义均不相同,统一至css标准。
-
变形
变形转换提供了便利的几何变换,css、canvas、svg写法定义均不相同,统一至css标准。
-
位图缓存
可以为节点开启位图缓存cacheAsBitmap,增加性能。
-
事件支持
和jsx的事件标准一样,以on{Event}形式书写,所有事件被顶层canvas/svg劫持实现响应。
-
几何标签
几何标签规定以$开头,默认内置了几种基础几何形状:line/circle/rect/ellipse/sector/polyline/polygon。
-
自定义几何标签
如果觉得基本的几何图形不够用,或者为了复用代码,可以注册自定义几何标签。
-
布尔运算
布尔运算,在多边形$polygon标签上支持。
-
dom-diff
改变图形时需要重新渲染,对于canvas来说就是重绘,而svg重新生成的成本太大了,因此内置了dom-diff来提升性能。
-
响应事件
是否响应某个事件,内置已做好解析,确保事件发生的坐标在dom内且没有被遮盖,并考虑了matrix。如果想要自定义图形更加精准的响应,需要覆盖willResponseEvent方法。
-
可测试
ui测试是个非常麻烦的事情,这里提供了一种用virtual-dom来测试的方法。
-
图表示例
这里以常见的图表为例,展示了如何编写一个折线图,体现出代码量少、css规范零学习成本易维护的特点。
-
3d
结合自定义图形和线性渐变,以及结合线性渐变和transform,可以简单制作出较为炫的效果,比如3d柱状图。
-
火苗效果
结合图形标签和径向渐变,可以制作出火苗燃动的效果。
-
匿名自定义渲染
深度定制等自定义化UI情况需要直接使用底层canvas渲染的能力,这时候需覆写render()方法直接操控ctx。
-
组件
组件可以极大地复用代码,同时它拥有setState改变数据的能力,另外贴合WebComponent标准,对事件、样式形成ShadowDom。
-
自定义事件
组件还拥有自定义事件功能,它以on-{event}形式书写,扩展了事件通信机制。
-
dom-api
考虑到灵活性、便利和性能等原因,dom风格操作api也被支持。
-
icon
复杂的动态icon效果。
-
位图
除了矢量,还可以用img标签引用位图功能。
-
动画api
实现了Web Animation Api标准接口,并且增加了fps帧数控制。
-
遮罩
可以为一个节点(svg仅支持Geom)设置mask属性,这样它就作为上一个相邻节点的遮罩层出现。
-
动态加载
在一些展示或动画场景,希望能够通过配置的方式实现,这样能够灵活控制内容。动态加载能力实现了这一需求。
-
动态输入
直接输入JSON,生成动画,这是动态加载的更加直观的演示。
-
动画控制器
Root下有个animateController对象,作为总动画控制器,控制所有想被总控的动画。
-
插槽替换
在动态下发的基础上,如何创建可变图形和动画?这里提供了一种类似注入/插槽的功能,可以让设计师设计可变的部分,让程序员根据情况替换它。
-
高级插槽替换
仅仅替换变量太多单一,也可传入函数。
-
内部引用
这是专门为ide设计的内部引用数据格式,JSON的根级可以有library数组,存储引用数据。
-
外部引用
parse是可以递归嵌套的,可以在某个动态场景中导入使用别的json库。
-
混合代码
IDE导出的JSON数据,可以被编程CSX时使用。这是打通设计师和程序员的桥梁基础。
-
三角形仿射变换
为了实现贴图仿射变换,底层数学库提供了三角形任意变换方法,生成4*4的matrix供transform使用。
-
游戏基础
富交互+动画,拥有RIA小游戏实现的能力基础。
-
物理引擎
接入物理引擎,以matter-js为例。
-
性能测试
1000个节点的动画性能。
github source