首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >挠性盒尺寸错误

挠性盒尺寸错误
EN

Stack Overflow用户
提问于 2021-05-17 21:22:03
回答 2查看 166关注 0票数 2

我想用flex做三个街区。第一列必须占据整个柱子,其余2必须安排在第二栏中,各占高度的50%。第二列的第一列是图像,我希望第三列,它只包含文本,是相同的高度。不幸的是,即使这个文本块看起来与我的图像大小相同,第一列的大小也仅限于这个块中文本的末尾。

代码语言:javascript
复制
.superposition {
  display: flex;
  width: 70%;
}
.block-orange {
  background-color: #F26522;
  color: white;
  padding: 10px;
  flex: 0 0 30%;
}
.superposition .flex-col {
  display: flex;
  flex-direction: column;
}
.superposition div div {
  flex: 0 0 50%;
}
.bg-white {
  background-color: yellow;
  color: #627188;
}
.bg-grey{
  background-color: grey;
 }
代码语言:javascript
复制
<section class="superposition">
    <div class="block-orange">
        <h2>bright ass orange</h2>
        <p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Cumque sunt possimus tenetur porro aliquam, tempora itaque aperiam perspiciatis reiciendis dignissimos assumenda odit incidunt sit voluptatem quae laudantium. Accusamus, cum at?</p>
     </div>
     <div class="flex-col">
         <div class="bg-grey">
             <img src="img/header-soleil.png" alt="couché de soleil">
         </div>
         <div class="bg-white">
              <h2>finaly a layout that blows your head off</h2>
              <p>Lorem ipsum dolor sit amet consectetur adipisicing elit.Totam quod excepturi laboriosam vero numquam tenetur corporis iusto magni quaerat eaque dolore, assumenda unde est nostrum saepe fugiat nam doloremque esse.
               </p>
         </div>
     </div>
</section>

为什么第一列(橙色块)不能适应第二列的高度?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-05-17 23:09:43

似乎您想要一个网格,其中:

  • 内容可以扩展列高度。
  • 柱高总是匹配的。
  • 两行分别是50%的列高。

这听起来像是一个“二维”布局,由行和列控制。

用柔性盒构建这样的布局可能是一件很困难的事情,而且/或会产生脆弱的布局。

有关参考,请参见网格布局与其他布局方法的关系

  • 我是否只需要按行或列控制布局??使用柔性箱?
  • 是否需要按行和列控制布局??使用网格吗?

也见CSS网格布局中的等高行

我推荐用网格布局代替。

下面是一个演示:

代码语言:javascript
复制
body {
  margin: 0;
}

.superposition {
  display: grid;
  grid-template-columns: 30% 40%;
  grid-auto-rows: 1fr;
}

.block-orange {
  background-color: orange;
  grid-row: 1/3;
}

.bg-grey {
  background-color: grey;
}

.bg-white {
  background-color: yellow;
}

.bg-grey img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.cellpad {
  box-sizing: border-box;
  padding: 1em;
}
代码语言:javascript
复制
<section class="superposition">
  <div class="block-orange cellpad">
    <h2>bright orange</h2>
    <p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Cumque sunt possimus tenetur porro aliquam, tempora itaque aperiam perspiciatis reiciendis dignissimos assumenda odit incidunt sit voluptatem quae laudantium. Accusamus, cum at?</p>
  </div>
  <div class="bg-grey">
    <img src="https://fakeimg.pl/440x320/282828/eae0d0/" alt="">
  </div>
  <div class="bg-white cellpad">
    <h2>finally a layout that blows your mind</h2>
    <p>Lorem ipsum dolor sit amet consectetur adipisicing elit.Totam quod excepturi laboriosam vero numquam tenetur corporis iusto magni quaerat eaque dolore, assumenda unde est nostrum saepe fugiat nam doloremque esse.
    </p>
  </div>
</section>

票数 2
EN

Stack Overflow用户

发布于 2021-05-17 22:48:49

要达到你想要的结果,一种方法是应用

代码语言:javascript
复制
flex-direction: column;

组合到整个.superposition<div>,并与:

代码语言:javascript
复制
flex-wrap: wrap;

这将确保如果.block-orange占据了.superposition高度的100%,那么.bg-grey将跟随它从.superposition的顶部开始,到.block-orange的右边。

,即--div仍然在包装,但它们是水平包装,而不是垂直包装。

工作示例:

代码语言:javascript
复制
.superposition {
  display: flex;
  flex-direction: column;
  flex-wrap: wrap;
  width: 70%;
  height: 500px;
}

.block-orange {
  flex: 1 0 100%;
  width: 30%;
  padding: 0 10px;
  color: white;
  background-color: #F26522;
}

.bg-grey,
.bg-white {
  flex: 0 0 50%;
  width: 70%;
  padding: 0 10px;
}
  
.bg-white {
  color: #627188;
  background-color: yellow;
}

.bg-grey {
  background-color: grey;
 }
代码语言:javascript
复制
<section class="superposition">
  
  <div class="block-orange">
    <h2>bright ass orange</h2>
    <p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Cumque sunt possimus tenetur porro aliquam, tempora itaque aperiam perspiciatis reiciendis dignissimos assumenda odit incidunt sit voluptatem quae laudantium. Accusamus, cum at?</p>
  </div>
  
  <div class="bg-grey">
    <img src="img/header-soleil.png" alt="couché de soleil">
  </div>

  <div class="bg-white">
    <h2>Finally, a layout that blows your head off</h2>
    <p>Lorem ipsum dolor sit amet consectetur adipisicing elit.Totam quod excepturi laboriosam vero numquam tenetur corporis iusto magni quaerat eaque dolore, assumenda unde est nostrum saepe fugiat nam doloremque esse.</p>
  </div>

</section>

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67577169

复制
相关文章

相似问题

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