我想要以下布局,但我受到了html代码的限制.我只能更改css.

列1具有定义的宽度,但行必须占据宽度的其余部分.

+---+----------------+
|   |        2       |
|   |----------------+
| 1 |        3       |
|   |----------------+
|   |        4       |
|---|----------------+

<div class="cont">
  <div class="c1">1</div>
  <div class="l2">2</div>
  <div class="l3">3</div>
  <div class="l4">4</div>
</div>

推荐答案

这不是Flexbox的任务,而是可以控制2个方向的CSS-Grid,不像Flexbox.

要有2列,其中第一列宽度取决于第一个元素,其余列占用剩余空间,您可以使用:grid-template-columns: auto 1fr;.

要使第一个元素占据整个第一列,可以使用grid-row: span {{number of rows}}.如果您不知道行数或其他元素的数量,则使用无法达到的高得离谱的数字:

.cont {
  display: grid;
  grid-template-columns: auto 1fr;
}

.c1 {
  grid-row: span 100;
  width: 200px;
}

/* for visualization purpose only */
.cont > div {
  border: 2px dashed red;
}
<div class="cont">
  <div class="c1">1</div>
  <div class="l2">2</div>
  <div class="l3">3</div>
  <div class="l4">4</div>
</div>

Html相关问答推荐

CSS Flex行之间的空间很大

如何正确使用counter()、counter—increment()和counter—reset()嵌套标题?

如何修复与导航栏重叠的css网格?

标签数据的XPath?

窗口视图之外的下拉菜单位置

在弹性框布局中的第n个元素后强制换行

Html视频标签:圆角像素化

我的 *ngFor 中的 array.reverse() 在生产中不起作用

从触发元素移动到有间隙的内容时 CSS 工具提示关闭

使用 popover api 和 `

如何垂直对齐列表中的图像和文本?

HTML画布放大/缩小算法与CSS(图像处理)

如何在 css 和 html 中创建花状 struct

高度大于页面高度和页面大于覆盖的 CSS 覆盖

我用 ejs 修复了一个奇怪的语法错误,我想知道问题出在哪里

需要禁用聚焦输入的工具提示(jquery)

项目的水平列表:倒数第二个项目居中,而最后一个项目占据所有剩余空间

当我希望它只横向滚动时,可滚动菜单也会上下移动

使用 htmloutput 在shiny 的应用程序中呈现文本

Select 除第一个匹配的子元素之外的第 nth-child(n)