img width 100% in display: box (css flexbox parent)

Posted

技术标签:

【中文标题】img width 100% in display: box (css flexbox parent)【英文标题】: 【发布时间】:2011-07-23 14:08:28 【问题描述】:

我正在尝试将图像调整为其父 div 的宽度;通常width: 100%; 工作正常,但是当父级有display: box; 时,img 不会调整大小。给子图片box-flex: 1是没有效果的。

<div style="display: -webkit-box; -webkit-box-pack: center; width: 100%;">
  <img src="foo.jpg" style="-webkit-box-flex: 1;" />
</div>

【问题讨论】:

【参考方案1】:

浏览器?

我不知道有任何浏览器支持没有供应商前缀的 flexbox 规范。

display: -moz-box;display: -webkit-box;

实际上,我只是再次查看了您的代码...如果您在图像上使用 flex,则不需要宽度声明,因为 flex 动态定义宽度。

您还应该定义父 div 的宽度。

【讨论】:

我在发布问题时删除了浏览器前缀;我现在已经恢复了它们;仍然没有调整大小。 是的,你是对的。看起来 flexbox 模型的行为与块模型不同。它的行为似乎更像标准表格布局,其中每个框内的元素都可以拉伸父元素。尝试调整窗口大小:jsfiddle.net/kmiyashiro/RFqPM/3 是的。关于如何让子图像在显示框中调整为 100% 的任何想法?【参考方案2】:

也许你已经解决了这个问题,但你可以使用(为 mozilla 提供示例)

IMAGE 
  display: -moz-box;
  -moz-box-flex: 1;

#cont 
  -moz-box-orient: horizontal;
  display: -moz-box;

还没有测试过这个例子,在最坏的情况下你需要做一些 tweek,但我很确定它是正确的。

【讨论】:

【参考方案3】:

虽然这是一个老问题,但它仍然出现在搜索中,因此希望更新答案:

目前在 Chrome 23 和 Firefox Nightly 21.0a1 中,此布局用于使图像保持父 div 的大小并调整大小(同时保持居中)。

http://jsfiddle.net/qAErr/

html

<section id="holdMe">
  <div>
     <img src="http://www.w3.org/html/logo/downloads/HTML5_Logo_512.png" />
  </div>
</section>

CSS

#holdMe 
      display: -webkit-flex;
      display: -moz-flex;
      display: -ms-flex;
      display: -o-flex;
      display: flex;
      -webkit-justify-content: center;
      -moz-justify-content: center;
      -ms-justify-content: center;
      -o-justify-content: center;
      justify-content: center;
    
    #holdMe img 
      width: 100%;
    

【讨论】:

以上是关于img width 100% in display: box (css flexbox parent)的主要内容,如果未能解决你的问题,请参考以下文章

数据流图 + 数据字典

数据流图 + 数据字典

解决图片循环展示间距

图片左边点击,右边大图展示

轮播图fade

近期一些学习总结2