如何在弹性行中排列图像和文本?

How can I arrange an image and text in a flex row?

我正在尝试缩小图像和右侧带有文本的列。同时。 此时,只有文本在缩小,直到两列的屏幕都变小了。

这是我第一次在整个网站上使用 flex,所以我遗漏了一些你猜的概念。

想法是让图像和文本始终具有相同的宽度。

此版本仅适用于台式机和平板电脑屏幕。 movil版本将传送另一个内容。

.twoColumns {
  display: flex;
  flex-direction: row;
  justify-content: space-between;
}

.responsive {
  max-width: 100%;
  height: auto;
}

.right {
  width: 600px;
  max-width: 100%;
  margin-left: 28px;
}
<div class="twoColumns">
  <img src="https://dummyimage.com/600x400/000/fff" class="responsive" width="600">
  <div class="right" class="responsive">
    Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium.
  </div>
</div>

删除所有固定宽度并将图像嵌套在 div。

.twoColumns {
  display: flex;
  flex-direction: row;
  justify-content: space-between;
}

.responsive {
  max-width: 100%;
  height: auto;
}

.right {
  max-width: 100%;
  margin-left: 28px;
}
<div class="twoColumns">
  <div class="left">
    <img src="https://dummyimage.com/600x400/000/fff" class="responsive">
  </div>
  <div class="right" class="responsive">
    Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium.
  </div>
</div>

您的两个 max-width 干扰了 flex 算法。在 flex children 上使用内置的 flex shorthand 告诉它们以 1 的速率增长,以 1 的速率收缩,并从 parent 的 [=50% 开始=48=]分别.

我在 children 上添加了 50% 的 max-width 以在非常小的宽度上缩小图像。

与 margin-left.

相比,您可能更喜欢使用现代间隙 属性 来表示 flex/grid 的间隙

调整大小、溢出和背景颜色仅适用于此演示。

编辑:您可能还想为非常小的宽度添加一个 word-break,因为您的单词太长而无法容纳。

.twoColumns {
  display: flex;
  gap: 28px;
  flex-direction: row;
  justify-content: space-between;
  resize: both;
  overflow: auto;
  background-color: #eee;
}

.responsive,
.right {
  max-width: 50%;
  flex: 1 1 50%;
  word-break: break-word;
}
<div class="twoColumns">
  <img src="https://source.unsplash.com/random/200x200" class="responsive">
  <div class="right" class="responsive">
    Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium.
  </div>
</div>

您也可以使用 CSS 网格:

.twoColumns {
  display: grid;
  gap: 28px;
  grid-template-columns: 1fr 1fr;
  grid-template-rows: 100%;
  resize: both;
  overflow: auto;
  background-color: #eee;
}

.responsive {
  width: 100%;
  word-break: break-word;
}

.right {
  background-color: skyblue;
}
<div class="twoColumns">
  <img src="https://source.unsplash.com/random/200x200" class="responsive left">
  <div class="responsive right">
    Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium.
  </div>
</div>

我想你可能需要这样的东西:

.left {
  flex: 50%;
}

.right {
  flex: 50%;
  width: 600px;
  max-width: 100%;
  margin-left: 28px;
}
<div class="twoColumns">
  <div class="left">
    <img src="https://images.unsplash.com/photo-1453728013993-6d66e9c9123a?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxzZWFyY2h8MTF8fGNoYW5nZXxlbnwwfHwwfHw%3D&w=1000&q=80" class="responsive" width="600">
  </div>
  <div class="right" class="responsive">
    Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium.
  </div>
</div>

.section1 {
  display: flex;
  flex-direction: row;
  justify-content: space-between;
}

.responsive {
  max-width: 100%;
  height: auto;
}

.right {
  width: 100%;
  margin-left: 20px;
  display: flex;
  align-items: center;
}
<div class="section1">
      <div class="left">
        <img src="https://dummyimage.com/600x400/000/fff"              class="responsive">
      </div>
      <div class="right" class="responsive">
 an open platform for founders to connect, launch ideas/products, find recommended
      </div>
    </div>