Is there a way to use two CSS3 box shadows on one element?
Asked Answered
C

2

190

I'm trying to replicate a button style in a Photoshop mock-up that has two shadows on it. The first shadow is an inner lighter box shadow (2px), and the second is a drop shadow outside the button (5px) itself.

enter image description here

In Photoshop this is easy - Inner Shadow and Drop Shadow. In CSS I can apparently have one or the other, but not both at the same time.

If you try the code below in a browser, you'll see that the box-shadow overrides the inset box-shadow.

Here's the inset box shadow:

box-shadow: inset 0 2px 0px #dcffa6;

And this is what I would like for the drop shadow on the button:

box-shadow: 0 2px 5px #000;

For context, here's my full button code (with gradients and all):

button {
    outline: none;
    position: relative;
    width: 160px;
    height: 40px;
    font-family: 'Open Sans', sans-serif;
    color: #fff;
    font-weight: 800;
    font-size: 12px;
    text-shadow: 0px 1px 3px black; 
    border-radius: 3px;
    background-color: #669900;
    background: -webkit-gradient(linear, left top, left bottom, from(#97cb52), to(#669900));
    background: -moz-linear-gradient(top, #97cb52, #669900);
    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#97cb52', endColorstr='#669900');
    box-shadow: inset 0 2px 0px #dcffa6;
    box-shadow: 0 2px 5px #000;
    border: 1px solid #222;
    cursor: pointer;
}
Classicize answered 19/12, 2011 at 2:41 Comment(0)
I
475

You can comma-separate shadows:

box-shadow: inset 0 2px 0px #dcffa6, 0 2px 5px #000;
Import answered 19/12, 2011 at 2:46 Comment(2)
Also mention that the first declared shadow is on to of the following one(s) jsfiddle.net/webtiki/s9pkjInfrasonic
You're missing the spead radius btw; that can make quite a difference. Also the opacity on the shadow really can make a difference. You can play with box shadows if you open dev tools here on my blog entry. fullstack.life/css3-multiple-box-shadows.htmlParticolored
P
23

Box shadows can use commas to have multiple effects, just like with background images (in CSS3).

Persas answered 19/12, 2011 at 2:45 Comment(3)
While you can apply multiple shadows, applying inset shadows, I've found, is a special case. (But then that case only applied to images, I guess).Persas
Really? I'm on mobile at the moment so I can't check; but I'd not heard that reported before...I'll look into that, tomorrow, after work. =/Import
If you want an inset shadow on an image you have to set an element or pseudoelement on top. It can be tricky.Persas

© 2022 - 2024 — McMap. All rights reserved.