Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Prevent box shadow from showing on a specific side

Tags:

css

shadow

Is there any way to create a css box-shadow in which regardless of the blur value, the shadow only appears on the desired sides?

For example if I want to create a div with shadows on left and right sides and no shadow on the top or bottom. The div is not absolutely positioned and its height is determined by the content.

-- Edit --

@ricebowl: I appreciate your answer. Maybe you can help with creating a complete solution to fix the problems stated in my reply to your solution... My page setup is as follows:

<div id="container">     <div id="header"></div>     <div id="content"></div>     <div id="clearfooter"></div> </div> <div id="footer"></div> 

And CSS like this:

#container {width:960px; min-height:100%; margin:0px auto -32px auto;         position:relative; padding:0px; background-color:#e6e6e6;         -moz-box-shadow: -3px 0px 5px rgba(0,0,0,.8),         3px 0px 5px rgba(0,0,0,.8);} #header   {height:106px; position:relative;} #content   {position:relative;} #clearFooter {height:32px; clear:both; display:block; padding:0px; margin:0px;} #footer  {height:32px; padding:0px; position:relative; width:960px; margin:0px             auto 0px auto;} 
like image 401
Jason Turner Avatar asked Mar 02 '10 01:03

Jason Turner


People also ask

How do you get rid of shadow on one side?

1) Set your shadow's horizontal alignment to the left (negative values). box-shadow: -30px 0px 10px 10px #888888; Although this way you won't have the same shadow size in the top and bottom. 2) Use a div inside a div and apply shadow to each one.

How do you add a shadow to only one side?

To apply a shadow effect only on one side of an element set the blur value to a positive number and set the spread value to the same size but with a negative sign. Depending on which side you want the shadow on, set the offset value as follows: Top shadow: offset-x: 0 and offset-y: -5px.

What is blur radius in box shadow?

The blur radius (required), if set to 0 the shadow will be sharp, the higher the number, the more blurred it will be, and the further out the shadow will extend. For instance a shadow with 5px of horizontal offset that also has a 5px blur radius will be 10px of total shadow.

How do I get rid of box shadow on top?

Place a second div, width 100% and its background the same color as the main div, then position it to cover over the box-shadow, like so. background-color: your background color? width:100%; position:absolute; height 15px; left 0; top -10px; You may need to tweek the height to patch over the box shadow.


1 Answers

There is a fourth distance you can define called the spread offset, which moves the shadow in or out on all 4 sides. So if you set that to the negative of the blur distance, this will shift the shadow inwards by the same distance as the blur extends the shadow outwards effectively hiding it. Of course this will also shift the shadow inwards on the side you do want it to appear so you'll need to increase the offset by the blur distance to undo that. i.e.

box-shadow: (horizontal + blur) 0px (blur) (-blur) color; 

So in your example:

box-shadow: -8px 0px 5px -5px rgba(0,0,0,.8), 8px 0px 5px -5px rgba(0,0,0,.8); 
like image 158
Michael Avatar answered Sep 23 '22 21:09

Michael