ひとつの要素で簡単にボーダーを擬似的に複数指定する方法 -『CSS』

table of contents

    ボーダーを複数指定するプロパティは今のところ策定されていません。
    要素を複製作成するなどして擬似的にボーダーを複数表示するハックが一般的かもしれませんが、box-shadowプロパティを使うことで1つの要素でこの要件を実現することができます。

    box-shadowの拡散半径

    box-shadowプロパティを多用して影として要素を表示することができますが、
    このbox-shadowの4つ目のパラメータの拡散半径をうまく指定することで、ボーダーの表現ができます。

    正の値では影が広がり、負の値では影が狭まる挙動になります。
    オフセットとぼかしを0にして、拡散半径に正の値を指定しましょう。
    これを複数続けて指定することで影がボーダーのように見える表示になります。

    css

    
    .item {
      box-shadow: 0 0 0 10px rgba(0,0,0,.5),
                  0 0 0 20px rgba(0,0,0,.5),
                  0 0 0 50px rgba(0,0,0,.5);
                  // X軸, Y軸, ぼかし, 拡散半径, 色
    }
    
    

    bos-shadowはレイアウトに影響を与えない

    box-shadowプロパティはレイアウトに影響を与えないので、ボーダーのように要素の大きさとしてはボックスモデルに認識されません。
    box-sizingも無視して要素の外側に表示されます。
    マウス操作もこの擬似ボーダーの上では発生しないため、これを解決するために、要素の大きさをハックするには、
    paddingで内側にinsetパラメータで内側に影を指定することで、調整することが必要です。

    おわります。

    ひとつの要素で簡単にボーダーを擬似的に複数指定する方法 -『CSS』のアイキャッチ画像

    share

    related