css 图像最大宽度不适用于 Firefox / IE

Posted

技术标签:

【中文标题】css 图像最大宽度不适用于 Firefox / IE【英文标题】:css image max-width not working with Firefox / IE 【发布时间】:2014-08-06 11:27:14 【问题描述】:

这是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  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)

我发现其他帖子也有同样的问题,但没有一个给出好的解决方案......

【问题讨论】:

你试过去掉图片的宽度属性吗? 显示:表格;最大宽度:500px;给出了 max-width:100% 的 2 个原因;不能在孩子上应用 :( ,在 img 上尝试 max-width:500px 【参考方案1】:

实际上有一个非常简单的解决方案——您需要在设置为display: table 的元素上将table-layout 属性设置为fixed

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

【讨论】:

【参考方案2】:

适用于 Firefox、IE、Chrome 的响应式图像。适用于 Firefox 的简单解决方案

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

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

【讨论】:

【参考方案3】:

这是实现所需布局的一种方法。

我省略了一些 jQuery Mobile 类,只使用了原生 CSS/CSS3。

对于这个HTML

<div id="contentwrap">
    <div id="content">
        <img  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,这样您就可以根据需要在中间进行垂直对齐。

您通过在img 标记中设置width 值将图像宽度硬编码为300 像素。

要使图像在宽度变窄时以#content 的宽度缩放,请将width: 100% 设置为图像将填充#content 的宽度,并防止图像变得太宽,根据需要设置 max-width 值,在我的示例中为 300px。

您可能会遇到与 jQuery Mobile 中的 CSS 规则发生冲突,但如果出现任何问题,也许其他人可以帮助解决(不是我的专业领域)。

查看演示:http://jsfiddle.net/audetwebdesign/ZMLDD/

注意:如果你为图片设置了max-width的值,那么你可能不需要在img标签中设置width属性。

我在最新版本的 Firefox、Chrome、IE 和 Opera 中检查了这个,这个解决方案似乎可以工作。

【讨论】:

【参考方案4】:

永远记住,max-width 不会从其他父级继承 元素。由于 300px 的宽度已定义为最大宽度 100%,初始宽度值将始终覆盖最大宽度值 100%

因此请改用min-width: 300pxmax-width: 100%,这将使其在所有浏览器中都可以使用

【讨论】:

以上是关于css 图像最大宽度不适用于 Firefox / IE的主要内容,如果未能解决你的问题,请参考以下文章

CSS 动画过渡不适用于 Firefox

图像的最大宽度不适用于 IE 11 的 flexbox,但适用于谷歌浏览器

CSS 打字动画不适用于 Firefox

Css 溢出不适用于 Firefox

Firefox中忽略的最大高度适用于Chrome和Safari

使用 Javascript 切换的导航栏汉堡的响应式下拉菜单适用于 Chrome、Firefox,但不适用于 Safari