css - Flex 不是 Flex 任何解决方案 → justify-content :space-between and full nested item flexibility doesn't coexist

标签 css flexbox flexboxgrid

我认为即使我们将 33% 用于嵌套 flex 元素和 67%,例如,但如果其他元素不可用,那么讨论中的元素将占用 100%,但请参见此处 → click here即使删除这部分→

<aside class="main-sidebar col">

主要内容不占满宽度。怎么了?

我尝试了一种补救方案 →

我去掉了

的宽度

.flex-main 并使用了 flex:1 0 68.8%,但这也造成了问题。这破坏了 → .content{justify-content:space-between;}

我相信应该有一些解决方案。有什么建议吗?

背景 → 我选择 flex 的原因是因为这是一个 WordPress 网站。在 WordPress 中经常需要我们可以翻转两列,即主要内容区域和侧边栏,但是当我们像这样使用刚性 CSS 时 →

margin-right: 20px;

翻转变得非常具有挑战性,而且不是那么顺利。

想法是翻转订单,因此翻转列即 order:1 应该更改为 order:2 反之亦然,而此属性 .content {justify-content:space-between;} 始终确保两列之间的间隙。 这一切都有意义吗?

here is the codepen →

现在只要改变顺序,你就会发现翻转顺序是多么容易和顺利,而我们这样做的同时,间隙也因此而保持不变 → .content{justify-content:space-between;}

到目前为止一切都还好吗?合理?我们在同一页上吗? 现在尝试删除 →

`   <aside class="main-sidebar col">

    </aside>`

flex-main 没有扩展这就是问题所在,我相信他们不会轻易解决这个问题。

VIDEO EXPLANATION [视频中的订单填写打错了,实际上是订单填写。]

最佳答案

if to delete the main-sidebar col, the flex-main doesn't expand, which is the issue, and I am sure their won't be an easy fix for this

有一个非常简单的解决方案。如果你添加 .flex-main:only-child { flex: 1; 到你的 CSS 规则,它会按照你想要的方式工作。

所以基本上这里发生的是,当你删除 main-sidebar 时,:only-child 选择器将启动。

Updated codepen

这里有 2 个片段,具有相同的 CSS,第一个带有 .main-sidebar...

.content {
  display:flex;
  height: 100vh;
  justify-content:space-between;
}

.flex-main {
	width:68.8%;
	order:2;
  background: blue;
}
.flex-main:only-child {
  flex: 1;
}

.main-sidebar {
	/*background: #323232;*/
	background: #ffffff;
	width: 29%;
	color:black;
	order:1;
  background: yellow;

}
<div class="content">
    <div class="flex-main">
        <div class="main col">
        </div>        
    </div>
    <aside class="main-sidebar col">
      
    </aside>
</div>

...第二个没有.main-sidebar

.content {
  display:flex;
  height: 100vh;
  justify-content:space-between;
}

.flex-main {
	width:68.8%;
	order:2;
  background: blue;
}
.flex-main:only-child {
  flex: 1;
}

.main-sidebar {
	/*background: #323232;*/
	background: #ffffff;
	width: 29%;
	color:black;
	order:1;
  background: yellow;

}
<div class="content">
    <div class="flex-main">
        <div class="main col">
        </div>        
    </div>
</div>

关于css - Flex 不是 Flex 任何解决方案 → justify-content :space-between and full nested item flexibility doesn't coexist,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44039810/

相关文章:

html - 绝对定位的 flex 元素不会从 IE11 的正常流程中移除

javascript - 如何在着陆页图形上添加鼠标悬停图像

html - 背景中的图像包含它

html - 如何使中心区域全视口(viewport)高度减去动态高度区域(flexbox)

css - GWT 覆盖另一个 GSS 文件中的 GSS 样式

html - 我应该开始使用 HTML5 和 CSS3 并避免使用以前的版本吗?

Angular 柔性布局性能

html - 如何使用 Flexbox Grid 堆叠 div?

javascript - 当 div 标签溢出时添加类

html - 整体 div 上的链接颜色