鉴于此HTML和CSS:
span {
display:inline-block;
width:100px;
background-color:palevioletred;
}Run Code Online (Sandbox Code Playgroud)
<p>
<span> Foo </span>
<span> Bar </span>
</p>Run Code Online (Sandbox Code Playgroud)
结果,SPAN元件之间将存在4像素宽的空间.
演示: http ://jsfiddle.net/dGHFV/
我理解为什么会发生这种情况,而且我也知道我可以通过删除HTML源代码中SPAN元素之间的空白来摆脱那个空间,如下所示:
<p>
<span> Foo </span><span> Bar </span>
</p>
Run Code Online (Sandbox Code Playgroud)
但是,我希望CSS解决方案不要求HTML源代码被篡改.
我知道如何用JavaScript解决这个问题 - 通过从容器元素(段落)中删除文本节点,如下所示:
// jQuery
$('p').contents().filter(function() { return this.nodeType === 3; }).remove();
Run Code Online (Sandbox Code Playgroud)
演示: http ://jsfiddle.net/dGHFV/1/
但是这个问题可以单独用CSS解决吗?
给定一个flex容器
figure {
display: flex;
align-items: flex-start;
}
Run Code Online (Sandbox Code Playgroud)
和一个300x300的图像,其flex-basis设置为其固有宽度的一半:
figure img {
flex: 0 0 150px;
}
Run Code Online (Sandbox Code Playgroud)
Chrome 41和Safari 7忽略宽高比并将其显示为150px x 300px:

另一方面,Firefox 35保持内在宽高比不变:
figure {
display: -webkit-box;
display: -moz-box;
display: box;
display: -webkit-flex;
display: -moz-flex;
display: -ms-flexbox;
display: flex;
-webkit-box-align: start;
-moz-box-align: start;
box-align: start;
-webkit-align-items: flex-start;
-moz-align-items: flex-start;
-ms-align-items: flex-start;
-o-align-items: flex-start;
align-items: flex-start;
-ms-flex-align: start;
width: 100%;
border: 1px solid black;
}
figure img {
-webkit-box-flex: 0;
-moz-box-flex: 0;
box-flex: 0;
-webkit-flex: 0 0 150px;
-moz-flex: 0 …Run Code Online (Sandbox Code Playgroud)