максимальная ширина изображения css не работает с Firefox / IE

#css #image #internet-explorer #firefox #responsive-design

#css #изображение #internet-explorer #firefox #адаптивный дизайн

Вопрос:

Вот JsFiddle.

HTML :

 <meta name="viewport" content="width=device-width, initial-scale=1,minimum-scale=1, maximum-scale=1">
<div data-role="page" >
    <div id="contentwrap">
        <div id="content" data-role="content">
             <img width="300" src="http://upload.wikimedia.org/wikipedia/commons/f/f1/Ski_trail_rating_symbol_red_circle.png" />

          asdad asd asd asd   sadadada ad sad asd asd asd asd sadasdaad adsa dasd sa
        </div>
    </div>
</div>
  

CSS :

 html, body {
height: 100%;
}

#contentwrap {
display: table;
height: 100%;
max-width: 500px;
margin: 0 auto;
position: relative;
}

#contentwrap img {
margin-left: auto;
margin-right: auto;
display:block;
margin-bottom: 10px;

max-width:100%;
}

#content {
height: 100%;
display: table-cell;
text-align:center;
vertical-align:middle;
}
  

Как вы можете увидеть, если протестируете его, атрибут «max-width: 100%» работает только в Google Chrome. В Firefox и IE ширина изображения остается неизменной… В Chrome изображение адаптируется к окну… :

введите описание изображения здесь

Как я могу это исправить? (по крайней мере, с IE11)

Я нашел другие сообщения с той же проблемой, но ни одно из них не дало хорошего решения…

Комментарии:

1. вы пытались удалить атрибут width изображения?

2. отображение: таблица; максимальная ширина: 500 пикселей; дает 2 причины, по которым максимальная ширина: 100%; на дочернем элементе не может быть применен: ( , попробуйте max-width: 500px на img

Ответ №1:

На самом деле есть очень простое решение этой проблемы — вам нужно установить table-layout свойство для fixed элемента, для которого установлено значение display: table .

 #contentwrap {
    display: table;
    table-layout: fixed;
    height: 100%;
    max-width: 500px;
    margin: 0 auto;
    position: relative;
}
  

Ответ №2:

Вот один из способов достижения желаемого макета.

Я пропустил некоторые мобильные классы jQuery и просто использовал собственный CSS / CSS3.

Для этого HTML:

 <div id="contentwrap">
    <div id="content">
        <img width="300" src="http://upload.wikimedia.org/wikipedia/commons/f/f1/Ski_trail_rating_symbol_red_circle.png" />
        asdad asd asd asd sadadada ad sad asd asd asd asd sadasdaad adsa dasd sa
    </div>
</div>
  

измените свой CSS следующим образом:

 html, body {
    height: 100%;
}
#contentwrap {
    background-color: beige;
    margin: 0 auto;
    max-width: 500px;
    height: 100%;
    display: table;
}
#content {
    display: table-cell;
    vertical-align: middle;
    text-align: center;
}
#content img {
    display: block;
    margin: 0 auto;
    width: 100%;
    max-width: 300px;
}
  

Я применил таблицы CSS к #contentwrap #content вашему исходному CSS и аналогично ему, таким образом, вы получите вертикальное выравнивание посередине по мере необходимости.

Вы жестко запрограммировали ширину изображения в 300 пикселей, установив width значение в img теге.

Чтобы изображение масштабировалось с шириной по #content мере его сужения по ширине, установите width: 100% , чтобы изображение заполняло ширину #content , и чтобы изображение не становилось слишком широким, установите max-width значение по мере необходимости, 300 пикселей в моем примере.

Вы можете столкнуться с конфликтами с правилами CSS в jQuery Mobile, но, возможно, кто-то другой может помочь с любыми возникающими проблемами (не в моей области знаний).

Смотрите демонстрацию: http://jsfiddle.net/audetwebdesign/ZMLDD /

Примечание: Если вы задаете max-width значение для изображения, вам может не понадобиться устанавливать width атрибут в img теге.

Я проверил это в последних версиях Firefox, Chrome, IE и Opera, и это решение, похоже, работает.

Ответ №3:

Всегда помните, что максимальная ширина не наследуется от других родительских элементов. Поскольку ширина 300 пикселей была определена с максимальной шириной 100%, начальное значение ширины всегда будет переопределять значение максимальной ширины 100%

Поэтому вместо этого используйте min-width: 300px и max-width: 100% , который заставит его работать во всех браузерах

Ответ №4:

Адаптивные изображения для Firefox, IE, Chrome. Простое решение, которое работает в Firefox

 <div class="article"><img></div>

.article {background: transparent 0% 0% / 100% auto;}
.article img {max-width: 100%;}