Apakah mungkin untuk hanya memiliki kotak-bayangan sisipan di satu sisi div? Perhatikan bahwa saya sedang berbicara tentang bayangan kotak sisipan di sini, bukan bayangan kotak luar normal.
Misalnya, di JSFiddle berikut, Anda akan melihat bayangan sisipan muncul di keempat sisi, dalam derajat yang berbeda-beda.
Bagaimana cara membuatnya HANYA ditampilkan di atas? Atau paling HANYA di atas dan bawah?
JSFiddle: http://jsfiddle.net/ahmadka/KFrun/
.box {
-webkit-box-shadow: inset 0px 5px 10px 1px #000000;
box-shadow: inset 0px 5px 10px 1px #000000;
}
.text {
padding: 20px;
}
<div class="box">
<div class="text">
Lorem ipsum ....
</div>
</div>
Jawaban:
Inilah yang Anda cari. Ini memiliki contoh untuk setiap sisi yang Anda inginkan dengan bayangan.
Lihat cuplikan untuk contoh lainnya:
Tampilkan cuplikan kode
sumber
Triknya adalah bagian
.box-inner
dalam kedua , yang lebarnya lebih besar dari aslinya.box
, danbox-shadow
diterapkan untuk itu.Kemudian, tambahkan lebih banyak bantalan untuk
.text
menutupi lebar yang ditambahkan.Beginilah tampilan logikanya:
Dan inilah cara melakukannya di CSS:
Gunakan lebar maksimal
.inner-box
agar tidak menyebabkan.box
lebih lebar, danoverflow
untuk memastikan sisa terpotong:110% lebih lebar dari induk yang 100% dalam konteks anak (harus sama jika induk
.box
memiliki lebar tetap, misalnya). Margin negatif membuat lebar dan menyebabkan elemen berada di tengah (bukan hanya bagian kanan yang bersembunyi):Dan tambahkan beberapa padding pada sumbu X untuk membuat lebih luas
.inner-box
:Ini Biola yang berfungsi.
Jika Anda memeriksa Fiddle, Anda akan melihat:
sumber
div
untuk menyembunyikan bayangan ... jsfiddle.net/KFrun/19Agak terlambat, tetapi jawaban duplikat yang tidak memerlukan pengubahan padding atau menambahkan div tambahan dapat ditemukan di sini: Memiliki masalah dengan bagian bawah Inset box-shadow saja . Bunyinya, "Gunakan nilai negatif untuk panjang keempat yang menentukan jarak sebaran. Ini sering diabaikan, tetapi didukung oleh semua browser utama"
Dari biola penjawab :
sumber
Ini hampir saja.
sumber
coba saja, semoga bermanfaat ...
di atas
CSS
karena Anda memiliki bayangan kotak di bawah.Anda bisa lebih merah di sini
sumber
Ini mungkin bukan hal yang Anda cari, tetapi Anda dapat membuat efek yang sangat mirip dengan menggunakan
rgba
kombinasi denganlinear-gradient
:Ini menciptakan gradien linier dari hitam dengan 50% opacity (
rgba(0,0,0,.5)
) ke transparent (rgba(0,0,0,0)
) yang mulai transparan 30% dari atas. Anda dapat bermain-main dengan nilai-nilai itu untuk menciptakan efek yang Anda inginkan. Anda dapat memilikinya di sisi lain dengan menambahkan nilai derajat (linear-gradient(90deg, rgba(0,0,0,.5) 0%, rgba(0,0,0,0) 30%)
) atau mengganti warnanya. Jika Anda menginginkan bayangan yang sangat kompleks seperti sudut yang berbeda di sisi yang berbeda, Anda bahkan dapat mulai melapisilinear-gradient
.Berikut ini cuplikan untuk melihatnya beraksi:
sumber
Inset Box Shadow hanya di sisi Atas?
sumber