CanvasUI is a canvas-based UI framework.
Online Demo (a page with only one <canvas>)
CanvasUI re-implements key technologies of modern front-end development. It is based on HTML <canvas>, just using Vanilla JS, no external dependency, it contains:
- Declarative tags (e.g. <button>, <image>, and even <input>)
- Layout engine that supports Flex
- Commonly used CSS
- MVVM
- Timeline and Animation
- Mobile-compatible gestures
- Scaffolding out of the box and development server that supports hot reload
- Create a project with
npx canvasui project-name - Use vscode to open the project root directory to enjoy code highlighting
- Run
npm run buildin the root directory of the project to start the development server (the code will also be packaged into the/publicdirectory) - Use a browser to visit
http://127.0.0.1:3000/ - Modify
main.uiin the/srcdirectory, the browser will update and modify in real time (and package it to the/publicdirectory at the same time)
<script> let count = 0 function increment() { count += 1 } return { count, increment } </script> <template> <button label="click { count } times" @click="{ increment }"></button> </template> <style> template { justify-content: center; align-items: center; } </style>
| component name | supported props | supported CSS |
|---|---|---|
| <button> | label, @click | |
| <checkbox> | value, label | |
| <color> | value | |
| <div> | width, height, padding, margin, border, border-radius, background | |
| <image> | path | width, height, border-radius |
| <input> | value, hint | width |
| <radio> | value, label, option | |
| <select> | value, options | |
| <slider> | value | width |
| <switch> | value | |
| <template> | width, height | |
| <text> | content | font-size, color |