响应式方格网格

14 浏览
0 Comments

响应式方格网格

我想知道如何创建一个具有响应式正方形的布局。每个正方形都有垂直和水平对齐的内容。具体示例如下图所示...

responsive squares with content

0
0 Comments

(Grid of responsive squares)这个问题的出现原因是希望创建一个具有响应式特性的网格,使得方块根据屏幕宽度自适应大小。

解决方法是使用vw(视口宽度)单位,根据屏幕宽度使方块具有响应式特性。下面是一个快速的示例代码:

html,
body {
  margin: 0;
  padding: 0;
}
div {
  height: 25vw;
  width: 25vw;
  background: tomato;
  display: inline-block;
  text-align: center;
  line-height: 25vw;
  font-size: 20vw;
  margin-right: -4px;
  position: relative;
}
/*demo only*/
div:before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  height: inherit;
  width: inherit;
  background: rgba(200, 200, 200, 0.6);
  transition: all 0.4s;
}
div:hover:before {
  background: rgba(200, 200, 200, 0);
}

1
2
3
4
5
6
7
8

另外,在代码中不要使用margin-left: -4px;,而是使用margin-right: -4px;。为了避免在最小字符间距上的不一致,最好将父容器的字体大小设置为0,然后将子元素的字体大小重新设置为1rem(相对于em单位)。

0
0 Comments

响应式正方形网格(Grid of responsive squares)的问题出现的原因是想要创建一个可以自适应的正方形网格布局,并且能够控制每行显示的列数。

解决方法是使用flexbox来实现。使用BEM语法编写的网格系统可以实现每行显示1-10列。如果最后一行不完整(例如选择每行显示5个方块,但有7个项目),则剩余的方块将水平居中对齐。要控制剩余方块的水平对齐方式,只需更改.square-grid类下的justify-content属性。

以下是解决方法的代码示例:

.square-grid {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
}
.square-grid__cell {
  background-color: rgba(0, 0, 0, 0.03);
  box-shadow: 0 0 0 1px black;
  overflow: hidden;
  position: relative;
}
.square-grid__content {
  left: 0;
  position: absolute;
  top: 0;
}
.square-grid__cell:after {
  content: '';
  display: block;
  padding-bottom: 100%;
}
// Sizes – Number of cells per row
.square-grid__cell--10 {
  flex-basis: 10%;
}
.square-grid__cell--9 {
  flex-basis: 11.1111111%;
}
.square-grid__cell--8 {
  flex-basis: 12.5%;
}
.square-grid__cell--7 {
  flex-basis: 14.2857143%;
}
.square-grid__cell--6 {
  flex-basis: 16.6666667%;
}
.square-grid__cell--5 {
  flex-basis: 20%;
}
.square-grid__cell--4 {
  flex-basis: 25%;
}
.square-grid__cell--3 {
  flex-basis: 33.333%;
}
.square-grid__cell--2 {
  flex-basis: 50%;
}
.square-grid__cell--1 {
  flex-basis: 100%;
}

此外,还提供了一个HTML示例,显示了如何使用上述网格系统创建一个正方形网格布局。

Some content
Some content
...

通过使用以上代码,可以在浏览器中实现响应式正方形网格布局。

0
0 Comments

在上述内容中,我们可以看到这是关于创建响应式正方形网格的解决方案。问题的出现是因为在CSS中,没有直接的方法来创建正方形网格。解决方法是使用一些新的CSS属性来简化代码。其中,关键的CSS属性包括:

1. grid:用于处理网格布局的属性。

2. aspect-ratio:用于处理每个网格项的正方形纵横比的属性。

3. object-fit:用于处理图像居中以及它们是否应该覆盖整个正方形的属性。

通过使用这些属性,我们可以创建一个响应式正方形网格。下面是一个示例代码:

.grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 2%;
}
.square {
  aspect-ratio: 1/ 1;
  display: flex;
  align-items: center;
  padding: 5%;
  background-color: #1E1E1E;
  color: #fff;
}
.square img {
  width: 100%;
  height: 100%;
  object-fit: contain;
  object-position: center;
}
.square.fullImg {
  padding: 0;
}
.square.fullImg img {
  object-fit: cover;
}

在上述代码中,我们使用了`display: grid`来创建一个网格布局,`grid-template-columns`指定了每列的宽度,`gap`定义了网格项之间的间隔。然后,我们使用`aspect-ratio`属性来保持每个网格项的纵横比为1:1。`display: flex`和`align-items: center`用于垂直居中网格项中的内容。通过设置图像的`object-fit`属性,我们可以控制图像在正方形中的显示方式。

通过使用这些新的CSS属性,我们可以简化创建响应式正方形网格的代码,并实现所需的布局效果。

0