← 記事一覧へ

CSS と MDC でアートを描く

Nuxt Content の MDC コンポーネントと CSS だけで、コードからアートを表現する試みです。

CSS アート

コードだけで絵を描けます。画像ファイルは一切使わず、CSS の backgroundborder-radiusradial-gradient だけで構成しています。

Glow — 光るオーブ

暗いキャンバスに同心円と放射グラデーションを重ねた作品です。

Glow / CSS radial-gradient + concentric rings

グリッド線は background-image に2方向の linear-gradient を重ねて描いています。

background-image:
  linear-gradient(rgba(0, 220, 130, 0.06) 1px, transparent 1px),
  linear-gradient(90deg, rgba(0, 220, 130, 0.06) 1px, transparent 1px);
background-size: 36px 36px;

中心の光は radial-gradientfilter: blur の組み合わせです。

background: radial-gradient(circle, #00DC82 0%, rgba(0, 220, 130, 0.6) 40%, transparent 70%);
filter: blur(4px);

Mondrian — モンドリアン風

ピエト・モンドリアンの抽象絵画にインスパイアされた作品です。CSS Grid で区画を分割し、白・黒・グリーンで塗り分けています。

Mondrian / CSS Grid composition

grid-area でそれぞれのブロックの位置とサイズを指定します。

.green { grid-area: 1/1/3/2; background: #00DC82; }
.white { grid-area: 1/2/2/4; background: #f9fafb; }
.black { grid-area: 1/4/3/5; background: #18181b; }

ASCII アート

文字だけで絵を描く ASCII アートも、Markdown のコードブロックで表現できます。

    ██████╗ ██╗      ██████╗  ██╗    ██╗
   ██╔════╝ ██║     ██╔═══██╗ ██║    ██║
   ██║  ███╗██║     ██║   ██║ ██║ █╗ ██║
   ██║   ██║██║     ██║   ██║ ██║███╗██║
   ╚██████╔╝███████╗╚██████╔╝ ╚███╔███╔╝
    ╚═════╝ ╚══════╝ ╚═════╝   ╚══╝╚══╝

シンプルな図形を文字で描くこともできます。

        *
       ***
      *****
     *******
    *********
       |||

MDC がアートを可能にする

::css-art{type="glow"} のように書くだけで、Vue コンポーネントを Markdown の中に埋め込めます。 components/content/ に置いたコンポーネントは自動的に MDC で使えるようになります。

✓ TIP

コンポーネント名はケバブケース(css-art)で呼び出します。ファイル名 CssArt.vue が自動的に変換されます。

コードとデザインを1ファイルに閉じ込められるのが、CSS アートと MDC の組み合わせの強みです。