Apakah ada cara untuk menggunakan dua bayangan kotak CSS3 pada satu elemen?

157

Saya mencoba mereplikasi gaya tombol di mock-up Photoshop yang memiliki dua bayangan. Bayangan pertama adalah bayangan kotak yang lebih ringan (2px), dan yang kedua adalah drop shadow di luar tombol (5px) itu sendiri.

masukkan deskripsi gambar di sini

Di Photoshop ini mudah - Inner Shadow dan Drop Shadow. Dalam CSS saya tampaknya dapat memiliki satu atau yang lain, tetapi tidak keduanya sekaligus.

Jika Anda mencoba kode di bawah ini di browser, Anda akan melihat bahwa bayangan kotak menimpa bayangan kotak inset.

Inilah bayangan kotak inset:

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

Dan inilah yang saya inginkan untuk drop shadow pada tombol:

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

Untuk konteks, inilah kode tombol lengkap saya (dengan gradien dan semua):

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;
}
Benjamin Humphrey
sumber

Jawaban:

407

Anda dapat memisahkan bayangan:

box-shadow: inset 0 2px 0px #dcffa6, 0 2px 5px #000;
David mengatakan mengembalikan Monica
sumber
6
Juga sebutkan bahwa bayangan yang dideklarasikan pertama adalah dari yang berikut ini: jsfiddle.net/webtiki/s9pkj
web-tiki
Anda kehilangan radius spead btw; itu bisa membuat perbedaan. Juga opacity pada bayangan benar-benar dapat membuat perbedaan. Anda dapat bermain dengan bayangan kotak jika Anda membuka alat dev di sini di entri blog saya. fullstack.life/css3-multiple-box-shadows.html
fullstacklife
17

Box shadows dapat menggunakan koma untuk memiliki banyak efek, sama seperti dengan gambar latar belakang (dalam CSS3).

JayC
sumber
Meskipun Anda dapat menerapkan beberapa bayangan, menerapkan bayangan inset , saya temukan, adalah kasus khusus. (Tapi kalau begitu case itu hanya berlaku untuk gambar, kurasa).
JayC
Betulkah? Saya sedang menggunakan ponsel saat ini sehingga saya tidak dapat memeriksa; tapi aku belum pernah mendengar yang dilaporkan sebelumnya ... aku akan memeriksa itu, besok, setelah bekerja. = /
David mengatakan mengembalikan Monica
Jika Anda ingin bayangan inset pada gambar, Anda harus mengatur elemen atau elemen semu di atas. Ini bisa rumit.
JayC