使用纯CSS创建CSS网格布局

我试图创建一个布局使用 CSS 网格像图像(任何项目是正方形):

我试图创建一个布局使用 CSS 网格像图像(任何项目是正方形):

CSS grid layout pattern

我正在尝试的代码:

CSS公司

  .grid-container {
    padding: 20px;
    display: grid;
    grid-gap: 20px;
    grid-auto-rows: 1fr;
    grid-template-columns: repeat(2, 1fr);
  }
  .item {
    position: relative;
    background: #ccc;
  }
  /* Square */
  .item:after {
    content: '';
    display: block;
    padding-top: 100%;
  }
  @media screen and (min-width: 640px) and (max-width: 1023px) {
    /* 640 ~ 1023 */
    .grid-container {
      grid-template-columns: repeat(3, 1fr);
    }
    .item:nth-child(6n + 1) {
      grid-column: span 2 / 3;
      grid-row: span 2;
    }
    .item:nth-child(6n + 6) {
      grid-column: span 2 / 3;
      grid-row: span 2;
      grid-column: 2 / 4;
    }
    .item:nth-child(6n + 5) {
      grid-column: span 1 / 2;
    }
  }
  @media print, screen and (min-width: 1024px) {
    /* 1024+ */
    .grid-container {
      grid-template-columns: repeat(4, 1fr);
    }
    .item:nth-child(10n + 1) {
      grid-column: span 2 / 3;
      grid-row: span 2;
    }
    .item:nth-child(10n) {
      grid-column: span 2 / 3;
      grid-row: span 2;
      grid-column-end: 5;
    }
    .item:nth-child(10n + 8) {
      grid-column-start: 1;
    }
  }

你可以在这里找到我的代码:JSFiddle

Result show: CSS grid layout pattern

我认为使用position: absolute与计算网格位置的 JavaScript 可以解决问题。

如何使用纯 CSS 创建这个布局?

8

你可以像下面一样尝试。你几乎很好,缺少grid-auto-flow:dense;以允许该项目填充所有空格。

.grid-container {
  padding: 20px;
  display: grid;
  grid-gap: 20px;
  grid-auto-rows: 1fr;
  grid-template-columns: repeat(2, 1fr);
  grid-auto-flow:dense;
  counter-reset: alList;
}
.item {
  aspect-ratio: 1;
  background: #ccc;
  display: flex;
}
/* Number */
.item:before {
  counter-increment: alList;
  content: counter(alList);
  margin: auto;
  font-size: 40px;
  color: #000000;
}
@media screen and (min-width: 40em) and (max-width: 63.99875em) {
  /* 640 ~ 1023 */
  .grid-container {
    grid-template-columns: repeat(3, 1fr);
  }
  .item:nth-child(6n + 1),
  .item:nth-child(6n + 6){
    grid-area: span 2/span 2;
  }
  .item:nth-child(6n + 5) {
    grid-column: 1;
  }
}
@media print, screen and (min-width: 64em) {
  /* 1024+ */
  .grid-container {
    grid-template-columns: repeat(4, 1fr);
  }
  .item:nth-child(10n + 1),
  .item:nth-child(10n + 10){
    grid-area: span 2/span 2;
  }
  .item:nth-child(10n + 8) {
    grid-column: 1;
  }
  .item:nth-child(10n + 9) {
    grid-column: 2;
  }
}
<div cl="grid-container">
  <div cl="item"></div>
  <div cl="item"></div>
  <div cl="item"></div>
  <div cl="item"></div>
  <div cl="item"></div>
  <div cl="item"></div>
  <div cl="item"></div>
  <div cl="item"></div>
  <div cl="item"></div>
  <div cl="item"></div>
  <div cl="item"></div>
  <div cl="item"></div>
  <div cl="item"></div>
  <div cl="item"></div>
  <div cl="item"></div>
  <div cl="item"></div>
</div>

本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处

(683)
如何在一个元素上有多个CSS转换
上一篇
如何在asyncssh中运行一个进程并永远观察其输出
下一篇

相关推荐

  • css 弹性盒子:和2个段落 标题 段落1 段落2

    CSS 弹性盒子(Flexbox)是一种 CSS 布局模型,它可以轻松地在一个容器中对齐、排列和分布其子元素。它可以更容易地实现响应式布局,并且可以更轻松地实现复杂的布局。…

    2023-03-13 08:18:47
    0 39 74
  • css修改字体大小:标题

    示例示例CSS修改字体大小的方法有以下几种:使用`font-size`属性:…

    2023-02-18 06:04:24
    0 37 56
  • css添加滚动条:标题

    CSS添加滚动条的方法如下:在CSS中添加属性:…

    2022-12-30 13:40:10
    0 94 95
  • js控制css:Welcome to my page!

    示例示例JS控制CSS指的是使用来改变HTML元素的CSS属性,以达到动态改变页面样式的目的。下面是一个简单的代码示例:…

    2023-02-02 03:41:25
    0 96 24
  • css预处理器有哪些Sass、Less 和 Stylus

    CSS预处理器是一种用于构建CSS的工具,它可以帮助开发人员更轻松、更有效地创建和维护CSS代码。它们使用特殊的语法,可以添加变量、函数、继承和混合等功能,以帮助开发人员更轻松地编写CSS。…

    2023-01-18 11:57:40
    0 32 44
  • css属性选择器怎么用: bold;}`

    CSS属性选择器是一种CSS选择器,用于通过元素的属性和属性值来选择元素。它们可以与其他CSS选择器结合使用,以提供更多的灵活性和精确度。…

    2023-01-16 03:10:51
    0 16 53
  • css 网格线:**探索 CSS 网格系统的强大功能**

    CSS 网格线是一种用于布局的技术,它可以帮助开发人员将页面分割成多个部分,以便更容易地进行布局。CSS 网格线使用 CSS 规则来定义网格线,允许开发人员更容易地控制元素的大小、位置和对齐方式。…

    2023-03-01 04:15:12
    0 22 66
  • css 学习:CSS的威力

    CSS(Cascading Style Sheets)是一种用于定义HTML文档的外观和格式的语言。它可以让您更改文本的大小,颜色,字体,间距,布局等元素。…

    2023-02-11 12:49:11
    0 35 38

发表评论

登录 后才能评论

评论列表(84条)