我正在try 使用FlexBox创建以下CSS布局:

enter image description here

将布局想象为一个弹性行,左侧有一个框(图像),右侧是一个弹性列,所有文本都堆叠在一起.左侧框的高度会自动调整为右侧弹性柱的高度.到目前为止,我已经做到了这一点,但我无法将它变成正方形(因为在宽度上与高度相同).

目前,我有生成以下结果的代码:

<div class="container">
  <div class="profile_pic"></div>
  
  <div class="text_container">
      <h1>Name: Toby</h1>
      <h2>Gender: Male</h2>
      <h3>Password: 123</h2>
  </div>
<div>
.container {
  background: orange;
  display: flex;
  flex-direction: row;
}

.profile_pic {
  aspect-ratio: 1/1;
  background: blue;
}

.text_container {
  display: flex;
  flex-direction: column;
} 

enter image description here

在栏的左边应该有一个正方形的蓝色方框,里面有文本,但由于某种原因没有显示出来?

如果我设置了一个特定的宽度,它确实会显示,但这不是我想要的,因为我希望宽度与高度相同(保持1/1的纵横比):

enter image description here

我目前的解决办法是将蓝色框包装在align-items设置为center的弹性框中,然后将蓝色框设置为与框的高度大致匹配的硬编码大小:

enter image description here

我看到了很多类似的布局,比如YouTube频道:

enter image description here

堆栈溢出指示器:

enter image description here

我相信这种类似的布局是通过使用变通方法来完成的,比如为容器或图像本身设置一个明确的高度.这种方法不是很好,因为总是有一个小的误差范围,如果我想从向右伸缩的列中删除一行,我将需要手动调整大小(它不是动态的).

唉,我相信这是一个相当有趣的问题,我希望大家能够共同获得更多关于如何在CSS中完成这样的布局的知识.

任何帮助都将不胜感激.

推荐答案

这件事花了我好几个小时,我只是认为这应该很简单,但我无法更快地找到解决方案.因此,在调整了FlexBox、相对绝对位置甚至表格布局之后,我才意识到我们可以使用网格来实现这一点.这里最重要的是第一个子元素的min-height: 100%height: 0.height必须为零,这样才不会出现在栅格高度计算中,而min-height必须是行高度的min-height: 100%%:

.container {
  background: orange;
  display: grid;
  grid-template-columns: auto 1fr;
}

.profile_pic {
  min-height: 100%;
  height: 0;
  background: blue;
}

img {
  max-width: 100%;
  max-height: 100%;
  aspect-ratio: 1/1;
}

.text_container {
  display: flex;
  flex-direction: column;
}
<div class="container">
  <div class="profile_pic">
    <img src="https://www.w3schools.com/w3css/img_avatar3.png">
  </div>

  <div class="text_container">
    <h1>Name: Toby</h1>
    <h2>Gender: Male</h2>
    <h3>Password: 123</h3>
  </div>
  <div>

您可以将图像更改为不是1/1的比例,您将看到它将保持在1/1的比例.

Html相关问答推荐

XPATH text()函数遇到困难

如何在一个div中心字体图标?

Div内容防止同级大小增加

在Vue 3中使用v-Bind将计算(computed)属性传递给css url()

仅在过渡之前删除填充

带有下拉菜单的完整css导航-链接不起作用?

如何防止滑动滚动元素时touch 屏出现空白区域?

带有图像的虚线边框

如何在r中提取明显非标准html标签的值

如何使活动选项卡背景作为父背景图像

如何从通过 find-each 方法(在 Rails 应用程序中)生成的列表创建下拉菜单?

本地和在jsfiddle上页面工作正常,但在GitHub上无法运行.

需要帮助个性化我的 CSS 导航栏:如何在鼠标悬停时突出显示
  • 元素?
  • 鼠标悬停时切换 colored颜色 的双色链接

    在中心而不是边界处填充 svg 的背景

    隐藏在标题后面的下拉菜单

    所有幻灯片上的 Quarto RevealJS 标题

    在 Vue 3 中使用 JavaScript 数组显示 FontAwesome 图标

    如何使用 html 和 css 添加超链接功能