当前位置: 首页 > 面试题库 >

具有响应正方形的网格布局

田硕
2023-03-14
问题内容

我想创建一个带有响应正方形的网格布局。

我觉得我应该可以使用CSS Grid布局来做到这一点,但是在将每个正方形的高度设置为等于宽度时遇到麻烦。

在每个正方形之间设置水槽时也遇到麻烦。

使用flexbox会更好吗?

目前,我的HTML看起来像这样,但是它将是动态的,因此可以添加更多的正方形。当然,它需要响应,因此理想情况下将使用媒体查询将其折叠到一列。

<div class="square-container">

  <div class="square">
    <div class="content">
    </div>
  </div>

  <div class="square">
    <div class="content spread">
    </div>
  </div>

  <div class="square">
    <div class="content column">
    </div>
  </div>

</div>

使用CSS网格,据我所知

.square-container{
    display: grid;
    grid-template-columns: 30% 30% 30%;
    .square {

    }
}

我可以使用flexbox进行更进一步的操作,并能够使用空格之间的间距使正方形与漂亮的装订线对齐,但仍在努力使高度
与每个正方形的宽度相匹配。

我无法找到使用flexbox或grid 完成此操作的任何示例,但任何示例也将不胜感激。


问题答案:

padding-bottom诀窍是最常用的技巧。

您可以将其与Flexbox和CSS Grid结合使用,由于对利润/填充使用百分比会导致弹性/网格项目的结果不一致,因此可以添加一个额外的包装器,或者在此处使用伪类,因此带有百分比的元素
不会弹性/网格项目。

编辑:请注意,对规格进行了更新。,现在在弹性/网格项目上使用时应能提供一致的结果。但是请注意,该问题
在较旧的版本上仍然会发生。

请注意,如果要向content元素添加内容,则它必须是绝对位置,以保持正方形的纵横比。

.square-container {

  display: flex;

  flex-wrap: wrap;

}



.square {

  position: relative;

  flex-basis: calc(33.333% - 10px);

  margin: 5px;

  border: 1px solid;

  box-sizing: border-box;

}



.square::before {

  content: '';

  display: block;

  padding-top: 100%;

}



.square .content {

  position: absolute;

  top: 0; left: 0;

  height: 100%;

  width: 100%;

}


<div class="square-container">



  <div class="square">

    <div class="content">

    </div>

  </div>



  <div class="square">

    <div class="content spread">

    </div>

  </div>



  <div class="square">

    <div class="content column">

    </div>

  </div>



  <div class="square">

    <div class="content spread">

    </div>

  </div>



  <div class="square">

    <div class="content column">

    </div>

  </div>



</div>

CSS Grid version

.square-container {

  display: grid;

  grid-template-columns: repeat(auto-fill, minmax(30%, 1fr));

  grid-gap: 10px;

}



.square {

  position: relative;

  border: 1px solid;

  box-sizing: border-box;

}



.square::before {

  content: '';

  display: block;

  padding-top: 100%;

}



.square .content {

  position: absolute;

  top: 0; left: 0;

  height: 100%;

  width: 100%;

}


<div class="square-container">



  <div class="square">

    <div class="content">

    </div>

  </div>



  <div class="square">

    <div class="content spread">

    </div>

  </div>



  <div class="square">

    <div class="content column">

    </div>

  </div>



  <div class="square">

    <div class="content spread">

    </div>

  </div>



  <div class="square">

    <div class="content column">

    </div>

  </div>



</div>


 类似资料:
  • 我想创建一个网格布局与响应方块。 我觉得我应该可以这样做与CSS网格布局,但有麻烦设置高度每个正方形等于宽度。 在每一个方块之间设置一条阴沟也有困难。 我用Flexbox会更好吗? 目前我的HTML看起来像这样,但将是动态的,所以更多的方块可能会被添加。当然,它需要具有响应性,因此理想情况下使用媒体查询将其折叠为一列。 使用css网格,这是我所得到的 我能够用flexbox做得更远一些,并且能够使

  • 问题内容: 我正在尝试创建一个自适应的正方形网格。正方形应调整大小以适合视口的宽度。更改视口高度时,正方形不应调整大小。 我了解了如何调整每个正方形的宽度,但是我不知道如何在视口宽度改变时使元素变为正方形以及如何缩放其高度。 在小提琴下面的示例中,七个正方形应始终水平放置,并且应按正方形缩放。我不在乎有多少行可见。 问题答案: 您不应设置任何大小。您可以使用额外的元素或带有%的垂直填充的伪元素。这

  • 问题内容: 我在长度为4+的div内有一系列文章,没有任何四舍五入的行标记。我需要将其表示为每行3个文章(列)的表格,大概用display: grid。每篇文章都有一个页眉,一个节和一个页脚。 如何 在每行文章的内部为每个页眉实现相等的高度,为每个部分提供相等的高度以及与文章底部对齐的相等高度的页脚?可能吗 我应该使用display: table吗? PS我需要根据屏幕宽度动态更改每行的文章数。谢

  • 问题内容: 我想使我的网站使用CSS网格系统,但似乎无法正常工作。这是我的代码: 问题答案: 使用该属性时,字符串值必须具有相同的列数。 您可以使用句点或句点的不间断行来表示一个空单元格(规范参考)。 从网格规范: [7.3。 命名区域:属性] 所有字符串的列数必须相同,否则声明无效。 如果命名的网格区域跨越多个网格单元,但是这些单元不形成单个填充矩形,则声明无效。 在此模块的将来版本中,可能会允

  • 媒体查询助手类 Media Query Helper Classes Jquery Mobile给html元素增加了用来模拟浏览器的水平竖直方向以及常用的最?最大宽度css媒介查询class.这些class会在加载,调整大小以及方向变化时更新,使你能够在css中切断这些class,以创建有响应的布局,即使在不支持媒介查询的浏览器中也可以实现 方向类 Orientation Classes 取决于浏

  • 尽管标题听起来很复杂,但我的实际问题应该不太难建模。但是,我无法找到一个好的算法来执行以下操作: 我想用固定数量的n个矩形覆盖网格上的一组正方形。这些矩形可能会重叠,它们只需要覆盖我的形状的外边缘。 平方米x平方米网格上不同矩形的数量为: 因此,蛮力方法必须尝试的组合数量是 对于10 x 10网格和仅3个矩形,这将是2768064625个组合。 带有一些正方形的初始网格可能如下所示: n = 1: