防止流体容器内右侧定位div的断线

时间:2016-05-02 02:39:59

标签: html css css3

所以我在一个位于两个黑盒子之间的容器内有一个红色条。盒子的大小是固定的,而红色条和容器是基于百分比。

我的目标是减小容器的大小,以及没有右侧黑框突破到下一行的红色条。我能够通过JavaScript中的自定义数学计算解决问题,但我希望将功能和设计分开。我觉得必须有一些方法可以用CSS解决这个问题而不需要黑客或额外的div标签。

如何实现这一目标?



.container {
  width: 80%;
  height: 40px;
  background: grey;
}
.box {
  height: 50%;
  border: 15px solid black;
  border-top: none;
  border-bottom: none;
  float: left;
}
.bar {
  width: 80%;
  height: 100%;
  background: red;
  float: left
}

<div class="container">
  <div class="box"></div>
  <div class="bar"></div>
  <div class="box"></div>
</div>
&#13;
&#13;
&#13;

JSFiddle

3 个答案:

答案 0 :(得分:1)

在CSS中使用calc()。它来自CSS3,但是supported in all major browsers, even IE9

.bar {
    width: calc(100% - 60px);
}

.container {
  width: 80%;
  height: 40px;
  background: grey;
}
.box {
  height: 50%;
  border: 15px solid black;
  border-top: none;
  border-bottom: none;
  float: left;
}
.bar {
  width: calc(100% - 60px);
  height: 100%;
  background: red;
  float: left
}
<div class="container">
  <div class="box"></div>
  <div class="bar"></div>
  <div class="box"></div>
</div>

答案 1 :(得分:1)

CSS3具有主要浏览器支持的新的flex显示样式。

.container {
  display: webkit-flex;
  display: flex;
  height: 40px;
  background: grey;
}
.box {
  height: 50%;
  border: 15px solid black;
  border-top: none;
  border-bottom: none;
}
.bar {
  width: 100%;
  height: 100%;
  background: red;
}
<div class="container">
  <div class="box"></div>
  <div class="bar"></div>
  <div class="box"></div>
</div>

要将框元素设置为特定宽度,请使用 min-width 而不是宽度

答案 2 :(得分:0)

尝试&#34;表&#34;布局

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>
    <style type="text/css">
        .container {
            width: 80%;
            height: 40px;
            background: grey;
            display: table;
        }
            .container > div {
                display: table-row;
            }

                .container > div > div {
                    display: table-cell;
                    vertical-align: top;
                }
        .box {
            height: 50%;
            margin: 0 7px;
            border: 15px solid black;
            border-top: none;
            border-bottom: solid 1px black;
            /*float: left;*/
        }

        .bar {
            width: 80%;
            height: 100%;
            background: red;
            /*float: left*/
        }
    </style>
</head>
<body>
    <div class="container">
        <div>
            <div>
                <div class="box"></div>
            </div>
            <div class="bar"></div>
            <div>
                <div class="box"></div>
            </div>
        </div>
    </div>
</body>
</html>