Saya tahu bahwa tidak mungkin untuk benar-benar mengubah gambar dengan CSS, itulah sebabnya saya memberi tanda kutip.
Yang ingin saya lakukan adalah mengambil gambar persegi panjang dan menggunakan CSS untuk membuatnya tampak persegi tanpa mengubah gambar sama sekali.
Saya pada dasarnya ingin mengubah ini:
Ke dalam ini:
background-position
atau pembungkus lama divoverflow:hidden
dan gambar dengan posisi relatif.Jawaban:
Dengan asumsi mereka tidak harus berada di tag IMG ...
HTML:
CSS:
EDIT: Jika div perlu menautkan suatu tempat, sesuaikan saja HTML dan Styles seperti ini:
HTML:
CSS:
Catatan ini juga dapat dimodifikasi agar responsif, misalnya% lebar dan tinggi dll.
sumber
height: 460px; width: 100%;
dan berfungsi seperti pesonaSolusi CSS murni tanpa pembungkus
div
atau kode tidak berguna lainnya:sumber
overflow:hidden
).Sebagai contoh:
sumber
Menggunakan ukuran latar belakang: penutup - http://codepen.io/anon/pen/RNyKzB
CSS:
Markup:
sumber
Saya benar-benar menemukan masalah yang sama baru-baru ini dan berakhir dengan pendekatan yang sedikit berbeda (saya tidak dapat menggunakan gambar latar belakang). Memang membutuhkan sedikit jQuery meskipun untuk menentukan orientasi gambar (saya yakin Anda bisa menggunakan JS biasa saja).
Saya menulis posting blog tentang itu jika Anda tertarik pada penjelasan lebih lanjut tetapi kode ini cukup sederhana:
HTML:
CSS:
jQuery:
sumber
$(this).load(function(){...
di dalam setiap loop, jadi jQuery menunggu sedikit hingga gambar dimuat dan mendapatkan dimensi gambar nyata.Jika gambar dalam wadah dengan lebar responsif :
HTML
CSS
sumber
Saya memiliki masalah serupa dan tidak dapat "berkompromi" dengan gambar latar belakang. Saya datang dengan ini.
Semoga ini membantu!
Contoh: https://jsfiddle.net/cfbuwxmr/1/
sumber
Gunakan CSS: overflow:
sumber
Baik gunakan div dengan dimensi persegi dengan gambar di dalam dengan kelas .testimg:
atau div persegi dengan latar belakang gambar.
Berikut beberapa contoh: http://jsfiddle.net/QqCLC/1/
DIPERBARUI OLEH PUSAT GAMBAR
sumber
object-fit: cover
akan melakukan apa yang Anda butuhkan.Tapi itu mungkin tidak berfungsi di IE / Edge. Ikuti seperti yang ditunjukkan di bawah ini untuk memperbaikinya dengan hanya CSS untuk bekerja di semua browser .
Pendekatan yang saya ambil adalah memposisikan gambar di dalam wadah dengan absolut dan kemudian meletakkannya tepat di tengah menggunakan kombinasi:
Setelah itu di tengah, saya berikan pada gambar,
Ini membuat gambar mendapatkan efek dari Object-fit: cover.
Berikut ini adalah demonstrasi dari logika di atas.
https://jsfiddle.net/furqan_694/s3xLe1gp/
Logika ini berfungsi di semua browser.
Gambar asli
Dipotong Secara Vertikal
Dipotong Secara horizontal
sumber