Saya mencoba menggunakan :before
pemilih untuk menempatkan gambar di atas gambar lain, tetapi saya menemukan bahwa itu tidak berfungsi untuk menempatkan gambar di depan img
elemen, hanya beberapa elemen lainnya. Secara khusus, gaya saya adalah:
.container
{
position: relative;
display: block;
}
.overlay:before
{
content: url(images/[someimage].png);
position: absolute;
left:-20px;
top: -20px;
}
dan saya menemukan bahwa ini berfungsi dengan baik:
<a href="[url]" class="container">
<span class="overlay"/>
<img width="200" src="[url]"/>
</a>
tetapi ini tidak:
<a href="[url]" class="container">
<img width="200" src="[url]" class="overlay"/>
</a>
Saya bisa menggunakan elemen div
atau p
bukan itu span
, dan browser dengan benar overlay gambar saya di atas gambar di img
elemen, tetapi jika saya menerapkan kelas overlay ke img
itu sendiri, itu tidak berfungsi.
Saya ingin ini berfungsi karena tambahan itu span
menyinggung perasaan saya, tetapi yang lebih penting, saya punya sekitar 100 posting blog yang ingin saya modifikasi, dan saya bisa melakukan ini dalam sekali jalan jika saya bisa memodifikasi stylesheet, tetapi jika saya harus kembali dan menambahkan span
elemen tambahan di antara elemen a
dan img
, ini akan menjadi lebih banyak pekerjaan.
Jawaban:
Sayangnya, sebagian besar browser tidak mendukung penggunaan
:after
atau:before
pada tag img.http://lildude.co.uk/after-css-property-for-img-tag
Namun, itu mungkin bagi Anda untuk mencapai apa yang Anda butuhkan dengan JavaScript / jQuery. Lihat biola ini:
http://jsfiddle.net/xixonia/ahnGT/
Edit :
Untuk alasan mengapa ini tidak didukung, periksa jawaban coreyward .
sumber
Penyeleksi pseudo sebelum dan sesudah tidak memasukkan elemen HTML - mereka menyisipkan teks sebelum atau setelah konten yang ada dari elemen yang ditargetkan. Karena elemen gambar tidak mengandung teks atau memiliki keturunan, tidak ada
img:before
atauimg:after
tidak ada gunanya bagimu. Ini juga merupakan kasus untuk elemen seperti<br>
dan<hr>
untuk alasan yang sama.sumber
content: url(/img/foo.jpg);
sintaks. Lihat w3.org/TR/CSS21/generate.html untuk detailnya.Saya menemukan cara untuk membuat karya ini dalam css murni:
The Aku hanya konten palsu -metode
metode CSS murni untuk mengaktifkan img: after.
Anda dapat melihat CodePen: Saya hanya konten palsu atau melihat sumbernya .
Sumber & Cuplikan
Dukungan browser
✓ Chrome 10+
✓ Firefox 11+
✓ Opera 9.8+
✓ Safari
Tidak ada dukungan
⊗ Internet Explorer 8/9
Silakan uji di browser lain
sumber
Karena sifat
<img>
menjadi elemen yang diganti , styling dokumen tidak memengaruhinya.Untuk merujuknya,
<picture>
berikan pembungkus asli yang ideal yang dapat memiliki elemen pseudo yang melekat padanya, seperti:sumber
Berikut solusi lain menggunakan wadah div untuk img saat menggunakan
:hover::after
untuk mencapai efek.HTML sebagai berikut:
CSS sebagai berikut:
Untuk melihatnya beraksi, lihat biola yang saya buat. Supaya Anda tahu ini ramah lintas browser dan tidak perlu mengelabui kode dengan 'konten palsu'.
sumber
display: inline-block
untuk#img_container
. Itu akan membuat lebar wadah sama dengan gambar di semua ukuran layar. Jadi, Anda tidak memiliki:after
konten yang mengambang di luar gambar.Saya pikir cara terbaik untuk melihat mengapa ini tidak berhasil adalah: sebelum dan: setelah memasukkan konten mereka sebelum atau setelah konten dalam tag yang Anda gunakan untuk menerapkannya. Jadi ini berfungsi dengan divs atau span (atau kebanyakan tag lain) karena Anda dapat memasukkan konten di dalamnya.
Namun, img adalah tag penutup mandiri, dan karena tag tersebut tidak memiliki tag penutup terpisah, Anda tidak dapat memasukkan apa pun di dalamnya. (Itu perlu terlihat seperti
<img>Content</img>
, tetapi tentu saja itu tidak berhasil.)Saya tahu ini adalah topik lama, tetapi muncul pertama kali di Google, jadi semoga ini akan membantu orang lain belajar.
sumber
Yang ini bekerja untuk saya:
html
CSS
sumber
Elemen pseudo yang dihasilkan oleh :: before dan :: after terkandung oleh kotak pemformatan elemen, dan karenanya tidak berlaku untuk elemen yang diganti seperti img, atau untuk elemen br.
https://developer.mozilla.org/en-US/docs/Web/CSS/::after
sumber
::after
dapat digunakan untuk menampilkan gambar mundur dari suatu gambarLihat contoh di bawah, 2
img
tag pertama menunjukkan url yang rusak. Tetapi yang kedua menampilkan gambar mundur bukan logo rusak standar dari browser. Namun, saya tidak yakin ini praktis, saya merasa agak sulit untuk membuatnya berfungsi dengan benar.sumber
Coba kode ini
sumber
Saya mencoba dan menemukan metode yang lebih sederhana untuk melakukannya. Ini HTML-nya:
Apa yang saya lakukan adalah menempatkan
<p>
tag kosong setelah tag gambar saya. Sekarang saya akan menggunakan p :: before untuk menampilkan gambar dan memposisikannya sesuai dengan kebutuhan saya. Inilah CSS-nya:Cobalah.
sumber
Coba :: setelah pada elemen sebelumnya.
sumber