我最近一直在玩display:flex
,因为我看到它变得更趋势。在快速测试中,使用flex和非flex CSS方法,我意识到,使用flex时我的宽度和边距总是得到尊重。这是一个很好的方法,考虑到我很可能还需要元素之间的沟槽?此外,跨度之间的差距来自何处?这就是我的意思:
HTML
<div class="container">
<div class="box">
<span class="inner-box">This gives me a 30px X 60px</span>
<span class="inner-box">This gives me a 30px X 60px</span>
<span class="inner-box">This gives me a 30px X 60px</span>
</div>
<div class="box2">
<span class="inner-box">This gives me a width larger than the specified 30px</span>
<span class="inner-box">This gives me a width larger than the specified 30px</span>
<span class="inner-box">This gives me a width larger than the specified 30px</span>
</div>
</div>
CSS
.box{
background: orange;
display:flex;
flex-direction:row-reverse;
padding:0 10px;
}
.box2{
background: green;
text-align:right;
padding:0 10px;
}
.inner-box{
width:30px;
background:#fff;
margin:0 0px;
}
答案 0 :(得分:4)
您正在使用<span>
个元素。它们默认为内联。内联元素会自动忽略width
。
但是,在第一个div
部分(.box
)中,span
的内联display
值被父级display: flex
覆盖,后者建立了width
一个flex formatting context。因此,所有儿童都成为弹性项目,尊重height
和display
。
弹性项为其内容建立新的格式化上下文。该 此格式化上下文的类型由其
div
值确定, 照常。但是,弹性项目本身是 弹性级别 框,而不是 块级框:它们参与其容器的flex 格式化上下文,而不是块格式化上下文。
在第二个.box2
部分(span
)中,display: inline
元素仍为width
,因为它们未从block-formatting context删除,而且height
<1}}和display: inline-block
分配将被忽略。
试试$('#button').click(function() {
var servicetype = $("#servicetype").val();
var service = $("#service").val();
var adults = $("#adults").val();
var children = $("#children").val();
var days = $("#days").val();
window.open("https://secure.sample.com/service.aspx?&days="+days+"&service="+service+"&adults="+adults+"&children="+children+"&servicetype="+servicetype+"", "_blank");
});
:http://codepen.io/anon/pen/yeggOy
参考文献:
答案 1 :(得分:2)
你的问题有点不清楚,但是,正如MrLister评论的那样:
如果display:flex
符合宽度,display:inline
不符合?如果是这样,答案是肯定的,。
这是因为,根据spec,
Flex项目绘制与内联块完全相同
因此受宽度语句的影响。