私は Web/CSS プログラマーではありませんが、CSS のように見えるボックス シャドウ アルゴリズムが必要であり、それがどのように機能するかを調べることにしました。
以下の比較には、CSSmatic のオンライン ボックス シャドウ ツールを使用しました。
アルゴリズムには2つのステップがあるようです。
ステップ 1: ベクトル化されたスケールとシフト

示されているように、27px
CSS スプレッドインセットは、形状が27*2
ピクセル単位で縮小されていることを意味します。これは、アウトライン ボックスの影 (27*2
ピクセルが大きいなど) では反転されます。
水平/垂直オフセットは一目瞭然です。
ステップ 2: ガウスぼかし
歴史
Mozilla 開発者の David Baron は、CSS のボックス シャドウの実装に関する詳細な記事をここに書いています。
2011 年までは、CSS ぼかし半径の標準的な意味はありませんでした。これは、さまざまな Web ブラウザーのさまざまなアルゴリズムとパラメーターに対応している可能性があります。
異なるブラウザは、歴史的に同じぼかし半径に対して異なることを行ってきました。これは、ぼかしアルゴリズムと、そのアルゴリズムにとって半径が何を意味するか (つまり、特定の半径がどのようにぼやけるか) の両方の観点からです。.... 過去 1 年間で、CSS と HTML の仕様が変更され (CSS の場合)、このぼかし半径の意味を定義するか、(HTML の場合)、この定義について互いに一致するようになりました。
moz-
これらの歴史的な違いは、プレフィックス(あなたが言及した)とプレフィックスの目的を説明できwebkit-
ます。これらは、Mozilla およびWebKitベースのブラウザーが使用する代替の box-shadow パラメーターを指定する可能性があります。
標準化により、これらのプレフィックス付きのバージョンは現在非推奨になっていると思いますが、古いブラウザーとの互換性のために使用される可能性があります。
標準化
Baron によると、ボックス シャドウのぼかし半径の正確で標準的な定義が存在するようになりました。
ぼかし効果は css3-background と HTML によって定義され
、標準偏差 (σ) が指定されたぼかし半径の半分に等しく、妥当な近似誤差が許容されるガウスぼかしになります。
数学者はそれを正確な式に拡張できます。
視覚的な近似
GIMPでいくつかの試行錯誤を行った結果、CSS のぼかしパラメーターを 5/3 (1.6666...) で乗算し、最も近い整数に切り上げて取得したガウスぼかし半径が、非常に近い視覚的近似値を生成することがわかりました ( Firefox 50 の CSS に):
7px
CSS ぼかし (Firefox 50) ~~ ceil(7 * 5/3.0) = 12.0
GIMP のガウス半径

30px
CSS ぼかし (Firefox 50) ~~ ceil(30 * 5/3.0) = 50.0
GIMP のガウス半径

75px
CSS ぼかし (Firefox 50) ~~ ceil(75 * 5/3.0) = 125.0
GIMP のガウス半径

実装
Ivan Kuckir は、いくつかの高速なガウスぼかしアルゴリズムを共有しています。