Skip to main content

Module box_shadow

Module box_shadow 

Source
Expand description

box-shadow の解析と、ぼかしの濃度(純粋モジュール)。

【2026-09-26】www.sugi-lab.net のカードの影(0 2px 10px rgba(0, 0, 0, 0.1))が、 Chrome の淡くぼけた影ではなく濃い灰色の塊として描かれていた。原因は 3 つ:

  1. 値を空白で単純に分割しており、rgba(0, 0, 0, 0.1) が rgba(0, 0, … に割れて 色が読めず、既定の「50% の黒」になっていた。
  2. 単位の無い 0 を長さとして読めず、横ずれ・縦ずれ・ぼかしが 1 つずつずれていた。
  3. ぼかしを無視して、影の矩形をそのまま塗っていた。

描画(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)。