Зробіть ширину зображення на 100% від батьківського поділу, але не більше його власної ширини


126

Я намагаюся отримати зображення (динамічно розміщене, без обмежень щодо розмірів), щоб воно було таким же широким, як і його батьківський поділ, але лише до тих пір, поки ця ширина не буде ширшою від власної ширини на 100%. Я спробував це, безрезультатно:

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

Багато з цих зображень набагато ширші, ніж їх батьківський поділ, тому я хотів би, щоб вони відповідно змінили розмір, але коли невелике зображення з'являється там і стає масштабним за його нормальні розміри, воно справді виглядає жахливо. Чи є спосіб це зробити?


5
Що станеться, якщо ви лише вкажете max-width: 100%?
Федір Сойкін

@Fyodor Soikin - Дайте це як відповідь, і я проголосую за вас.
Герт Гренадер

Було б добре врахувати, які браузери підтримують максимальну ширину.
кбрімінгтон

kbrimington справді приносить хорошу точку до столу. Згідно з reference.sitepoint.com/css/max-width#compatibilitysection Реалізація IE8 є помилковою.
Альфонсо

Відповіді:


222

Просто вкажіть max-width: 100%поодинці, що це має зробити.


1
Здається, хром просто залишає його на 100% незалежно від контексту. Можливо, я повинен перестати постійно дивитися на свою роботу над бета-програмним забезпеченням. Дякую!
Альфонсо

Як це зробити без використання максимальної ширини: 100%. У React-Native використовувати відсотки неможливо.
Croolsby

@Croolsby ви можете використовувати відсоток у реальній реакції, але зі значенням рядка, як-от "100%"
Рафаель Овсепян

9

Знайшов цю публікацію в пошуку Google, і це вирішило мою проблему завдяки відповіді @jwal, але я внесла одне доповнення до його рішення.

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

З вищезазначеним я змінив максимальну ширину на розміри контейнера вмісту, в якому знаходиться моє зображення. У цьому випадку це: ширина контейнера - набивання - бордер = максимальна ширина

Таким чином, моє зображення не вирветься із вмістуючого div, і я все ще можу плавати в межах вмісту div.

Я протестував в IE 9, FireFox 18.0.2 і Chrome 25.0.1364.97, Safari iOS і, здається, працює.

Додатково: Я протестував це на зображенні, яке шириною 1024 пікселів, що відображається на рівні 678 пікселів (максимальна ширина), і зображення в ширині 500 пікселів, що відображається в 500 пікселів (ширина зображення).


1
Використовуючи width:auto !important;для мене вирішену проблему в IE11, де зображення було б більшим, ніж його контейнер, а IE11 не зменшив зображення. Встановлюючи це в imgселекторі, сортували проблему в IE11. Однак налаштування width:100%;без іншого правила нічого не зробило в IE11. Таким чином, для додавання зображення потрібно масштабувати розмір контейнера до розміру контейнера.
lowtechsun

3

Встановлення ширини 100% - це повна ширина даного тексту, а не оригінальне повнорозмірне зображення. Неможливо зробити це без JavaScript або іншої мови сценаріїв, яка може виміряти зображення. Якщо ви можете мати фіксовану ширину або фіксовану висоту ключа (наприклад, 200 пікселів в ширину), тоді не повинно бути занадто важким, щоб дати зображенню заповнити діапазон. Але якщо ви помістите зображення 20х20 пікселів у вікно розміром 200х300 пікселів, воно все одно буде спотворене.


1
будь ласка, надайте робочий приклад, коли це можливо. Це рекомендується. :)
bhb

1

У стилі лінії - це працює для мене кожен раз

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

0

Ви повинні встановити максимальну ширину, і якщо хочете, ви також можете встановити накладки на одній із сторін. У моєму випадку максимальна ширина: 100% було добре, але зображення було прямо в кінці екрана.

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

0

У мене також була така ж проблема, але я встановив значення висоти в своєму CSS для автоматичного, і це вирішило мою проблему. Крім того, не забудьте зробити властивість відображення.

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

Ви можете зняти висоту: авто та ширину: авто. max-висота та max-ширина - це те саме.
Деббі Курт



Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.