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;
}

Jawaban:


407

Anda dapat memisahkan bayangan:

box-shadow: inset 0 2px 0px #dcffa6, 0 2px 5px #000;

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).


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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.