下面的小提琴有三个方块。
块1 包含三列。中间的列中有两行,每行设置为flex:1。
块2 包含三列。中间的列中有两行,每行设置为flex:1。第二行包含一条狗的图像。图像将不会缩小到包含图像的行的高度。
块3 仅包含中间的列,中间有两行,每行设置为flex:1。第二行包含一条狗的图像。图像确实缩小到包含图像的行的高度。
问题是,为什么块2中间列的第二行中的图像不缩小到包含该行的行的高度?我可以添加哪些CSS规则来实现这一目标?
.block{
height:100px;
}
.wrapper{
border:5px solid purple;
display:flex;
flex-direction:row;
}
.column{
flex:1;
border:3px solid yellow;
}
.middle{
display:flex;
flex-direction:column;
}
.first{
background:red;
}
.second{
background:orange;
}
.third{
background:purple;
}
.row{
flex:1;
border:1px solid black;
display:flex;
align-items:stretch;
}
img{
flex:1;
}
<div class="wrapper block">
<div class="left column"></div>
<div class="middle column">
<div class="row first"></div>
<div class="row second"></div>
</div>
<div class="right column"></div>
</div>
<div class="wrapper block">
<div class="left column"></div>
<div class="middle column">
<div class="row first"></div>
<div class="row second">
<img src="https://upload.wikimedia.org/wikipedia/commons/8/89/Dog.svg" />
</div>
</div>
<div class="right column"></div>
</div>
<div class="middle block">
<div class="row first"></div>
<div class="row second">
<img src="https://upload.wikimedia.org/wikipedia/commons/8/89/Dog.svg" />
</div>
</div>
更换:
.row {
flex: 1;
border: 1px solid black;
display: flex;
align-items: stretch;
}
与:
.row {
flex: 1 1 0px; /* adjustment on this line */
border: 1px solid black; /* no change */
display: flex; /* no change */
align-items: stretch; /* no change */
}
你写了:
问题是,为什么块2中间列的第二行中的图像不缩小到包含该行的行的高度?
看来您只在Chrome中测试了代码,因为对于Firefox和IE11,问题的前提是错误的。
在那些浏览器中,第二块中的狗的图像很好地包含在flex项目中。图像在IE中有些拉伸,但是仍然包含在内。
您的问题似乎与Chrome有关。(我没有在Safari中进行测试,但这是像Chrome这样的WebKit浏览器,因此解决方案可能相似。)
这个问题的解决方法很有趣,因为属性值的微小差异(似乎微不足道)使Chrome呈现功能产生了很大差异。
您的图片是的div.row
具有行方向的flex容器的子元素(更具体而言:flex项)。
div.row
也是较大容器的柔性项目(沿列方向),并已flex: 1
应用。Chrome中的问题根源于该flex: 1
声明。
什么flex: 1
意思
该flex
属性是简写flex-grow
,flex-shrink
和flex-basis
。
flex: 1
是等效的flex-grow:1
,flex-shrink: 1
并flex-basis: 0%
。
请注意,后面的百分号(%)0
。它是在flexbox规范的 CommonValues中flex
定义的,实际上有所不同。
在Chrome中尝试以下操作:
替换flex: 1
在div.row
用它的等效flex: 1 1 0%
。您会注意到渲染时没有任何变化。
现在删除百分号并再次运行。图像捕捉到位。
flex: 1 1 0px
就像CSS-Tricks中所述,也可以使它起作用。
因此,使用px
或不使用单位(而不是百分比)来0
解决Chrome中的问题…并且在Firefox中不会破坏任何内容。
但是,在IE11中,px
可以工作,但无单位不能。实际上,无单元消除了布局。
但是IE11是另一个故事…
IE11 在浏览器支持数据网站caniuse.com上一直显示对flexbox的 完全支持 ,直到最近,由于“存在大量错误” ,IE11 降级为 部分支持。在测试上述演示时,IE11定期刷新时呈现相同代码的方式有所不同。有关问题列表,请参见caniuse.com上的“已知问题”选项卡。
_请注意, 除了IE 8和9之外,所有主要浏览器都支持flexbox
。某些最新的浏览器版本(例如Safari8和IE10)需要供应商前缀。如上所述,由于一些已知的错误,IE11提供了部分支持。要快速添加所需的所有前缀,请使用[Autoprefixer。
问题内容: 我有 我要打印最后一个回声 注意,我希望变量p包含换行符。我怎么做? 问题答案: 插入 echo -e “${p}” 在源代码中插入新行 ${var2}” echo “${p}” 使用(仅bash和zsh) echo “${p}” 细节 1.插入 将两个字符解释为换行符。 避免多余的换行符 使用功能 2.在源代码中插入新行 避免多余的换行符 使用功能 3.使用(便携式性较低) bash
此功能在 Adobe Illustrator CS6、CC 和更高版本中可用。要加入 Adobe Creative Cloud,请参阅 Adobe Creative Cloud。 在 Illustrator 文件中嵌入图像时,图像文件将存储在文档内。您可以通过取消嵌入图像来提取嵌入的图像,并可使用相应的提取 PSD 或 TIFF 文件替换嵌入的图像。您也可以在 Illustrator 之外使用或编
问题内容: 纯粹出于好奇,Base64图像嵌入在哪些浏览器中起作用?。 我意识到对于大多数事情来说,通常不是一个好的解决方案,因为它会增加页面的大小-我很好奇。 一些例子: HTML: CSS: 问题答案: 更新 现在,所有主要浏览器都支持数据URI。从版本8开始,IE也支持嵌入图像。 现在,以下Web浏览器支持数据URI: 基于壁虎,例如Firefox,SeaMonkey,XeroBank,Ca
我有Spring引导应用程序。我正在这个web应用程序中使用嵌入式嵌入式Hazelcast。我使用了缓存中可用的大量数据。最初,我只运行一个docker容器。现在,为了缩放响应,我启动了3个相同映像的docker容器。现在每个docker容器都运行了嵌入式Hazelcast。因此,一旦我点击刷新缓存,为请求提供服务的容器将只有最新的数据,而其他两个容器将没有最新的数据,除非且直到刷新请求未被提供。
我试图创建一个包含两个项目的flex容器--一个文本div和一个图像div。 然而,我在容器中保存映像时遇到了实际的问题。当我将浏览器的大小调整为一个小宽度时,图像就会溢出容器,我似乎不明白为什么会发生这种情况。物品应该留在容器里吗? 代码在这里: 代码本在这里: http://codepen.io/reskk/pen/aldpbz 我四处寻找并尝试了一些解决方案:使用flex-basis、fle
我看到一个奇怪的行为与ImageIO. read()方法。 我将InputStream传递给这个方法,当我第二次尝试读取它时,它无法读取并返回null。 我试图上传图像到亚马逊S3,我想创建3个版本的图像。原始和2缩略图。我的问题是,当我想创建2个缩略图时,我需要使用ImageIO. read()读取输入流。如果我运行这个方法2相同的InputStream我得到null为第二次读取。 我可以通过只