Expand description
box-shadow の解析と、ぼかしの濃度(純粋モジュール)。
【2026-09-26】www.sugi-lab.net のカードの影(0 2px 10px rgba(0, 0, 0, 0.1))が、
Chrome の淡くぼけた影ではなく濃い灰色の塊として描かれていた。原因は 3 つ:
- 値を空白で単純に分割しており、
rgba(0, 0, 0, 0.1)がrgba(0,0,… に割れて 色が読めず、既定の「50% の黒」になっていた。 - 単位の無い
0を長さとして読めず、横ずれ・縦ずれ・ぼかしが 1 つずつずれていた。 - ぼかしを無視して、影の矩形をそのまま塗っていた。
描画(kernel::draw)はここで決めた値と濃度関数を使うだけにする。
Constants§
- DEFAULT_
SHADOW_ COLOR - 色の指定が無いときの影の色(CSS では currentColor だが、影の色として一般的な 半透明の黒で代用する。従来の既定と同じ)。
Functions§
- coverage
- 影の矩形の縁からの距離
d(外側が正、内側が負。px)での濃度 0.0〜1.0。 - parse_
len - 影の長さトークン(px / rem / em / 単位なしの 0)。1rem = 1em = 16px とする。
- parse_
list box-shadowの値全体(カンマ区切りの複数影)を解析する。noneは空。- parse_
one - 影 1 個を解析する(
inset、長さ 2〜4 個、色は順不同)。長さが 2 個未満なら無効。 4 個目(spread)は読み飛ばす(未対応)。 - split_
top_ level_ ws - 括弧の外の空白で分割する(
rgba(0, 0, 0, 0.1)を 1 トークンに保つ)。
Type Aliases§
- Shadow
- 影 1 個: (横ずれ, 縦ずれ, ぼかし半径, 色 ARGB, inset)。