仅 CSS : How can I center fixed width div between two divs that fill the remaining space?

标签 css css-sprites

JSFIDDLE

编辑:试图实现与 this 相反的结果.
(而不是在两侧设置 2 个固定宽度的 div,在中间设置一个宽度可变的 div,
我正在尝试在两侧设置 2 个宽度可变的 div,在中间设置一个宽度的 div居中)

我有 3 个 div:A、B 和 C。

B 需要位于 A 和 C 之间。

What I need to do

我目前所做的与上面发生的事情非常相符。但是,如果 A、B 和 C 的容器宽度不一致,一些浏览器会将 A 和 C 的宽度四舍五入,而另一些则向上舍入(分别使 C 长 1px 和短 1px)。

注意 C

右边的额外像素

请注意 C 右侧的空间变窄了一个像素。

我不在乎我需要多少嵌套 div,但我在这上面花费了太多时间!如果有人已经有了解决此问题的万无一失的解决方案,请分享!

注意事项:
- A、B 和 C 的父级不能 overflow hidden 。
- A、B 和 C 不能重叠(它们具有半透明的 png)

这是我的起点: JSFIDDLE

最佳答案

这里有两种工作方式,都带有警告(警告,都需要包装器):

HTML

<section class="wrapper">
    <div class="column" id="a"></div>
    <div class="column" id="b"></div>
    <div class="column" id="c"></div>
</section>​​​​​​​​​​​

基础 CSS

.column {
    height: 3em;
}

#a {
 background-color: red;   
}
#b {
 background-color: green;
}
#c {
 background-color: blue;   
}

#b {
  width: 50px;   
}

CSS3 方法:

.wrapper {
    display:box;
    box-orient:horizontal;
    box-align:stretch;    
}

#a, #b {
    box-flex:1.0;
}

警告:仅在 Firefox 和 Webkit (Chrome/Safari) 中支持(到目前为止),两者都需要前缀规则。以上就是总有一天会发生的事情。

这是一个带前缀的演示:http://jsfiddle.net/crazytonyi/cBVTE/

表格显示方法

.wrapper {
    display: table;
    width: 100%;
    table-layout: fixed;

}    
.column {
    display: table-cell;
}

警告:IE 直到 7 或 8 才开始支持这种显示类型。另一方面,担心旧版 IE 的用户就像担心仍然关闭 cookie 和 javascript 的人一样。他们要么 catch ,要么习惯于分页。结束迎合!

这是一个使用上面的演示:http://jsfiddle.net/crazytonyi/kM46h/

在这两种情况下,都不需要 float 或定位,只需要对旧版浏览器竖中指即可。多大取决于您选择的方法。

关于仅 CSS : How can I center fixed width div between two divs that fill the remaining space?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10593405/

相关文章:

html - 使用 bootstrap 我该怎么做?

css - 2 个垂直的 css sprite 图像但结果不同

css - 在鼠标移出时反转 spritesheet 动画

css - 这种在网站上显示 UI 图标的方法有名称吗?它是如何完成的?

border - 在 CSS 中堆叠边框

javascript - 通过 jQuery 或 Javascript 应用于父窗口的外部 css 规则

css - 带有 bootstrap4 的 Angular 7 粘性页脚

html - 我怎样才能使我的转换保持在事件链接上?

css - 使用 CSS 控制 DOM 中的 Sprite 大小。

使用带透明胶片的图像 Sprite 的 CSS 菜单