Apakah ada cara untuk menjatuhkan bayangan hanya di bagian bawah? Saya memiliki menu dengan 2 gambar di sebelah satu sama lain. Saya tidak ingin bayangan yang tepat karena tumpang tindih dengan gambar yang tepat. Saya tidak suka menggunakan gambar untuk ini, jadi apakah ada cara untuk menjatuhkannya hanya di bagian bawah seperti:
box-shadow-bottom: 10px #FFF;
atau serupa?
-moz-box-shadow: 0px 3px 3px #000;
-webkit-box-shadow: 0px 3px 3px #000;
box-shadow-bottom: 5px #000;
/* For IE 8 */
-ms-filter: "progid:DXImageTransform.Microsoft.Shadow(Strength=4, Direction=180, Color='#000000')";
/* For IE 5.5 - 7 */
filter: progid:DXImageTransform.Microsoft.Shadow(Strength=4, Direction=180, Color='#000000');
box-shadow-bottom
yang tidak ada, dan tidak didukung oleh siapa pun. Lihat nicolasgallagher.com/css-drop-shadows-without-images/demo untuk teknik bayangan kotak yang sah.filter
akan berfungsi di IE8 dan IE9 juga. Tidak perlu-ms-filter
dalam hal ini.Jawaban:
PEMBARUAN 4
Sama seperti pembaruan 3 tetapi dengan css modern (= aturan kurang) sehingga tidak diperlukan pemosisian khusus pada elemen pseudo.
PEMBARUAN 3
Semua jawaban saya sebelumnya telah menggunakan markup tambahan untuk mendapatkan efek ini, yang belum tentu diperlukan. Saya pikir ini solusi yang jauh lebih bersih ... satu-satunya trik adalah bermain-main dengan nilai-nilai untuk mendapatkan posisi bayangan yang tepat serta kekuatan / opacity bayangan yang tepat. Ini biola baru, menggunakan elemen semu :
http://jsfiddle.net/UnsungHero97/ARRRZ/2/
HTML
CSS
PEMBARUAN 2
Rupanya, Anda dapat melakukan ini hanya dengan parameter tambahan ke kotak-bayangan CSS seperti yang semua orang lain tunjukkan. Inilah demo:
http://jsfiddle.net/K88H9/821/
CSS
Ini akan menjadi solusi yang lebih baik. Parameter tambahan yang ditambahkan dijelaskan sebagai:
MEMPERBARUI
Lihatlah demo di jsFiddle: http://jsfiddle.net/K88H9/4/
Apa yang saya lakukan adalah membuat "elemen bayangan" yang akan bersembunyi di balik elemen sebenarnya yang Anda ingin memiliki bayangan. Saya membuat lebar "elemen bayangan" menjadi persis kurang lebar dari elemen sebenarnya dengan 2 kali bayangan yang Anda tentukan; kemudian saya menyelaraskannya dengan benar.
HTML
CSS
Jawaban Asli
Ya, Anda dapat melakukan ini dengan sintaks yang sama dengan yang Anda berikan. Nilai pertama mengontrol posisi horisontal dan nilai kedua mengontrol posisi vertikal. Jadi cukup atur nilai pertama ke
0px
dan yang kedua untuk offset apa pun yang Anda inginkan sebagai berikut:Untuk info lebih lanjut tentang bayangan kotak, periksa ini:
Saya harap ini membantu.
sumber
box-shadow: 0 2px 4px #000000
adalah nilai blur. Lihat di sini http://jsfiddle.net/K88H9/7/ . Tetapi Anda akan melihat bahwa ada sedikit kekaburan di sebelah kiri dan kanan elemen, di mana dalam solusi Hristo tidak ada.box-shadow-bottom
Sementara kreatif, sebenarnya tidak ada.Cukup gunakan parameter sebaran untuk membuat bayangan lebih kecil:
Demo langsung: http://dabblet.com/gist/a8f8ba527f5cff607327
Untuk tidak melihat bayangan di sisi, nilai (absolut dari) radius spread (parameter ke-4) harus sama dengan radius blur (parameter ke-3).
sumber
box-shadow:0 8px 4px -6px
dan Anda hanya akan melihat bayangan bagian bawah!Jika Anda memiliki warna tetap pada latar belakang, Anda dapat menyembunyikan efek bayangan sisi dengan dua bayangan masking yang memiliki warna latar yang sama dan blur = 0, contoh:
Perhatikan bahwa bayangan hitam harus menjadi yang terakhir, dan memiliki penyebaran negatif (-3px) untuk mencegahnya menyebar melampaui sudut.
Di sini biola (mengubah warna bayangan masking untuk melihat bagaimana hal itu benar-benar bekerja).
sumber
transparent
warna untuk bayangan masking, bukan?Saya pikir ini yang Anda cari?
sumber
Itu selalu lebih baik untuk membaca spesifikasi . Tidak ada
box-shadow-bottom
properti, dan seperti yang Lea tunjukkan, Anda harus selalu menempatkan properti yang tidak diawali di bagian bawah, setelah yang diawali.Jadi begitu:
sumber
Bagaimana kalau hanya menggunakan div yang berisi overflow diatur ke tersembunyi dan beberapa padding di bagian bawah? Ini sepertinya solusi paling sederhana.
Maaf untuk mengatakan bahwa saya tidak memikirkan ini sendiri tetapi melihatnya di tempat lain .
Seperti yang dikatakan oleh Jorgen Evens .
sumber
padding-bottom
(misalkan 5px), Anda juga bisa menetapkan negatifmargin-bottom
(-5px) untuk mengimbangi ruang yang ditambahkan.Anda juga dapat menggunakan
clip-path
untuk memotong (menyembunyikan) semua tepi yang meluap tetapi yang ingin Anda tampilkan:Lihat clip-path (MDN) . Argumen untuk
polygon
adalah titik kiri atas , titik kanan atas , titik kanan bawah , dan titik kiri bawah . Dengan mengatur tepi bawah ke200%
(atau angka apa pun yang lebih besar dari100%
) Anda membatasi luapan Anda hanya ke tepi bawah.sumber
Saya juga membutuhkan bayangan tetapi hanya di bawah gambar dan diatur dalam sedikit kiri dan kanan. Ini bekerja untuk saya:
Elemen yang digunakan untuk ini adalah gambar halaman-lebar (980px x 300px).
Jika itu membantu ketika mengutak-atik pengaturan, mereka dijalankan sebagai berikut:
bayangan horizontal, bayangan vertikal, jarak blur, penyebaran (ukuran bayangan), dan warna.
sumber
Lebih baik mencari bayangan:
kode ini sedang digunakan di web stackoverflow.
sumber
Pena kode ini (bukan oleh saya) menunjukkan cara super sederhana untuk melakukan ini dan pihak lain dengan cukup baik:
https://codepen.io/zeckdude/pen/oxywmm
sumber
Jika latar belakang Anda solid (atau Anda dapat mereproduksi menggunakan CSS), Anda dapat menggunakan gradien linier seperti itu:
Ini akan menghasilkan gradien 5px di bagian bawah elemen, dari hitam pada opacity 30% hingga sepenuhnya transparan. Sisa elemen memiliki latar belakang putih. Tentu saja, dengan mengubah 2 pemberhentian warna terakhir dari gradien linier, Anda dapat membuat latar belakang sepenuhnya transparan.
sumber
Anda juga bisa hanya melakukan gradien di bagian bawah - ini membantu saya karena bayangan yang saya inginkan adalah pada elemen yang sudah semi-transparan, jadi saya tidak perlu khawatir tentang kliping:
Jadikan properti "bawah" dan "tinggi" cocok dan atur nilai rgba Anda ke apa pun yang Anda inginkan berada di bagian atas / bawah bayangan
sumber
Anda dapat melakukannya seperti ini:
Sintaks umum:
Contoh: kami hanya ingin membuat bayangan kotak bagian bawah dengan warna merah,
jadi untuk melakukan itu kita harus mengatur semua opsi sisi di mana kita harus mengatur opsi bayangan kotak bawah dan mengatur semua yang lain kosong sebagai berikut:
sumber
memperbarui pada orang lain jawabannya sisi transparan, bukan putih sehingga berfungsi pada latar belakang warna lain juga.
sumber
bayangan batin
sumber