Firefox 图片元素父宽度太大

Posted

技术标签:

【中文标题】Firefox 图片元素父宽度太大【英文标题】:Firefox Picture Element Parent Width Too Large 【发布时间】:2016-09-21 17:41:19 【问题描述】:

响应式图片元素的父元素在 Firefox (OS-X) 中的宽度不正确。

这个错误有什么解决方法吗?

.picture-wrapper 
  float: left;


.next-element 
  float: left;
<div class="picture-wrapper">
<picture>
   <source media="(min-width: 1000px)"
      srcset="
        //placehold.it/1200x600 1200w"
      sizes="800px" />
   <img class="image mix-image_buffer"   
      sizes="
        (min-width: 400px) 100vw,
        calc(100vw - 50px)"
      srcset="
        //placehold.it/200x200 200w,
        //placehold.it/250x250 250w,
        //placehold.it/300x300 300w,
        //placehold.it/480x480 480w,
        //placehold.it/600x600 600w,
        //placehold.it/960x960 960w"
     src="//placehold.it/200x200" />
</picture>
</div>
<div class="next-element">Caption</div>

Codepen:http://codepen.io/anon/pen/GZVeYw

结果:

火狐

图片元素和下一个元素之间的空白

Chrome/IE

按预期工作(无空格)

【问题讨论】:

img width:100% 解决了吗? codepen.io/gc-nomade/pen/VaoNaV img display: block; 有帮助吗? @GCyrillus:看起来max-width:75%; 正在做一些繁重的工作。 @ItoPizarro 删除它并看到标题下降:) 有时 @GCyrillus img width:100% 将其放大并用大图像填充空白区域 【参考方案1】:

bug 实际上适用于任何祖先,而不仅仅是 &lt;picture&gt;

如果知道宽度,可以通过css设置宽度来解决这个bug。

<img class="image mix-image_buffer"   
  sizes="
    (min-width: 400px) 100vw,
    calc(100vw - 50px)"
  srcset="
    //placehold.it/200x200 200w,
    //placehold.it/250x250 250w,
    //placehold.it/300x300 300w,
    //placehold.it/480x480 480w,
    //placehold.it/600x600 600w,
    //placehold.it/960x960 960w"
  src="//placehold.it/200x200"
  style="width: 600px" />

【讨论】:

以上是关于Firefox 图片元素父宽度太大的主要内容,如果未能解决你的问题,请参考以下文章

CSS - Firefox 中滑块的宽度

jQuery show/fadeIn 不将 display:block 应用于隐藏的父元素内的子元素 - 仅限 FireFox

具有绝对父级的 div 的 jQuery 动画宽度

确定哪个 DOM 元素导致父元素的尺寸增加

Firefox:使用 transform3d 转换父 div 时,下拉菜单(<select> 元素)不注册“更改”事件?

html元素宽度小于单个子元素宽度的总和?