Ana div'in% 100'ü kadar, ancak kendi genişliğinden büyük olmayan bir resim genişliği oluştur


126

Bir görüntünün (dinamik olarak yerleştirilmiş, boyutlar üzerinde herhangi bir kısıtlama olmaksızın) üst div'i kadar geniş olmasını sağlamaya çalışıyorum, ancak bu genişlik% 100'deki kendi genişliğinden daha geniş olmadığı sürece. Bunu denedim, boşuna:

img {
    width: 100%;
    height: auto;
    max-width: 100%;
}

Bu görüntülerin birçoğu ana div'lerinden çok daha geniştir, bu yüzden onlara göre yeniden boyutlandırmalarını isterim, ancak küçük bir görüntü ortaya çıktığında ve normal boyutlarının ötesine ölçeklendiğinde, gerçekten korkunç görünüyor. Bunu yapmanın bir yolu var mı?


5
Sadece belirtirseniz ne olur max-width: 100%?
Fyodor Soikin

@Fyodor Soikin - Bunu bir cevap olarak verin ve ben size oy vereyim.
Gert Grenander

Bununla birlikte, hangi tarayıcıların maksimum genişliği desteklediğini düşünmek iyi olacaktır.
kbrimington

kbrimington masaya iyi bir noktayı getiriyor. Reference.sitepoint.com/css/max-width#compatibilitysection'a göre IE8'in uygulaması hatalı.
Alfonso

Yanıtlar:


222

Sadece max-width: 100%tek başına belirtin , bunu yapmalı.


1
Chromium, bağlamdan bağımsız olarak onu% 100'de bırakıyor gibi görünüyor. Belki de sürekli olarak beta yazılımla ilgili çalışmalarıma bakmayı bırakmalıyım. Teşekkür ederim!
Alfonso

Bunu maks. Genişlik:% 100 kullanmadan nasıl yaparsınız? React-Native'de yüzdelerin kullanılması mümkün değildir.
Croolsby

@Croolsby, react-native'de yüzdeyi kullanabilirsiniz, ancak bu '% 100' gibi dize değeriyle
Rafael Hovsepyan

9

Bu gönderiyi bir Google aramasında buldum ve sorunumu @jwal yanıtı sayesinde çözdü, ancak çözümüne bir ekleme yaptım.

img.content.x700 {
  width: auto !important; /*override the width below*/
  width: 100%;
  max-width: 678px;
  float: left;
  clear: both;
}

Yukarıdakilerle maksimum genişliği, resmimin içinde bulunduğu içerik konteynerinin boyutlarına değiştirdim. Bu durumda: konteyner genişliği - dolgu - yatılı = maksimum genişlik

Bu şekilde resmim içeren div'den çıkmaz ve yine de içeriği content div içinde gezdirebilirim.

IE 9, FireFox 18.0.2 ve Chrome 25.0.1364.97, Safari iOS'ta test ettim ve çalışıyor gibi görünüyor.

Ek: Bunu 1024 piksel genişliğinde 678 piksel (maksimum genişlik) görüntülenen ve 500 piksel (görüntünün genişliği) 500 piksel genişliğinde görüntülenen bir görüntü üzerinde test ettim.


1
Kullanma width:auto !important;görüntü kabı ve IE11 Resmi küçültmeyi değil daha büyük nerede olacağını benim için IE11 bir sorunu düzeltildi. Bunu imgseçicide ayarlamak sorunu IE11'de sıraladı. Ancak width:100%;diğer kural olmadan ayarlama IE11'de hiçbir şey yapmadı. Bu nedenle, görüntünün kaplayıcının boyutuna küçültülmesi için "geçersiz kılma" nın dahil edilmesi gerekir.
lowtechsun

3

Genişliği% 100 olarak ayarlamak, orijinal tam boyutlu görüntü değil, içinde bulunduğu div'in tam genişliğidir. JavaScript veya görüntüyü ölçebilen başka bir komut dosyası dili olmadan bunu yapmanın bir yolu yoktur. Div'in sabit genişliğine veya sabit yüksekliğine sahipseniz (200 piksel genişliğinde olduğu gibi) , görüntüye doldurulacak bir aralık vermek çok zor olmamalıdır . Ancak, 200x300 piksellik bir kutuya 20x20 piksellik bir görüntü koyarsanız, yine de bozulacaktır.


1
lütfen mümkün olduğunca çalışan bir örnek sağlayın. Bu tavsiye edilir. :)
bhb

1

Çizgi tarzında - bu her seferinde benim için çalışıyor

<div class="imgWrapper">
    <img src="/theImg.jpg" style="max-width: 100%">
</div>

0

Maksimum genişliği ayarlamalısınız ve isterseniz kenarlardan birine biraz dolgu da ayarlayabilirsiniz. Benim durumumda maksimum genişlik:% 100 iyiydi ancak görüntü ekranın hemen sonundaydı.

  max-width: 100%;
  padding-right: 30px;
  /*add more paddings if needed*/

0

Ben de aynı sorunu yaşıyordum, ancak CSS'mdeki yükseklik değerini otomatik olarak ayarladım ve bu sorunumu çözdü. Ayrıca, display özelliğini yapmayı da unutmayın.

  #image {
      height: auto;
      width: auto;
      max-height: 550px;
      max-width: 1200px;
      margin-left: auto;
      margin-right: auto;
      display: block;
 }  

sadece bir fyi..yükseklik: auto ve width: auto kaldırabilirsiniz. maksimum yükseklik ve maksimum genişlik aynı şeydir.
Debbie Kurth



Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.