Saya mencoba menambahkan hamparan hitam transparan ke gambar setiap kali mouse mengarahkan kursor ke gambar hanya dengan CSS. Apakah ini mungkin? Saya mencoba ini:
http://jsfiddle.net/Zf5am/565/
Tapi saya tidak bisa menampilkan div.
<div class="image">
<img src="http://www.newyorker.com/online/blogs/photobooth/NASAEarth-01.jpg" alt="" />
<div class="overlay" />
</div>
.image {
position: relative;
border: 1px solid black;
width: 200px;
height: 200px;
}
.image img {
max-width: 100%;
max-height: 100%;
}
.overlay {
position: absolute;
top: 0;
left: 0;
display: none;
background-color: red;
z-index: 200;
}
.overlay:hover {
display: block;
}
Jawaban:
Saya menyarankan menggunakan elemen pseudo sebagai pengganti elemen overlay. Karena elemen pseudo tidak dapat ditambahkan pada
img
elemen tertutup , Anda masih perlu membungkusimg
elemen tersebut.CONTOH LANGSUNG DI SINI - CONTOH DENGAN TEKS
Sedangkan untuk CSS, atur dimensi opsional pada
.image
elemen, dan posisikan secara relatif. Jika Anda menginginkan gambar yang responsif, hilangkan saja dimensinya dan ini akan tetap berfungsi (contoh) . Perlu dicatat bahwa dimensi harus berada pada elemen induk sebagai lawan dariimg
elemen itu sendiri, lihat .Beri
img
elemen turunan selebar100%
induknya dan tambahkanvertical-align:top
untuk memperbaiki masalah perataan garis dasar default.Sedangkan untuk elemen pseudo, atur nilai konten dan posisikan secara absolut relatif terhadap
.image
elemen. Lebar / tinggi100%
akan memastikan bahwa ini berfungsi dengan berbagaiimg
dimensi. Jika Anda ingin mentransisikan elemen, setel opasitas0
dan tambahkan properti / nilai transisi.Gunakan opasitas
1
saat mengarahkan kursor ke elemen semu untuk memfasilitasi transisi:HASIL AKHIR DI SINI
Jika Anda ingin menambahkan teks saat hover:
Untuk pendekatan paling sederhana, cukup tambahkan teks sebagai nilai elemen semu
content
:CONTOH DI SINI
Itu seharusnya bekerja dalam banyak hal; namun, jika Anda memiliki lebih dari satu
img
elemen, Anda mungkin tidak ingin teks yang sama muncul saat mengarahkan kursor. Oleh karena itu, Anda dapat menyetel teks dalamdata-*
atribut dan karenanya memiliki teks unik untuk setiapimg
elemen.CONTOH DI SINI
Dengan
content
nilaiattr(data-content)
, elemen pseudo menambahkan teks dari atribut.image
elemendata-content
:Anda dapat menambahkan beberapa gaya dan melakukan sesuatu seperti ini:
CONTOH DI SINI
Pada contoh di atas,
:after
elemen pseudo berfungsi sebagai overlay hitam, sedangkan:before
elemen pseudo adalah caption / teks. Karena elemen tidak bergantung satu sama lain, Anda dapat menggunakan gaya terpisah untuk pemosisian yang lebih optimal.sumber
top:30%
berfungsi, lihat biola saya , tetapi untuk tata letak yang responsif alangkah baiknya mengaturnya ke tengah yang tepat. BTW: Terima kasih untuk annswer yang bagus ini.top: 50%
/transform: translateY(-50%)
untuk pemusatan vertikal. Ini adalah salah satu pendekatan yang disebutkan dalam jawaban lain ini jika milik saya - stackoverflow.com/questions/5703552/…Filter CSS3
Meskipun fitur ini hanya diterapkan di webkit, dan tidak memiliki kompatibilitas browser , tetapi ada baiknya untuk melihat:
Demo JSFiddle
Referensi
Topik serupa di SO
sumber
Anda sudah dekat. Ini akan berhasil:
Anda perlu meletakkan
:hover
gambar di atas, dan membuat.overlay
sampul seluruh gambar dengan menambahkanright:0;
danbottom:0
.jsfiddle: http://jsfiddle.net/Zf5am/569/
sumber
Berikut adalah cara yang baik untuk menggunakan: setelah div gambar, sebagai ganti div overlay ekstra: http://jsfiddle.net/Zf5am/576/
sumber
.overlay
tidak memiliki tinggi atau lebar dan tidak ada konten, dan Anda tidak dapat mengarahkan kursor ke atasdisplay:none
.Saya malah memberi div ukuran dan posisi yang sama seperti
.image
dan mengubahRGBA
nilai pada hover.http://jsfiddle.net/Zf5am/566/
sumber
Anda dapat melakukannya dengan bermain-main dengan opacity gambar dan mengatur warna latar belakang gambar menjadi hitam. Dengan membuat gambar menjadi transparan, maka akan tampak lebih gelap.
CSS:
Anda mungkin perlu menyetel opasitas khusus browser juga agar ini berfungsi di browser lain juga.
sumber
Saya akan memberikan min-height dan min-width ke div overlay Anda dari ukuran gambar, dan mengubah warna latar belakang saat hover
sumber
Lihat apa yang telah saya lakukan di sini: http://jsfiddle.net/dyarbrough93/c8wEC/
Pertama, Anda tidak pernah mengatur dimensi overlay, yang berarti overlay tidak muncul di tempat pertama. Kedua, saya sarankan hanya mengubah indeks-z hamparan saat Anda mengarahkan kursor ke gambar. Ubah opacity / warna overlay agar sesuai dengan kebutuhan Anda.
sumber