
2026/02/13 17:02
CSS‑ドゥードル (※「CSS-Doodle」は既存のプロジェクト名やツール名としてそのまま使用されることが多いため、音写した形で表記しました。)
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
Summary:
css-doodle は、開発者が CSS だけでグリッドベースのパターンとグラフィックを作成できる Web コンポーネントです。標準ブラウザ機能(Shadow DOM v1 と Custom Elements v1)を使用しているため、ポリフィルは不要です。このコンポーネントは grid 属性またはプロパティで定義された <div> グリッドを構築し、多数の CSS ユーティリティ(@grid、@use、@seed)とヘルパー関数(@index、@pick、@stripe)を提供します。これらのツールにより、スタイルシート内で直接動的なスタイリングが可能になり、JavaScript を書かずに複雑なパターンを生成できます。コンポーネントは CDN または npm からロードでき、クリップパスやグラデーションなどの標準 CSS トリックをサポートし、さらに @shaders を介して GLSL シェーダーも組み込むことができます。update() や export() といったメソッドにより、ドゥードルを画像ファイルとして出力でき、将来的にはエクスポートオプションの拡張や他のビジュアルライブラリとの統合が期待されます。コードなしでパターン作成を可能にすることで、デザイナーとフロントエンド開発者はインタラクティブで再現性のあるグラフィックをより効率的に制作できるようになり、重いグラフィックツールへの依存を減らし、ウェブデザインに新たなクリエイティブワークフローをもたらす可能性があります。
Summary Skeleton
What the text is mainly trying to say (main message)
css-doodle は、開発者が CSS だけでグリッドベースのパターンとグラフィックを作成できる Web コンポーネントです。Shadow DOM v1 と Custom Elements v1 を使用しているため、完全なブラウザサポートが可能で、ポリフィルは不要です。
Evidence / reasoning (why this is said)
grid 属性またはプロパティで定義された <div> グリッドを生成し、豊富な CSS ユーティリティ(@grid、@use、@seed など)と多数の関数(@index、@pick、@stripe、@shaders)を提供しているため、スタイルシート内で直接動的にスタイリングできます。
Related cases / background (context, past events, surrounding info)
コンポーネントは CDN または npm を通じてインポートでき、クリップパスやグラデーション、SVG 背景などの標準 CSS 機能を利用し、
@shaders によって GLSL シェーダーもサポートしているため、従来の純粋な CSS パターン生成ツールより機能が拡張されています。
What may happen next (future developments / projections written in the text)
css-doodle は update() や export() といったメソッドを提供し、パターンを画像としてエクスポートできます。将来的にはさらなるエクスポートオプションの追加や他のビジュアルライブラリとの統合が期待されます。
What impacts this could have (users / companies / industry)
JavaScript を使わずにパターン作成できるため、デザイナーとフロントエンド開発者はインタラクティブで再現性のあるグラフィックを効率的に制作できます。これにより重いグラフィックツールへの依存が減少し、ウェブデザインや UI 開発における新しいクリエイティブワークフローが可能になります。
本文
はじめに
<css‑doodle /> は Shadow DOM v1 と Custom Elements v1 をベースにしています。ポリフィルを必要とせず、主要ブラウザすべてで動作します。
このコンポーネントは自らの内部に
<div> のグリッドを生成し、シンプルな CSS だけで構成されます。セルごとに CSS を適用することで、図形パターンやアニメーション付きグラフなどを作れます ― 制限は CSS にあります。
はじめ方
最新版をダウンロードするか、CDN から直接読み込みます:
<script type="module" src="https://cdn.jsdelivr.net/npm/css-doodle@latest/dist/css-doodle.js"></script>
モダンブラウザでは ES Modules を使うこともできます:
import 'css-doodle';
ビルドツールを使用している場合は npm でインストールし、JavaScript 内でインポートします:
npm i css-doodle
import 'css-doodle';
さあ、作成を始めましょう!
使用方法
css‑doodle の構文は CSS ベースで、追加のユーティリティ関数や省略記法が用意されています。
属性
| 属性 | 説明 |
|---|---|
| 行/列数(1–64)。デフォルトは 1×1。 |
| CSS カスタムプロパティ(変数)からルールをインポートします。 |
| 同じ乱数値を再生成し、結果を再現可能にします。 |
セレクタ
| セレクタ | 説明 |
|---|---|
| コンポーネント自体。 |
| すべてのセルを保持するコンテナ(グリッドレイアウト)。 |
| のように n 番目のセルを選択。 |
| と同等。 |
| と同等。 |
| 指定した列と行のセル。 |
| 乱数でセルを選択(デフォルト比率 = 0.5)。 |
| n 番目の行を選択。 |
| n 番目の列を選択。 |
| 数式 (, など) に基づきセルをターゲット。 |
プロパティ
| プロパティ | 説明 |
|---|---|
| グリッド設定(優先度が高い)。 |
| ルールをインポート( 属性と同様)。 |
| 幅・高さの総合指定。 |
| セルをグリッド内で配置。 |
| clip‑path 用多角形を生成。 |
関数
| 関数 | 説明 |
|---|---|
/ | 現在のセルインデックス。 |
/ | 現在の行番号。 |
/ | 現在の列番号。 |
/ | グリッド内の最大行数。 |
/ | 最大列数。 |
/ | セル総数。 |
| 値をランダムに選択。 |
| シーケンシャルに値を取得。 |
| ランダムで重複しない順序で値を取得。 |
/ | 指定範囲内の乱数。 |
, / , | 上記関数の最後に取得した値。 |
/ | 値を指定回数繰り返す。 |
/ , | 同上だがカンマ区切りで生成。 |
, , , | 内で現在の回数、列/行数、最大回数を表す。 |
| 斜線グラデーションを作成。 |
| SVG をそのまま背景画像として使用。 |
| SVG フィルタを適用。 |
| JavaScript の Math 関数/定数を 接頭辞で呼び出す。 |
| 計算式を評価(CSS の と同等)。 |
| ネイティブの と同様だが、早期評価を防ぐ。 |
| 数値を 16 進文字列へ変換。 |
| css‑doodle コードから URL 画像を生成。 |
| GLSL シェーダー画像(uniform: )を生成。 |
| ポリゴン clip‑path の文字列を作成。 |
| パーセントで区切られた 2 値を生成。 |
JavaScript API
const doodle = document.querySelector('css-doodle'); doodle.grid // grid 属性の getter / setter doodle.use // use 属性の getter / setter doodle.seed // seed 属性の getter / setter doodle.update([styles]) // コンポーネントを再描画(必要なら新しいスタイルを渡す) doodle.export(options) // 画像としてエクスポート、Promise を返す // options: { scale, detail, download, name }
例 – フィボナッチ螺旋
@grid: 1 / 100vw 100vh / #125cde; @content: @Svg( viewBox: -50 -50 100 100 padding -20; circle*500 { fill: hsl(@calc(120-90*@sin.n), 80%, 50%); r: @sqrt(@n/60); cx: @calc(@n*.618^4 * cos(2π*@n*.618)); cy: @calc(@n*.618^4 * sin(2π*@n*.618)); } );
例 – ランダムグリッド
@grid: 16 / 8em; margin: -.5px; @random { border-top: 1px solid #60569e; } @random { border-left: 1px solid #60569e; } @random(.2) { :after { content: ''; background: hsl(@rand(360), 60%, 70%); @size: @rand(3px); } }
例 – 形状と Clip‑Path
@grid: 1 / 8em; clip-path: @shape( points: 6; scale: .8; );
画像のエクスポート
doodle.export({ scale: 2, download: true, name: 'my-doodle.png' });
これにより、解像度を 2 倍した PNG が生成され、
my-doodle.png としてダウンロードが開始されます。