

GitHub - xinyu198736/sketch-to-html: 可以 100%(目前可能是99.9%) 从 sketch 转换...
source link: https://github.com/xinyu198736/sketch-to-html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

sketch to html
$ npm install sketch-to-html --save
引入并解析:
const source = './xxx.sketch';
const parser = require('sketch-to-html');
parser(source);
// 会输出一个网站资源文件夹到当前文件夹下的 output 文件夹中,并且尝试用系统的 chrome 打开页面。
这个库刚开发出来,用起来还不太优雅,呵呵,这里只是提供一种演示,后续会开拓一些实用功能
运行示例:
$ git clone https://github.com/xinyu198736/sketch-to-html.git
$ cd sketch-to-html
$ npm install
$ npm run example
在线查看生成的 html 示例:
https://xinyu198736.github.io/sketch-to-html/docs/index.html
相比 github 上其他的库,特别支持以下特性:
- 更好的处理各种旋转变形属性
- 支持形状内填充图案
- 完整支持渐变色
- 支持 mask 蒙层
- 支持 icon 图片变色
- 支持渐变 mask 蒙层
- 生成的页面 css 和 html 分离
- 生成中间数据结构,可以支持转成其他框架视图
- 更完善处理文字排版
- 支持所有图层类型转换,不规则图形转成 svg
- 使用 rem 方案生成页面,支持自动缩放
已知问题(逐步修复中)
- 渐变色的角度算法有问题,算出来的值有偏差,并且横向的角度会算成无限大
- 对于 Group 的 shadow 处理有问题,css 不支持轮廓 shadow
- 蒙层在蒙层参照物是 不规则图形时 会失效。
- 支持在 px 和 rem 之间切换
- 支持在设计稿中标注一些 html 属性,例如链接地址(可行性未评估好)
- 支持复用一些知名组件库,并且可以根据内容导出成组件的属性。
.
├── Makefile
├── README.md
├── example.js 示例
├── index.js 入口
├── layer 所有图层类型的样式和结构生成方法
│ ├── Bitmap.js
│ ├── Common.js
│ ├── Group.js
│ ├── LayerFactory.js 图层工厂方法,供外部调用
│ ├── LayerProtocol.js 图层协议类,供图层继承
│ ├── ShapeGroup.js
│ ├── ShapePath.js
│ └── Text.js
├── parser 一些用来做解析的方法
│ ├── NSArchiveParser.js 解析 sketch 内的样式编码
│ ├── layerParser.js 解析图层结构
│ ├── pathParser.js 解析 svg 图层
│ └── styleParser.js 解析样式
├── render 生成样式表和渲染html的方法
│ ├── htmlRender.js
│ └── styleRender.js
├── store 全局的数据存储
│ ├── StyleStore.js
│ └── SymbolStore.js
├── template 模板
│ ├── assets
│ ├── index.html
│ ├── index.js
│ └── template.js
└── util.js 工具方法
中间转换的数据结构
转换原理是将 sketch 文件先转为一个大的数据结构,然后遍历此数据结构生成 html 和 css,以下是数据结构的示例,后续可以从此数据结构生成其他语言的代码。
{
"id": "E42E1F7C-C8AB-47F4-A131-22C31284ADC4",
"frame": {
"_class": "rect",
"constrainProportions": false,
"height": 50,
"width": 197,
"x": 250,
"y": 876
},
"style": {},
"path": null,
"isVisible": true,
"name": "Group_12",
"type": "group",
"isMask": false,
"childrens": [
{
"id": "B06A6329-E18B-4036-80EB-9E05384FB991",
"frame": {
"_class": "rect",
"constrainProportions": false,
"height": 49.99999999999998,
"width": 197,
"x": 0,
"y": 0
},
"style": {
"backgroundColor": "rgba(239,119,149,1)"
},
"path": null,
"isVisible": true,
"name": "Rectangle_3_5",
"type": "shapeGroup",
"isMask": false,
"childrens": [
{
"id": "EBC7DA72-D642-42FF-8F46-DF6F96E47CEB",
"frame": {
"_class": "rect",
"constrainProportions": false,
"height": 49.99999999999998,
"width": 196.9999999999999,
"x": 0,
"y": 0
},
"style": {
"borderRadius": 100
},
"path": "M0,0L197,0L197,50L0,50L0,0Z",
"isVisible": true,
"name": "Path_19",
"type": "rectangle",
"isMask": false,
"isRect": true
}
]
},
{
"id": "69C0B6EF-A15F-409F-B2BC-744B6F479D42",
"frame": {
"_class": "rect",
"constrainProportions": false,
"height": 33,
"width": 153.8478260869566,
"x": 21.15217391304342,
"y": 6.999999999999989
},
"style": {
"color": "rgba(255,254,254,1)",
"fontSize": 24,
"textAlign": 2,
"text": "斩获无数大奖"
},
"path": null,
"isVisible": true,
"name": "zhan_huo_wu_shu_da_jiang",
"type": "text",
"isMask": false,
"text": "斩获无数大奖"
}
]
}
</article
Recommend
-
37
README.md 一个 可视化实时渲染的 ant-design 页面搭建工具 此项目是上古项目,代码基本很难维护,现在发布出来仅供参考思路,感兴趣的可以根据原理...
-
25
新浪科技讯9月30日消息,据国外媒体报道,一支由多国科学家组成的研究团队找到了一种捕捉热能、并将其转化为电能的方法,能够利用汽车尾气、行星际太空探测器和工业生产过程中的热能,实现更高的能量转化率。科学家指出,借助这项研究,我们将能够利用热能
-
14
一个多月前,我开始帮 Johnny 为他的 Spreadeo 做 iOS app。我俩白天都在公司上班(他是某 labs 的后台程序员,我是某 startup 的 iOS 程序员),为了避免和公司有知识产权纠纷,我们都严格地只在下班时间和周末做这...
-
5
织梦dede可以搬家到迅睿CMS吗 dedecms系统转换到迅睿CMS的方法 2021-10-1409:53:5...
-
9
前阵我们报道过PC市场今年销量恐怕会进入寒冬的报道,上游的芯片制造厂商也会受到影响。近期网传ASML恐怕会因为台积电、三星等公司的产能下降,可能在2024年面临EUV光刻机卖不动的局面。
-
11
Sketch、Figma 和 XD 如何互相转换格式? 更新时间:2023-02-10 10:39:31 如果你正在寻找一种方法来转换Sketch、Figma和XD之间的格式,那么你可能会发现这是一件非常麻烦的事情。由于Sketch和XD之间存在竞争关系,因此两者之间是无...
-
1
Sketch有windows版吗,windows如何使用sketch 由于 Sketch 只支持 MacOS,并且官方明确表示没有开发 Windows 版本的计划,导致在很长一段时间内,使用 Windows 系统的设计师,要么继续使用
-
12
Javascript 在很多地方会出现字符串隐私转换,需要特别留意。 1、Object.keys(array) 返回字符串数组 // indexs will be ["0", "1", "2"] indexs = Object.keys([1, 2, 3]) 如果要想数字索引...
-
6
V2EX › 程序员 将 Github Copilot 转换为 ChatGPT,免费使用 GPT-4 模型,目前已支持多种部署方式,欢迎大家体验使用
-
6
电脑没有安装XD,可以把XD文件转为Sketch文件吗? 更新时间:2023-07-04 21:31:14 电脑没有安装 XD,可以把 XD 文件转为
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK