Saya menyarankan menggunakan elemen pseudo sebagai pengganti elemen overlay. Karena elemen pseudo tidak dapat ditambahkan pada imgelemen tertutup , Anda masih perlu membungkus imgelemen tersebut.
CONTOH LANGSUNG DI SINI - CONTOH DENGAN TEKS
<div class="image">
<img src="http://i.stack.imgur.com/Sjsbh.jpg" alt="" />
</div>
Sedangkan untuk CSS, atur dimensi opsional pada .imageelemen, 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 dari imgelemen itu sendiri, lihat .
.image {
position: relative;
width: 400px;
height: 400px;
}
Beri imgelemen turunan selebar 100%induknya dan tambahkan vertical-align:topuntuk memperbaiki masalah perataan garis dasar default.
.image img {
width: 100%;
vertical-align: top;
}
Sedangkan untuk elemen pseudo, atur nilai konten dan posisikan secara absolut relatif terhadap .imageelemen. Lebar / tinggi 100%akan memastikan bahwa ini berfungsi dengan berbagai imgdimensi. Jika Anda ingin mentransisikan elemen, setel opasitas 0dan tambahkan properti / nilai transisi.
.image:after {
content: '\A';
position: absolute;
width: 100%; height:100%;
top:0; left:0;
background:rgba(0,0,0,0.6);
opacity: 0;
transition: all 1s;
-webkit-transition: all 1s;
}
Gunakan opasitas 1saat mengarahkan kursor ke elemen semu untuk memfasilitasi transisi:
.image:hover:after {
opacity: 1;
}
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
.image:after {
content: 'Here is some text..';
color: #fff;
/* Other styling.. */
}
Itu seharusnya bekerja dalam banyak hal; namun, jika Anda memiliki lebih dari satu imgelemen, Anda mungkin tidak ingin teks yang sama muncul saat mengarahkan kursor. Oleh karena itu, Anda dapat menyetel teks dalam data-*atribut dan karenanya memiliki teks unik untuk setiap imgelemen.
CONTOH DI SINI
.image:after {
content: attr(data-content);
color: #fff;
}
Dengan contentnilai attr(data-content), elemen pseudo menambahkan teks dari atribut .imageelemen data-content:
<div data-content="Text added on hover" class="image">
<img src="http://i.stack.imgur.com/Sjsbh.jpg" alt="" />
</div>
Anda dapat menambahkan beberapa gaya dan melakukan sesuatu seperti ini:
CONTOH DI SINI
Pada contoh di atas, :afterelemen pseudo berfungsi sebagai overlay hitam, sedangkan :beforeelemen pseudo adalah caption / teks. Karena elemen tidak bergantung satu sama lain, Anda dapat menggunakan gaya terpisah untuk pemosisian yang lebih optimal.
.image:after, .image:before {
position: absolute;
opacity: 0;
transition: all 0.5s;
-webkit-transition: all 0.5s;
}
.image:after {
content: '\A';
width: 100%; height:100%;
top: 0; left:0;
background:rgba(0,0,0,0.6);
}
.image:before {
content: attr(data-content);
width: 100%;
color: #fff;
z-index: 1;
bottom: 0;
padding: 4px 10px;
text-align: center;
background: #f00;
box-sizing: border-box;
-moz-box-sizing:border-box;
}
.image:hover:after, .image:hover:before {
opacity: 1;
}