Saya memiliki gambar, dan saya ingin mengaturnya lebar dan tinggi tertentu (dalam piksel)
Tetapi jika saya mengatur lebar dan tinggi menggunakan css ( width:150px; height:100px
), gambar akan melebar, dan itu mungkin jelek.
Bagaimana cara Mengisi gambar ke ukuran tertentu menggunakan CSS, dan tidak merentangkannya ?
Contoh gambar isi dan peregangan:
Gambar asli:
Gambar membentang:
Gambar yang Diisi:
Harap perhatikan bahwa dalam contoh gambar Penuh di atas: pertama, gambar diubah ukurannya menjadi 150x255 (rasio aspek terpelihara), dan kemudian dipangkas menjadi 150x100.
width
danheight
harus menyesuaikan sesuaiJawaban:
Jika Anda ingin menggunakan gambar sebagai latar belakang CSS, ada solusi yang elegan. Cukup gunakan
cover
ataucontain
dibackground-size
properti CSS3.Meskipun
cover
akan memberi Anda gambar yang ditingkatkan,contain
akan memberi Anda gambar yang diperkecil. Keduanya akan mempertahankan rasio aspek piksel.http://jsfiddle.net/uTHqs/ (menggunakan sampul)
http://jsfiddle.net/HZ2FT/ (menggunakan isi)
Pendekatan ini memiliki keuntungan menjadi ramah terhadap tampilan Retina sesuai panduan singkat Thomas Fuchs.
Perlu disebutkan bahwa dukungan browser untuk kedua atribut tidak termasuk IE6-8.
sumber
background-repeat: no-repeat;
? Jika gambar menutupi wadahnya, toh itu tidak akan terulang kembali.Anda dapat menggunakan properti css
object-fit
.Lihat contoh di sini
Ada polyfill untuk IE: https://github.com/anselmh/object-fit
sumber
img
tag juga (tidak hanyabackground-image
metode seperti yang dijelaskan dalam jawaban di atas). Terima kasih :)object-fit
itu tidak didukung di banyak browser .background-size
jarang ada solusi yang layak dalam proyek saya. Anda cenderung menerima manfaat SEO apa pun dan tidak dapat memberikan tag ALT, teks, dll untuk menyertai gambar di mana Anda mungkin ingin memberikan konteks tambahan untuk pembaca layar.object-fit: cover;
. Terima kasih banyakPeningkatan pada jawaban di atas oleh @afonsoduarte ( BUKAN jawaban yang diterima) .
jika Anda menggunakan bootstrap
Ada tiga perbedaan:
Memberikan
width:100%
gaya.Ini berguna jika Anda menggunakan bootstrap dan ingin gambar merentangkan semua lebar yang tersedia.
Menentukan
height
properti adalah opsional, Anda dapat menghapus / menyimpannya sesuai kebutuhanOmong-omong, TIDAK perlu menyediakan
height
danwidth
atribut padaimage
elemen karena mereka akan ditimpa oleh gaya.jadi cukup menulis sesuatu seperti ini.
sumber
Satu-satunya cara nyata adalah memiliki wadah di sekitar gambar Anda dan gunakan
overflow:hidden
:HTML
CSS
Sangat menyakitkan dalam CSS untuk melakukan apa yang Anda inginkan dan memusatkan gambar, ada perbaikan cepat di jquery seperti:
http://jsfiddle.net/x86Q7/2/
sumber
margin-top
gambar dengan misalnya50px
(lihat ini: jsfiddle.net/x86Q7/1 ), tetapi Bagaimana cara memotongnya dari pusat nyata ? (Tanpa jQuery?)Solusi CSS tanpa JS dan tanpa gambar latar:
Metode 1 "margin otomatis" (IE8 + - BUKAN FF!):
http://jsfiddle.net/5xjr05dt/
Metode 2 "mengubah" (IE9 +):
http://jsfiddle.net/5xjr05dt/1/
Metode 2 dapat digunakan untuk memusatkan gambar dalam wadah dengan lebar / tinggi tetap. Keduanya dapat meluap - dan jika gambar lebih kecil dari wadah itu masih akan terpusat.
http://jsfiddle.net/5xjr05dt/3/
Metode 3 "pembungkus ganda" (IE8 + - BUKAN FF!):
http://jsfiddle.net/5xjr05dt/5/
Metode 4 "pembungkus ganda DAN gambar ganda" (IE8 +):
http://jsfiddle.net/5xjr05dt/26/
Metode 1 dan 3 tampaknya tidak berfungsi dengan Firefox
sumber
Solusi lain adalah menempatkan gambar dalam wadah dengan lebar dan tinggi yang diinginkan. Dengan menggunakan metode ini Anda tidak perlu mengatur gambar sebagai gambar latar elemen.
Kemudian Anda dapat melakukan ini dengan
img
tag dan hanya mengatur lebar dan lebar maks pada elemen.CSS:
HTML:
Sekarang ketika Anda mengubah ukuran wadah gambar akan secara otomatis tumbuh sebesar mungkin tanpa melampaui batas atau mendistorsi.
Jika Anda ingin memusatkan gambar secara vertikal dan horizontal, Anda dapat mengubah css wadah ke:
Berikut ini adalah JS Fiddle http://jsfiddle.net/9kUYC/2/
sumber
Membangun dari jawaban @Dominic Green menggunakan jQuery, berikut adalah solusi yang harus bekerja untuk gambar yang lebih lebar daripada tinggi atau lebih tinggi dari lebar.
http://jsfiddle.net/grZLR/4/
Mungkin ada cara yang lebih elegan dalam melakukan JavaScript, tetapi ini berhasil.
sumber
Hati-hati jika Anda menggunakan tema atau sesuatu, mereka akan sering mendeklarasikan img max-width pada 100%. Anda harus membuat tidak ada. Uji itu :)
https://jsfiddle.net/o63u8sh4/
sumber
Saya membantu membangun plugin jQuery yang disebut Fillmore , yang menangani
background-size: cover
browser di yang mendukungnya, dan memiliki shim bagi mereka yang tidak. Coba lihat!sumber
Saya pikir sudah terlambat untuk jawaban ini. Pokoknya berharap ini akan membantu seseorang di masa depan. Saya menghadapi masalah memposisikan kartu dalam sudut. Ada kartu yang ditampilkan untuk berbagai acara. Jika lebar gambar acara besar untuk kartu, gambar harus ditampilkan dengan memotong dari dua sisi dan tinggi 100%. Jika tinggi gambar panjang, bagian bawah gambar dipotong dan lebar 100%. Inilah solusi css murni saya untuk ini:
HTML:
CSS
sumber
Coba sesuatu seperti ini: http://jsfiddle.net/D7E3E/4/
Menggunakan wadah dengan overflow: disembunyikan
EDIT: @Dominic Green mengalahkan saya.
sumber
Ini akan Mengisi gambar ke ukuran tertentu, tanpa merentangkannya atau tanpa memotongnya
sumber
Untuk menyesuaikan gambar dalam layar penuh coba ini:
background-repeat: round;
sumber
sumber