I have been tasked to recreate this grid layout: enter image description here

它还说我必须像这样计算列宽:(100/12)*n,其中100是网格容器宽度,12是最大列数,n是列数,例如在第二行有2列,因此在这种情况下n将是2.

我想我做错了.

我是这样做的:

超文本标记语言

<div class="grid-container">
        <div class="row-1 row">
            <div class="column-12">12 kollonas</div>
        </div>

        <div class="row-2 row">
            <div class="column-6">6 kollonas</div>
            <div class="column-6">6 kollonas</div>
        </div>
        
        <div class="row-3 row">
            <div class="column-4">4 kollonas</div>
            <div class="column-4">4 kollonas</div>
            <div class="column-4">4 kollonas</div>
        </div>

        <div class="row-4 row">
            <div class="column-3">3 kollonas</div>
            <div class="column-3">3 kollonas</div>
            <div class="column-3">3 kollonas</div>
            <div class="column-3">3 kollonas</div>
        </div>

        <div class="row-5 row">
            <div class="column-2">2 kollonas</div>
            <div class="column-2">2 kollonas</div>
            <div class="column-2">2 kollonas</div>
            <div class="column-2">2 kollonas</div>
            <div class="column-2">2 kollonas</div>
            <div class="column-2">2 kollonas</div>
        </div>

        <div class="row-6 row">
            <div class="column-1">1</div>
            <div class="column-1">1</div>
            <div class="column-1">1</div>
            <div class="column-1">1</div>
            <div class="column-1">1</div>
            <div class="column-1">1</div>
            <div class="column-1">1</div>
            <div class="column-1">1</div>
            <div class="column-1">1</div>
            <div class="column-1">1</div>
            <div class="column-1">1</div>
            <div class="column-1">1</div>
        </div>
    </div>

CSS

[class*='column-']{ 
    width: 100%; 
    float: left; 
    min-height: 1px; 
    padding: 15px 0;
    box-sizing: border-box;
}
body{
    background-color: rgb(255, 219, 245);
    font-family: Arial, Helvetica, sans-serif;
}

.grid-container{
    display: grid;
    grid-gap: 4px;
    text-align: center;
    width: 90%;
    margin: auto;
    row-gap: 20px;
}

.column-12{
    grid-column-start: 1;
    grid-column-end: 12;
}

.row{
    display: grid;
    grid-column-start: 1;
    grid-column-end: 12;
    grid-gap: 20px;
}

.row div{
    background-color: white;
    height: 50px;
    border-radius: 5px;
    box-shadow: 2px 2px 0 rgba(0, 0, 0, 0.205);
    color: rgb(158, 58, 167)
}

.row-2{
    grid-template-columns: repeat(2, 1fr);
}

.row-3{
    grid-template-columns: repeat(3, 1fr);
}

.row-4{
    grid-template-columns: repeat(4, 1fr);
}

.row-5{
    grid-template-columns: repeat(6, 1fr);
}

.row-6{
    grid-template-columns: repeat(12, 1fr);
}

The result: enter image description here

但我觉得我做错了.我觉得有更好的办法.也许有人能帮我?

推荐答案

不是我会做的方式,但它的工作.你真的不需要那些排比.只需让网格容器有12列,然后告诉每个列类要跨越多少列.

[class*='column-'] {
  min-height: 1px;
  padding: 15px 0;
  box-sizing: border-box;
}

body {
  background-color: rgb(255, 219, 245);
  font-family: Arial, Helvetica, sans-serif;
}

.grid-container {
  display: grid;
  grid-template-columns: repeat(12, 1fr);
  grid-gap: 4px;
  text-align: center;
  width: 90%;
  margin: auto;
  row-gap: 20px;
}

.grid-container div {
  background-color: white;
  height: 50px;
  border-radius: 5px;
  box-shadow: 2px 2px 0 rgba(0, 0, 0, 0.205);
  color: rgb(158, 58, 167)
}

.column-12 {
  grid-column: span 12;
}

.column-6 {
  grid-column: span 6;
}

.column-4 {
  grid-column: span 4;
}

.column-3 {
  grid-column: span 3;
}

.column-2 {
  grid-column: span 2;
}

.column-1 {
  grid-column: span 1;
}
<div class="grid-container">
  <div class="column-12">12 kollonas</div>

  <div class="column-6">6 kollonas</div>
  <div class="column-6">6 kollonas</div>

  <div class="column-4">4 kollonas</div>
  <div class="column-4">4 kollonas</div>
  <div class="column-4">4 kollonas</div>

  <div class="column-3">3 kollonas</div>
  <div class="column-3">3 kollonas</div>
  <div class="column-3">3 kollonas</div>
  <div class="column-3">3 kollonas</div>

  <div class="column-2">2 kollonas</div>
  <div class="column-2">2 kollonas</div>
  <div class="column-2">2 kollonas</div>
  <div class="column-2">2 kollonas</div>
  <div class="column-2">2 kollonas</div>
  <div class="column-2">2 kollonas</div>

  <div class="column-1">1</div>
  <div class="column-1">1</div>
  <div class="column-1">1</div>
  <div class="column-1">1</div>
  <div class="column-1">1</div>
  <div class="column-1">1</div>
  <div class="column-1">1</div>
  <div class="column-1">1</div>
  <div class="column-1">1</div>
  <div class="column-1">1</div>
  <div class="column-1">1</div>
  <div class="column-1">1</div>

</div>

Html相关问答推荐

HTML5章节或文章

如何翻转卡片图像的背面

如何将CSS滤镜仅应用于背景图像

每个元素的CSS网格高度相等,以保持响应性

我希望创建一个对角手风琴与不同的内容(文本和图像)在其正常状态和其他元素悬停

使用bash从html表格中提取表格

根据Tailwind CSS中的子计数而非子宽度进行对齐,并水平对齐

如何在 Bootstrap 5 中将两个导航栏元素放在末尾?

CSS中的百分比高度,如何使其与父级高度相同

在屏幕上每行 css 中的特定列居中

如何使用 HTML 将对象数组发送到 Nodejs Express

如何在悬停时使矩形按钮上的边框变圆

在带有换行文本的工具提示中显示溢出文本

调整屏幕大小时标题在图像下方重叠 - HTML

将背景图像裁剪成两半

如何使用 :before 在 CSS 中为列表增加计数器

在一行中对齐两个不同形式的按钮

辅助功能:alt 或 alt="" 用于装饰图像

如何将第一个 p 标签放在其下方第二个 p 标签的中间

用 flexbox 和 overflow 覆盖