html - 如何控制哪些元素比其他元素改变宽度更多?将流体与静态容器在线混合

标签 html css css-float inline

我正在创建一个流体设计,我需要在其中放置 4 个内联字段。前 3 个字段的宽度均为 20%,第 4 个字段的宽度为 40% 和/或最小 280px 左右,并将分为 2 个单独的字段。这是因为 280px 字段将包含分割成单独按钮的背景图像。

现在,由于我在所有字段上使用百分比,并且最后一个字段具有静态最小宽度,因此当接近 600px 父宽度时,它会被移动到下一行。

如何确保我的元素保持在原位并强制前 3 个元素比最后一个元素压缩得更多?

或者如何将最后一个字段保留为固定宽度并拉伸(stretch)前 3 个字段?

jsFiddle link

<div style="width: 100%; height: 50px;">
    <div style="width: 20%; height: 100%; float: left; background-color: blue; display: block">a</div>
    <div style="width: 20%; height: 100%; float: left; background-color: green; display: block">b</div>
    <div style="width: 20%; height: 100%; float: left; background-color: blue; display: block">c</div>
    <div style="width: 40%; min-width: 280px; height: 100%; float: left; display: block;">
        <div style="width: 50%; height: 100%; float: left; background-color: yellow;">d</div>
        <div style="width: 50%; height: 100%; float: left; background-color: orange;">e</div>
    </div>
</div>

最佳答案

这对于 Flexbox 来说是一个完美的场景。这是我的看法:http://jsfiddle.net/7QUY9/3/ 。确保您使用的浏览器支持 Flexbox 或仅使用最新版本的 Chrome。

在我的书《Functional CSS》( future 1.5 天内在亚马逊上免费提供)中,我在最后一种情况下考虑了更多的 Flexbox:导航菜单。如果您愿意,欢迎您查看。

确保调整 jsfiddle 预览窗口的大小以查看 Flexbox 的运行情况。很棒的规范。

这是 HTML 代码:

<div id = "main">
    <div>1</div>
    <div>2</div>
    <div>3</div>
    <div>
        <div>4a</div>
        <div>4b</div>
    </div>
</div>

这是 CSS:

#main {
    height: 20px;
    display: -webkit-flex;
    display: flex;
    -webkit-flex-direction: row;
    flex-direction: row;
}

#main > div:nth-of-type(-n + 3) {
    -webkit-flex: 1 1 140px;
    flex: 1 1 140px;
    outline: 1px dashed red;
}

#main > div:nth-of-type(4) {
    -webkit-flex: 2 0 280px;
    flex: 2 0 280px;
    outline: 1px dashed red;
    display: -webkit-flex;
    display: flex;
    -webkit-flex-direction: row;
    flex-direction: row;
}

#main > div:nth-of-type(4) > div {
    -webkit-flex: 1 1 50%;
    flex: 1 1 50%;
    outline: 1px dotted blue;
}

关于html - 如何控制哪些元素比其他元素改变宽度更多?将流体与静态容器在线混合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24377411/

相关文章:

html - CSS:当我尝试单击显示列表中的元素时,下拉菜单消失

html - float 元素的包含 block 是什么?

javascript - HTML5 将 png 缓冲区加载到 Canvas 中(用于流媒体目的)

javascript - 在没有 jQuery UI 的情况下获取拖动位置

jquery - ie问题中的面包屑错误

css - 如何使段落中的图像 float

javascript - 调整大小时没有延迟的砌体效果

javascript - 试图让加载更多按钮在 Instagram Instafeed 脚本上工作,但它在我的网站上没有响应

jquery - 我如何使用 Font Awesome(或其他字体图标)而不是 Primefaces DataTable 中的 jQuery Sprite ?

html - 如何使 div 中此电子邮件选择表单中的 h2 响应?