【发布时间】:2016-06-30 14:11:30
【问题描述】:
我目前正在尝试使用 flexbox 构建响应式网站布局。
根据屏幕大小,我希望元素具有position: fixed; 这本身就可以工作。但是当我在包含一个元素的列上使用justify-content: space-between; 时,该列本身使用position: fixed; 移出,空间分布将此元素用作0 高度元素。
为了演示,我设置了两个示例。两者都不使用媒体查询,因为它们不是问题。
在第一个示例中,我创建了我想要的最终结果。我不得不将#fixed 移到.column 之外,以便空间分配正常工作。
在第二个示例中,我创建了所需的 HTML 标记。当您并排比较两个示例时,您会注意到第二个示例的间距看起来很奇怪。浏览器在这里没有出错,因为在分配空间时它必须尊重一个元素。我(简而言之)希望浏览器假装#fixed 不在容器内,因此在分配空间时不考虑它。
结果应该是这样的:https://jsfiddle.net/5nu9nsyL/3/
这就是 html 的外观:https://jsfiddle.net/5nu9nsyL/4/
(只有 Chrome 和 Safari 才能正确呈现它。因此,如果两者看起来相同,请使用 Firefox 或 IE 等不同的浏览器查看)
我希望我说清楚了我想要什么。
(注意我必须在容器.column上使用display: flex)
(我还需要一个免费的、仅 CSS 的解决方案)
【问题讨论】:
-
如果我理解正确,您希望第二列中项目之间的间距与第一列中项目之间的间距相同吗?
-
没错!这就是我想要的。 (第二个元素必须仍然留在标记中)
-
我明白你在说什么。要考虑的一个问题是浏览器。在 Chrome 47 和 48 中,您发布的两个示例都呈现相同的效果。您提到的差异存在于 Firefox 和 IE11 中,但不存在于 Chrome 中。
-
我提供了一个类似问题的答案:stackoverflow.com/q/32991051/3597276
-
可能值得注意的是,容器在 FF/IE11 中使用
display: none从space-between计算中删除了一个弹性项目。