• Stars
    star
    681
  • Rank 66,346 (Top 2 %)
  • Language
    JavaScript
  • Created almost 7 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

从 sketch 转换成 html,已无更新。。

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
  • 蒙层在蒙层参照物是 不规则图形时 会失效。

todo

  • 支持在 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": "斩获无数大奖"
        }
    ]
}

More Repositories

1

js2image

一个可以把js源代码压缩成一个ascii字符画的源代码的工具,压缩后的代码仍可运行 (A tool can compress JavaScript code to any ascii image and still run normally )
JavaScript
1,533
star
2

antd-visual-editor

ant-design 组件库实时可视化编辑器,实时生成 react 代码
JavaScript
572
star
3

Rabbit.js

一个烂尾项目,仅供吐槽
JavaScript
236
star
4

wechat-ai-summarize-bot

微信群聊总结助手 Nodejs 版
TypeScript
140
star
5

arduino-aliyun-iot-sdk

运行于 arduino 的 阿里云 IoT 接入 SDK,在底层连接的基础上增加数据回调绑定、发送数据和事件等 api 的封装,免去自己解析数据的痛苦
C++
131
star
6

s-mobx

轻量级mobx实现,仅供参考
JavaScript
125
star
7

eslint-plugin-996

a eslint plugin save you from 996
JavaScript
108
star
8

colors-web

自由/简单地让浏览器的console变的五彩斑斓。chalk or colors like library, use in browser console , with any colors
TypeScript
60
star
9

hancode

把你的JS代码翻译成中文书写的代码,并且可执行
JavaScript
41
star
10

qiaowei

社交网络辅助工具,企业用户和个人用户均可。致力于灵活解放生产力,而不是病毒营销。
JavaScript
28
star
11

my-public-share-keys

这些年来公开分享的一些文档整理,持续更新
28
star
12

nestjs-prisma-example

around nestjs, with prisma and some graphql lib,write less code,create power api
TypeScript
26
star
13

eth-self-token-example

在本地网络发布一个名叫 YuTou 的 token
TypeScript
18
star
14

Neon-work-clock

在新的标签页中显示一个漂亮的显示工作状态和时间的霓虹灯界面,可以控制是否在工作中,并统计工作时间等
HTML
15
star
15

xmind-to-ascii

transelate xmind to ascii structure
GCC Machine Description
15
star
16

gitlab-code-report

自动爬取gitlab,生成代码提交,代码变更行数,mr,issues 数据和排行
JavaScript
13
star
17

node-renren

nodejs版人人网oauth认证和api sdk
JavaScript
12
star
18

node-taobao

taobao api的nodejs sdk
JavaScript
11
star
19

frontend-modern-experience-share-slide

一个关于Web 体验技术发展前沿的小分享
Vue
10
star
20

kuihuabaodian

葵花宝典,不解释
JavaScript
10
star
21

auto_create_sequelize_models

this repo can auto create sequelize models from exist mysql.
CoffeeScript
8
star
22

hotconfig

hot config for nodejs
CoffeeScript
7
star
23

node-weibov2

基于node-weibo-v2改进的node平台微博v2接口sdk
JavaScript
7
star
24

CHKeychain

a tool to read and write info to ios keychain
Objective-C
7
star
25

beian.js

模拟代码中字符串备案的情形
JavaScript
7
star
26

queue_do

异步队列同步化,支持递归嵌套
JavaScript
7
star
27

koa-auto-controller

auto generate controller by folder struct for koa
JavaScript
6
star
28

mwc_control

用arduino输出pwm信号控制mwc飞控
Arduino
5
star
29

htmljs

the code for www.html-js.com 前端乱炖 in Age of Freedom
JavaScript
5
star
30

yaninput-plugin

可以任意嵌入App的颜文字输入法插件,一句话即可集成颜文字输入功能到自己的App中。
Objective-C
4
star
31

node-douban

豆瓣的nodejs实现的SDK
JavaScript
4
star
32

webpack-browserify-babel-rollup-example

这是一个示例项目,展示babel,browerify,webpack,rollup四者的基本用法,以及四者编译后的结果,可以借此了解这四个玩意到底是干了些什么事情。
JavaScript
4
star
33

walk_do

遍历文件夹并处理所得文件,支持同步遍历和异步遍历,同步遍历顺序严格使用深度搜索算法
JavaScript
4
star
34

my-booklist

我的书单,欢迎杭州的学生借阅。
3
star
35

animate-num

up to num with animate
JavaScript
3
star
36

fastdemo

make fast demo env use nodejs
JavaScript
3
star
37

mobiview

view or share your site with mobile style
TypeScript
3
star
38

eslint-plugin-kfc-crazy

a lint for KFC Crazy Thursday
JavaScript
3
star
39

readOnlineFile

读取远程图片或者文件并存储到本地
JavaScript
3
star
40

node-tqq

nodejs版腾讯api sdk
JavaScript
3
star
41

formatjson

format json
JavaScript
2
star
42

wp-pc-wallpaper

Wonderpal NFT PC Wallpaper generator
TypeScript
2
star
43

authorize

国内各大微博的authorize链接生成方法集合。原理基本一样,稍有差别。
JavaScript
2
star
44

fly_control_ios

蓝牙控制四轴的客户端程序
Objective-C
1
star
45

cpu-overload-monitor

display cpu overload status in terminal
JavaScript
1
star
46

s-ioc

这是一个试验项目,主要是学习下如何实现 ioc 模式
TypeScript
1
star
47

somethingfrom2009

从学习前端来瞎写的各种乱七八糟的东西。
JavaScript
1
star
48

the-most-beautiful-html-construction

the most beautiful html construction
1
star
49

changelog-clog

JavaScript
1
star
50

sns-error-info

整理各SNS平台的错误码所对应的英文和中文描述,可自己扩展,方便在应用中错误提示,也可以当做手册查询
JavaScript
1
star
51

tap-plus-one

一个 arduino 程序,点一次加一,传说程序员通过这个装置来记录每天被骚扰的次数
Arduino
1
star
52

htmljs-publish-atom

一个atom编辑器的插件,直接把markdown文件发送到前端乱炖(www.html-js.com)网站的专栏。
CoffeeScript
1
star