hello,idea

読了時間: 3 min read

【サイト制作 Vol.2】CSSで表現するアナログな文房具デザイン

前回は技術スタックの話をしましたが、今回はデザインについてです。

このサイト「hello,idea」の見た目は、**「アイデアを書き留めるノート」**をイメージしています。 画像素材をペタペタ貼るのではなく、可能な限り CSS (コード) だけでアナログ感を表現することにこだわりました。

ノートの罫線と「色の正体」

記事の背景にある「罫線」は、画像ではなくCSSの linear-gradient で描いています。

paper.scss
.paper-pattern {
background-color: #fffef8; /* 紙の地色 */
background-image:
linear-gradient(rgba(0,0,0,0.06) 1px, transparent 1px);
background-size: 100% 32px;
}

ポイントは、線の色に**「透明度のある黒」**を使っていることです。 もしここで「薄いグレー (#e0e0e0)」などの不透明な色を指定してしまうと、背景色を変えた時に線だけが浮いてしまいます。

透明度を活用することで、紙の色がクリーム色でも、ダークモードの紺色でも、自然と馴染む罫線になります。


あえての「不完全さ」

デジタルデザインは「整列」が得意ですが、アナログ感を出したいなら**「ズレ」**が必要です。 このサイトでは、マステやタグ,紙の配置にあえて角度をつけています。

こだわりの1度 transform: rotate(-1deg) のような、ほんのわずかな傾きが「人間味」を生みます。

Vol.1で書いた「100点を目指さない」というマインドセットとも通じる部分ですが、完璧な直線や左右対称をあえて崩すことで、温かみのあるデザインを目指しました。


紙の重なり(奥行き)の表現

記事エリアの「紙が数枚重なっているような表現」も、CSSだけで実装しています。 box-shadow だけでなく、擬似要素 (::before, ::after) を使って実際に要素を重ねることで、リアルな奥行きを出しています。

paper-stack.scss
/* 紙の重なりの実装イメージ */
.paper-stack {
position: relative;
/* 本体の紙 */
background: #fff;
z-index: 2;
}
/* 下に敷く紙(1枚目) */
.paper-stack::before {
content: "";
position: absolute;
top: 2px;
left: 2px;
width: 100%;
height: 100%;
background: #fdfdfd;
transform: rotate(-1deg); /* 少し傾ける */
z-index: 0;
box-shadow: 0 2px 5px rgba(0,0,0,0.1);
}
/* 下に敷く紙(2枚目) */
.paper-stack::after {
content: "";
position: absolute;
/* ...位置調整... */
transform: rotate(1.5deg); /* 逆方向に傾ける */
z-index: 1;
}

このように、少しずつ角度と位置をずらした矩形を背面に配置することで、乱雑に積まれた紙の束を表現しています。


ダークモードとの格闘

アナログ(紙)の質感を追求すると、一番困るのがダークモードです。 「白い紙」をそのまま反転して「黒い紙」にすると、ただの無機質な黒い箱になってしまいがちだからです。

そこで、以下のルールを設けました。

  1. 完全な黒 (#000) は使わない: 濃い紺色 (#09172a) をベースにして、インクのような深みを出す。
  2. 影をあきらめない: 暗い背景でも、さらに暗い影 (box-shadow) を落として「浮いている感」を維持する。
  3. マステやハイライトは透過: 白や蛍光色をそのまま置くのではなく、透過度 (opacity) を下げて背景色とブレンドさせる。

馴染ませるコツ 「色を変える」のではなく「透明度で馴染ませる」アプローチを取ることで、ライト/ダークどちらの環境でも破綻しないデザインシステムが作れました。


次回は最終回。AstroのContent Collectionsや、Draft機能の実装など、システム面のTipsを紹介します。