不幸的是,没有一种超级流畅的方法可以实现广泛的交叉兼容性支持。有一个用于显示的 CSS 规范,称为 flex 或 flexbox,它可以精美而优雅地做你想做的事情,但目前它的支持非常有限。这里有一些关于 flexbox 的资源供您阅读...
http://css-tricks.com/old-flexbox-and-new-flexbox/
同时,您可以使用一些基本的 CSS jiggery-pokery 来实现您想要的布局,这将得到您想要的,但它需要绝对定位您的中间 div。
这是 JSFiddle:http: //jsfiddle.net/CW5dW/
这是CSS:
.left {
width: 50%;
height: 300px;
float: left;
padding-right: 160px;
box-sizing: border-box;
background: red;
}
.right {
width: 50%;
height: 300px;
float: right;
padding-left: 160px;
box-sizing: border-box;
background: blue;
}
.middle {
position: absolute;
width: 300px;
height: 300px;
left: 50%;
padding: 10px;
margin-left: -150px;
box-sizing: border-box;
background: orange;
}
你可能会问这里发生了什么?
基本上,我们使用中间类的 div 并将其从文档流中删除。这允许我们将左 div 向左浮动,右 div 向右浮动,宽度为 50%,以便流畅地占用浏览器的所有空间。
然后我们告诉中间的 div 占用 300px 的空间(在你的情况下是 980),我们告诉它从左边开始占据浏览器总宽度的 50%。但是,这不会使其居中,因为它是从 div 的左边缘计算的。所以我们给它一个宽度一半的负边距空间,以便将左边缘“移动”到 div 的中心。
然后,由于我们知道中间 div 的宽度为 300px(在您的情况下为 980),因此我们可以说左侧 div 的右边缘应该有一些填充,大于或等于中间 div 宽度的一半,在我的示例中那是 150 像素,我又增加了 10 像素,所以文本不能正好到达 div 的边缘,所以总共 160 像素。我们对右边的 div 做同样的事情,但它是左边的。这限制了这两个 div 的内容不会落在我们中间的 div 之下。