首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >绝对定位的Flex项目不会从Firefox和IE11的正常流程中移除应如何解决?

绝对定位的Flex项目不会从Firefox和IE11的正常流程中移除应如何解决?
EN

Stack Overflow用户
提问于 2018-04-17 03:26:42
回答 2查看 0关注 0票数 0

我们有两个内容的div和第三个div,它是绝对位置的背景。

所有在Chrome和Safari中都可以正常工作,但Firefox和IE11计算绝对定位的div,并在div之间分配空间,就像连续3个div一样。代码:

在这里输入图像描述
在这里输入图像描述

我做了一个jsfiddle的例子。有没有办法解决这个错误? https://jsfiddle.net/s18do03e/2/

代码语言:javascript
复制
div.container {
  display: flex;
  flex-direction: row;
  width: 100%;
  height: 300px;
  justify-content: space-between;
  width: 100%;
  outline: 1px solid;
}
div.c1 {
  background: #aaeecc;
  width: 100px;
  position: relative;
  z-index: 50;
  top: 20px;
  display: flex;
}
div.c2 {
  background: #cceeaa;
  width: 200px;
  position: relative;
  z-index: 50;
  top: 20px;
  display: flex;
}
div.bg {
  background: #ccc;
  width: 100%;
  height: 100%;
  z-index: 0;
  left: 0px;
  top: 0px;
  position: absolute;
  display: flex;
}
代码语言:javascript
复制
<div class="container">
  <div class="c1">Content 1</div>
  <div class="c2">Content 2</div>
  <div class="bg">Background</div>
</div>
EN

回答 2

Stack Overflow用户

发布于 2018-04-17 12:16:41

发生这种情况是因为justify-content: space-between;均匀分配物品开始的第一个项目,最后的最后一个项目。因此,只要推杆<div class="bg">Background</div>之间<div class="c1">Content 1</div><div class="c2">Content 2</div> 。代码如下:

代码语言:javascript
复制
<div class="container">
    <div class="c1">Content 1</div>
    <div class="bg">Background</div>
    <div class="c2">Content 2</div>

</div>

你可以在https://developer.mozilla.org/en-US/docs/Web/CSS/justify-content上查看原因。

票数 0
EN

Stack Overflow用户

发布于 2018-04-17 13:01:07

Firefox正在考虑第三个div(.bg),这是绝对定位的。

显然,这不符合当前的Flexbox规范。

以下是一些解决方法:

为什么不移动其他两个绝对定位的div?

取而代之的是:

代码语言:javascript
复制
<div class="container">
    <div class="c1">Content 1</div>
    <div class="c2">Content 2</div>
    <div class="bg">Background</div>
</div>

尝试这个:

代码语言:javascript
复制
<div class="container">
    <div class="c1">Content 1</div>
    <div class="bg">Background</div>
    <div class="c2">Content 2</div>
</div>

代码语言:javascript
复制
div.container {
  display: flex;
  flex-direction: row;
  width: 100%;
  height: 300px;
  justify-content: space-between;
  width: 100%;
  outline: 1px solid;
}
div.c1 {
  background: #aaeecc;
  width: 100px;
  position: relative;
  z-index: 50;
  top: 20px;
  display: flex;
}
div.c2 {
  background: #cceeaa;
  width: 200px;
  position: relative;
  z-index: 50;
  top: 20px;
  display: flex;
}
div.bg {
  background: #ccc;
  width: 100%;
  height: 100%;
  z-index: 0;
  left: 0px;
  top: 0px;
  position: absolute;
  display: flex;
}
代码语言:javascript
复制
<div class="container">
  <div class="c1">Content 1</div>
  <div class="bg">Background</div>
  <div class="c2">Content 2</div>
</div>

或:

代码语言:javascript
复制
<div class="container">
    <div class="c1">Content 1</div>
    <div class="c2">Content 2</div>
</div>
<div class="bg">Background</div>
代码语言:javascript
复制
div.container {
  display: flex;
  flex-direction: row;
  width: 100%;
  height: 300px;
  justify-content: space-between;
  width: 100%;
  outline: 1px solid;
}
div.c1 {
  background: #aaeecc;
  width: 100px;
  position: relative;
  z-index: 50;
  top: 20px;
  display: flex;
}
div.c2 {
  background: #cceeaa;
  width: 200px;
  position: relative;
  z-index: 50;
  top: 20px;
  display: flex;
}
div.bg {
  background: #ccc;
  width: 100%;
  height: 100%;
  z-index: 0;
  left: 0px;
  top: 0px;
  position: absolute;
  display: flex;

 
代码语言:javascript
复制
<div class="container">
  <div class="c1">Content 1</div>
  <div class="c2">Content 2</div>
</div>
<div class="bg">Background</div>

或使用flex order属性重新排列flex项目。

将此添加到你的代码中:

代码语言:javascript
复制
.c2 { order: 1; }

代码语言:javascript
复制
div.container {
  display: flex;
  flex-direction: row;
  width: 100%;
  height: 300px;
  justify-content: space-between;
  width: 100%;
  outline: 1px solid;
}
div.c1 {
  background: #aaeecc;
  width: 100px;
  position: relative;
  z-index: 50;
  top: 20px;
  display: flex;
}
div.c2 {
  background: #cceeaa;
  width: 200px;
  position: relative;
  z-index: 50;
  top: 20px;
  display: flex;
  order: 1;
}
div.bg {
  background: #ccc;
  width: 100%;
  height: 100%;
  z-index: 0;
  left: 0px;
  top: 0px;
  position: absolute;
  display: flex;
}

代码语言:javascript
复制
<div class="container">
  <div class="c1">Content 1</div>
  <div class="c2">Content 2</div>
  <div class="bg">Background</div>
</div>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100008133

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档