Saya memiliki bilah navigasi tab di mana saya ingin tab yang terbuka memiliki bayangan untuk membedakannya dari tab lain. Saya juga ingin seluruh bagian tab memiliki satu bayangan (lihat garis horizontal bawah) naik, menaungi bagian bawah semua tab kecuali yang terbuka.
Saya akan menggunakan box-shadow
properti CSS3 untuk melakukannya, tetapi saya tidak dapat menemukan cara untuk membuat bayangan hanya pada bagian yang saya inginkan.
Biasanya saya akan menutupi bayangan bawah tab yang terbuka dengan area konten (lebih tinggi z-index
), tetapi dalam kasus ini area konten itu sendiri memiliki bayangan sehingga hanya menutupi tab.
Tata letak tab
_______ _______ _______ | | | | | | ____ | _______ | __ | | __ | _______ | ______
Garis bayangan.
Bayangan akan naik dari garis horizontal, dan keluar dari garis vertikal.
_______ | | _______________ | | _________________
Berikut adalah contoh langsungnya:
Ada bantuan di luar sana, jenius?
Jawaban:
Dalam contoh Anda, buat div di dalam #content dengan gaya ini
dan ubah gaya #content (hapus paddings) dan tambahkan bayangan
tambahkan bayangan ke tab:
sumber
#content_over_shadow
seharusnya benar-benar#content
bergaya.Potong dengan luapan.
sumber
z-index
Anda dapat menggunakan beberapa bayangan CSS tanpa div lain untuk mendapatkan efek yang diinginkan, dengan peringatan tidak ada bayangan di sekitar sudut.
Secara keseluruhan meskipun sangat tidak mengganggu.
sumber
Satu lagi, cara yang agak kreatif, untuk memecahkan masalah ini adalah menambahkan: setelah atau: sebelum elemen semu ke salah satu elemen. Dalam kasus saya, tampilannya seperti ini:
Lihat tangkapan layar, buat elemen semu menjadi merah agar lebih terlihat.
sumber
Secara pribadi saya paling suka solusi yang ditemukan di sini: http://css3pie.com/demos/tabs/
Ini memungkinkan Anda memiliki status nol atau status hover dengan warna latar belakang yang masih memiliki bayangan dari konten di bawah yang melapisinya. Tidak yakin itu mungkin dengan metode di atas:
MEMPERBARUI:
Sebenarnya saya salah. Anda dapat membuat solusi yang diterima mendukung status hover yang ditunjukkan di atas. Melakukan hal ini:
Alih-alih memiliki relatif positif di a, letakkan di kelas a.active dengan indeks-z yang lebih tinggi dari div #content Anda di bawah (yang memiliki bayangan di atasnya) tetapi lebih rendah dari indeks-z di content_wrapper.
Sebagai contoh:
lalu dengan css Anda:
sumber
Memperbarui:
clip-path
sekarang didukung di semua browser utama.Jawaban Asli:
Jika Anda ingin menggunakan teknologi eksperimental dengan dukungan parsial , Anda dapat menggunakan
clip-path
properti .Ini akan menghasilkan efek yang diinginkan: bayangan kotak di sisi atas, kiri dan kanan dengan potongan bersih di tepi bawah.
Dalam kasus Anda, Anda akan menggunakan clip-path: inset (px px px px); di mana nilai piksel dihitung dari tepi yang dimaksud (lihat di bawah).
Ini akan memotong div yang dimaksud di:
Perhatikan bahwa tidak ada koma yang diperlukan di antara nilai piksel.
Ukuran div bisa fleksibel.
sumber
Anda juga dapat menutupi bayangan menggunakan beberapa bayangan kotak.
box-shadow: 0 10px 0 #fff, 0 0 10px #ccc;
sumber
Jika Anda menambahkan dua bentang untuk dihubungkan maka Anda bisa menggunakan dua, seperti:
pada satu rentang dan
yang lain. Mungkin berhasil!
Jika bayangan tumpang tindih, Anda bahkan bisa menggunakan 3 bayangan - satu 1px ke kiri, satu 1px ke kanan dan satu 1px ke atas, atau seberapa tebal Anda menginginkannya.
sumber
Saya melakukan semacam peretasan, tidak sempurna, tetapi kelihatannya oke:
SCSS
sumber