duskmoon-art-elements
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseDuskMoon CSS Art Elements
DuskMoon CSS艺术元素
15 pure CSS art custom elements built on . Each element renders a self-contained CSS animation — no JavaScript logic, no external images.
@duskmoon-dev/el-base基于构建的15个纯CSS艺术自定义元素。每个元素都能渲染独立的CSS动画——无需JavaScript逻辑,也无需外部图片。
@duskmoon-dev/el-baseInstallation
安装
bash
undefinedbash
undefinedIndividual art element
单独安装单个艺术元素
bun add @duskmoon-dev/el-art-atom
bun add @duskmoon-dev/el-art-atom
All art elements at once
一次性安装所有艺术元素
bun add @duskmoon-dev/art-elements
undefinedbun add @duskmoon-dev/art-elements
undefinedRegistration
注册
typescript
// Option 1: Explicit (tree-shakable)
import { register } from '@duskmoon-dev/el-art-atom';
register();
// Option 2: Side-effect auto-register
import '@duskmoon-dev/el-art-atom/register';
// Option 3: Register all CSS art elements
import { registerAllArts } from '@duskmoon-dev/art-elements';
registerAllArts();typescript
// 方式1:显式注册(支持tree-shaking)
import { register } from '@duskmoon-dev/el-art-atom';
register();
// 方式2:通过副作用自动注册
import '@duskmoon-dev/el-art-atom/register';
// 方式3:注册所有CSS艺术元素
import { registerAllArts } from '@duskmoon-dev/art-elements';
registerAllArts();Usage in HTML
HTML中的使用
html
<el-dm-art-atom></el-dm-art-atom>
<el-dm-art-atom size="lg"></el-dm-art-atom>
<el-dm-art-moon variant="crescent" glow></el-dm-art-moon>
<el-dm-art-sun variant="sunset" rays></el-dm-art-sun>
<el-dm-art-plasma-ball size="xl"></el-dm-art-plasma-ball>
<el-dm-art-synthwave-starfield size="lg" paused></el-dm-art-synthwave-starfield>
<el-dm-art-gemini-input placeholder="Ask me anything..."></el-dm-art-gemini-input>
<el-dm-art-gemini-input size="lg"></el-dm-art-gemini-input>html
<el-dm-art-atom></el-dm-art-atom>
<el-dm-art-atom size="lg"></el-dm-art-atom>
<el-dm-art-moon variant="crescent" glow></el-dm-art-moon>
<el-dm-art-sun variant="sunset" rays></el-dm-art-sun>
<el-dm-art-plasma-ball size="xl"></el-dm-art-plasma-ball>
<el-dm-art-synthwave-starfield size="lg" paused></el-dm-art-synthwave-starfield>
<el-dm-art-gemini-input placeholder="Ask me anything..."></el-dm-art-gemini-input>
<el-dm-art-gemini-input size="lg"></el-dm-art-gemini-input>Properties
属性
All CSS art elements are by default. Most support :
display: inline-blocksize| Property | Type | Default | Description |
|---|---|---|---|
| String | | Size variant — maps to |
Element-specific properties:
| Element | Extra Properties |
|---|---|
| |
| |
| |
| |
| |
| |
| |
所有CSS艺术元素默认均为。大多数元素支持属性:
display: inline-blocksize| 属性 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| 字符串 | | 尺寸变体——对应 |
元素专属属性:
| 元素 | 额外属性 |
|---|---|
| |
| |
| |
| |
| |
| |
| |
CSS Layer Stripping
CSS Layer剥离
CSS art elements import raw CSS from and strip the wrapper before injecting into Shadow DOM:
@duskmoon-dev/css-art@layer css-art { ... }typescript
import rawCss from '@duskmoon-dev/css-art/dist/art/{name}.css' with { type: 'text' };
const layerMatch = rawCss.match(/@layer\s+css-art\s*\{([\s\S]*)\}\s*$/);
const coreCss = layerMatch ? layerMatch[1] : rawCss;This is required because inside Shadow DOM does not interact with the document's layer order.
@layerSome art pieces (e.g. ) also have declarations outside the layer — these are preserved by the stripping regex since they appear before the block and are not matched.
gemini-input@property@layerCSS艺术元素会从导入原始CSS,并在注入Shadow DOM之前剥离包裹层:
@duskmoon-dev/css-art@layer css-art { ... }typescript
import rawCss from '@duskmoon-dev/css-art/dist/art/{name}.css' with { type: 'text' };
const layerMatch = rawCss.match(/@layer\s+css-art\s*\{([\s\S]*)\}\s*$/);
const coreCss = layerMatch ? layerMatch[1] : rawCss;这一步是必需的,因为Shadow DOM内部的不会与文档的层序产生交互。
@layer部分艺术组件(例如)在层外还包含声明——这些声明会被剥离正则保留,因为它们出现在块之前,不会被匹配到。
gemini-input@property@layerReferences
参考资料
- CSS Art catalog — all 15 CSS art packages with tags and properties
- CSS艺术目录——包含全部15个CSS艺术包的标签和属性信息