Saya mencoba memahami apa yang tampaknya merupakan perilaku tak terduga bagi saya:
Saya memiliki elemen dengan ketinggian maksimal 100% di dalam wadah yang juga menggunakan ketinggian maksimum tetapi, tanpa diduga, anak meluap induk:
Test case: http://jsfiddle.net/bq4Wu/16/
.container {
background: blue;
padding: 10px;
max-height: 200px;
max-width: 200px;
}
img {
display: block;
max-height: 100%;
max-width: 100%;
}
Ini diperbaiki, bagaimanapun, jika orang tua diberikan ketinggian eksplisit:
Test case: http://jsfiddle.net/bq4Wu/17/
.container {
height: 200px;
}
Apakah ada yang tahu mengapa anak tidak akan menghormati tinggi maksimal orang tuanya pada contoh pertama? Mengapa diperlukan ketinggian yang eksplisit?
display: flex; flex-direction: column
menyelesaikan masalah dan menambahkan scrollbar yang saya inginkan.Tampilkan cuplikan kode
Saya bermain-main sedikit. Pada gambar yang lebih besar di firefox, saya mendapat hasil yang baik dengan menggunakan nilai properti inherit. Apakah ini akan membantu Anda?
sumber
max:height: 100%
alih-alih ketinggian tetap: jsfiddle.net/umbreak/n6czk9xt/1dispaly: flex;
. Saya membuka utas baru: Saya membuka utas baru: stackoverflow.com/questions/29732391/... Namun, dalam kasus yang lebih buruk saya bisa menggunakan Jquery untuk mengambil lebar dan tinggi nyata img dan mengaturnya di div gambar induk.Saya menemukan solusi di sini: http://www.sitepoint.com/maintain-image-aspect-ratios-responsif-web-design/
Trik ini dimungkinkan karena ada hubungan antara WIDTH dan PADDING-BOTTOM dari suatu elemen. Begitu:
induk:
child ( hapus semua css yang terkait dengan lebar , yaitu lebar: 100%):
sumber
Anda dapat menggunakan properti -fit objek
Seperti yang disarankan di sini
Penjelasan lengkap tentang properti ini oleh Chris Mills di Dev.Opera
Dan yang lebih baik lagi di CSS-Trik
Ini didukung di
Saya baru saja memeriksa bahwa vivaldi dan chromium mendukungnya juga (tidak mengherankan di sini)
Saat ini tidak didukung di IE, tapi ... siapa yang peduli ? Juga, iOS mendukung objek-fit, tetapi bukan posisi-objek, tetapi akan segera.
sumber
Berikut adalah solusi untuk pertanyaan yang baru saja dibuka dan ditandai sebagai duplikat dari pertanyaan ini . The
<img>
tag telah melebihi max-height dari orang tua<div>
.Rusak: Biola
Bekerja: Fiddle
Dalam hal ini, menambahkan
display:flex
ke<div>
tag 2 induk adalah jawabannyasumber
Alih-alih menggunakan max-height: 100% / 100%, pendekatan alternatif untuk mengisi semua ruang akan digunakan
position: absolute
set atas / bawah / kiri / kanan ke 0.Dengan kata lain, HTML akan terlihat seperti berikut:
Anda dapat melihat contoh langsung di Codesandbox - Overflow dalam CSS Flex / Grid
sumber
Mungkin orang lain dapat menjelaskan alasan di balik masalah Anda, tetapi Anda dapat menyelesaikannya dengan menentukan ketinggian wadah dan kemudian mengatur tinggi gambar menjadi 100%. Adalah penting bahwa
width
gambar muncul sebelumheight
.sumber
Contoh terdekat yang bisa saya dapatkan adalah contoh ini:
http://jsfiddle.net/YRFJQ/1/
atau
Masalah utama adalah bahwa ketinggian mengambil persentase dari tinggi wadah, sehingga mencari ketinggian yang ditetapkan secara eksplisit dalam wadah induk, bukan max-height.
Satu-satunya cara memutari ini sampai batas tertentu yang bisa saya lihat adalah biola di atas di mana Anda dapat menyembunyikan overflow, tapi kemudian padding masih bertindak sebagai ruang yang terlihat untuk gambar mengalir, dan sebagai gantinya menggantikan dengan karya perbatasan yang solid sebagai gantinya (dan kemudian menambahkan kotak batas untuk membuatnya 200px jika itu lebar yang Anda butuhkan)
Tidak yakin apakah ini cocok dengan apa yang Anda butuhkan, tetapi yang terbaik yang bisa saya dapatkan.
sumber
Solusi yang baik adalah tidak menggunakan ketinggian pada orang tua dan menggunakannya hanya pada anak dengan View Port :
Contoh Fiddle: https://jsfiddle.net/voan3v13/1/
sumber
Kontainer umumnya sudah akan membungkus konten mereka dengan baik. Itu sering tidak bekerja dengan baik sebaliknya: anak-anak tidak memenuhi leluhur mereka dengan baik. Jadi, atur nilai lebar / tinggi Anda pada elemen paling dalam daripada elemen terluar, dan biarkan elemen luar membungkus isinya.
sumber
Wadah Anda tidak memiliki ketinggian.
Tambahkan tinggi: 200px;
ke wadah css dan anak kucing akan tetap di dalam.
sumber