Saya memiliki situs dengan banyak halaman dan gambar latar belakang yang berbeda, dan saya menampilkannya dari CSS seperti:
body.page-8 {
background: url("../img/pic.jpg") no-repeat scroll center top #000;
background-size: cover;
}
Namun, saya ingin menampilkan gambar (layar penuh) yang berbeda pada satu halaman menggunakan <img>
elemen, dan saya ingin mereka memiliki properti yang sama dengan properti di atas background-image: cover;
(gambar tidak dapat ditampilkan dari CSS, mereka harus ditampilkan dari dokumen HTML).
Biasanya saya menggunakan:
div.mydiv img {
width: 100%;
}
Atau:
div.mydiv img {
width: auto;
}
untuk membuat gambar penuh dan responsif. Namun gambar menyusut terlalu banyak ( width: 100%
) ketika layar menjadi terlalu sempit, dan menunjukkan warna latar belakang tubuh di layar bawah. Metode lain width: auto;
,, hanya membuat gambar ukuran penuh dan tidak menanggapi ukuran layar.
Apakah ada cara untuk menampilkan gambar dengan cara yang background-size: cover
sama?
Jawaban:
Solusi # 1 - Properti objek-fit (Tidak memiliki dukungan IE )
Hanya mengatur
object-fit: cover;
img.Lihat MDN - mengenai
object-fit: cover
:Juga, lihat demo Codepen ini yang membandingkan
object-fit: cover
diterapkan ke gambar denganbackground-size: cover
diterapkan ke gambar latar belakangSolusi # 2 - Ganti img dengan gambar latar belakang dengan css
sumber
Sebenarnya ada solusi css yang cukup sederhana yang bahkan bekerja di IE8:
sumber
Dengan asumsi Anda dapat mengatur untuk memiliki elemen wadah yang ingin Anda isi, ini tampaknya berfungsi, tetapi terasa agak seperti peretasan. Intinya, saya hanya menggunakan
min/max-width/height
pada area yang lebih besar dan kemudian skala area itu kembali ke dimensi aslinya.sumber
Saya menemukan solusi sederhana untuk meniru penutup dan isi, yang merupakan CSS murni, dan berfungsi untuk wadah dengan dimensi dinamis, dan juga tidak membuat batasan pada rasio gambar.
Perhatikan bahwa jika Anda tidak perlu mendukung IE, atau Edge sebelum 16, maka Anda lebih baik menggunakan objek-fit.
ukuran latar: penutup
1000% digunakan di sini jika ukuran alami gambar lebih besar dari ukuran yang ditampilkan. Misalnya, jika gambarnya 500x500, tetapi wadahnya hanya 200x200. Dengan solusi ini, gambar akan diubah ukurannya menjadi 2000x2000 (karena min-width / min-height), kemudian diperkecil menjadi 200x200 (karena
transform: scale(0.1)
).Faktor x10 dapat diganti dengan x100 atau x1000, tetapi biasanya tidak ideal untuk memiliki gambar 2000x2000 yang dirender pada 20x20 div. :)
ukuran latar: mengandung
Mengikuti prinsip yang sama, Anda juga dapat menggunakannya untuk meniru
background-size: contain
:sumber
transform
dalam banyak jawabanTidak , Anda tidak bisa mendapatkannya seperti
background-size:cover
...Pendekatan ini sangat dekat: menggunakan JavaScript untuk menentukan apakah gambar lanskap atau potret, dan menerapkan gaya yang sesuai.
JS
CSS
http://jsfiddle.net/b3PbT/
sumber
Saya perlu ditiru
background-size: contain
, tetapi tidak dapat digunakanobject-fit
karena kurangnya dukungan. Gambar saya memiliki wadah dengan dimensi yang ditentukan dan ini akhirnya bekerja untuk saya:sumber
min-height: 100%; max-height:100%;
dan mendapatkan yang setara dengan ukuran latar belakang: sampul;min-height: 100%; max-height:100%;
tidak akan mempertahankan aspek-rasio jadi bukan yang setara.Coba atur keduanya
min-height
danmin-width
, dengandisplay:block
:( biola )
Asalkan elemen yang mengandung gambar Anda adalah
position:relative
atauposition:absolute
, gambar akan menutupi wadah. Namun, itu tidak akan terpusat.Anda dapat dengan mudah memusatkan gambar jika Anda tahu apakah itu akan meluap secara horizontal (mengatur
margin-left:-50%
) atau vertikal (mengaturmargin-top:-50%
). Dimungkinkan untuk menggunakan kueri media CSS (dan beberapa matematika) untuk mencari tahu.sumber
Dengan CSS Anda dapat mensimulasikan
object-fit: [cover|contain];
. Ini digunakantransform
dan[max|min]-[width|height]
. Itu tidak sempurna. Itu tidak berfungsi dalam satu kasus: jika gambar lebih lebar dan lebih pendek dari wadah.sumber
Apa yang dapat Anda lakukan adalah menggunakan atribut 'style' untuk menambahkan gambar latar belakang ke elemen, dengan cara itu Anda masih akan memanggil gambar dalam HTML tetapi Anda masih dapat menggunakan ukuran-latar: perilaku penutup css:
HTML:
CSS:
Inilah cara saya menambahkan ukuran latar: perilaku penutup ke elemen yang harus saya muat secara dinamis ke dalam HTML. Anda kemudian dapat menggunakan kelas css yang luar biasa seperti latar belakang-posisi: pusat. ledakan
sumber
Untuk IE Anda juga perlu memasukkan baris kedua - lebar: 100%;
sumber
Saya tidak diizinkan untuk 'menambahkan komentar' begitu melakukan ini, tapi ya apa yang dilakukan Eru Penkman cukup tepat, untuk mendapatkannya seperti latar belakang yang perlu Anda lakukan adalah mengubah
UNTUK
sumber
Saya tahu ini sudah tua, namun banyak solusi yang saya lihat di atas memiliki masalah dengan gambar / video yang terlalu besar untuk wadah sehingga tidak benar-benar bertindak seperti penutup ukuran latar belakang. Namun, saya memutuskan untuk membuat "kelas utilitas" sehingga akan berfungsi untuk gambar dan video. Anda cukup memberikan wadah kelas .media-cover-wrapper dan item media itu sendiri kelas .media-cover
Maka Anda memiliki jQuery berikut:
Saat menelepon, pastikan untuk mengatur ukuran halaman:
Kemudian CSS berikut:
Ya itu mungkin memerlukan jQuery tetapi itu merespon dengan cukup baik dan bertindak persis seperti ukuran latar belakang: penutup dan Anda dapat menggunakannya pada gambar dan / atau video untuk mendapatkan nilai SEO tambahan.
sumber
Kita bisa mengambil pendekatan ZOOM. Kita dapat mengasumsikan bahwa maks 30% (atau lebih hingga 100%) dapat menjadi efek pembesaran jika tinggi gambar aspek ATAU lebar kurang dari tinggi ATAU lebar yang diinginkan. Kita dapat menyembunyikan area yang tidak diperlukan dengan overflow: disembunyikan.
Ini akan menyesuaikan gambar dengan lebar atau tinggi berbeda.
sumber
mengalami simposium yang sama persis. di atas bekerja untuk saya.
sumber