How can I add a box-shadow on one side of an element?

后端 未结 13 1073
萌比男神i
萌比男神i 2020-11-28 17:34

I need to create a box-shadow on some block element, but only (for example) on its right side. The way I do it is to wrap the inner element with box-shado

13条回答
  •  [愿得一人]
    2020-11-28 18:08

    clip-path is now (2020) one of simplest ways to achieve box-shadows on specific sides of elements, especially when the required effect is a "clean cut" shadow at particular edges (which I believe was what the OP was originally looking for) , like this:

    .shadow-element {
        border: 1px solid #333;
        width: 100px;
        height: 100px;
        box-shadow: 0 0 15px rgba(0,0,0,0.75);
        clip-path: inset(0px -15px 0px 0px);
    }

    ...as opposed to an attenuated/reduced/thinning shadow like this:

    .shadow-element {
        border: 1px solid #333;
        width: 100px;
        height: 100px;
        box-shadow: 15px 0px 15px -10px rgba(0,0,0,0.75);
    }

    Simply apply the following CSS to the element in question:

    box-shadow: 0 0 Xpx [hex/rgba]; /* note 0 offset values */
    clip-path: inset(Apx Bpx Cpx Dpx);
    

    Where:

    • Apx sets the shadow visibility for the top edge
    • Bpx right
    • Cpx bottom
    • Dpx left

    Enter a value of 0 for any edges where the shadow should be hidden and a negative value (the same as the box-shadow blur radius - Xpx) to any edges where the shadow should be displayed.

提交回复
热议问题