html - 如何仅使用 CSS 创建带正方形的网格,同时尊重最大宽度和高度?
问题描述
我正在尝试创建一个如下图所示的“网格”。我正在使用 React、Sass 和 EC6。我面临的问题是:
该图像显示了一个 9 行和 9 列的示例,但这可以更改为(几乎)任何内容。例如,可能有 3 行 10 列,或 5 行 2 列。但我需要内容始终显示在屏幕上,即容器具有最大宽度和高度。
我希望中间的正方形始终是正方形,同时尽可能大地显示内容(没有固定的宽度和高度)。
如果我有例如 6 列和 2 行,我需要正方形的宽度和高度与最大宽度的 100/6 相同。
但是如果我翻转数字,并且有 2 列和 6 行,我希望正方形的大小为最大高度的 100/6。
我尝试了几种 CSS 方法,比如使用 flexbox,但都没有成功。
示例: https ://codepen.io/maffekill/pen/ZNZwXz
有没有办法在不使用 JS 的情况下解决这个问题?
.flex-container{
height:100px;
display:flex;
flex-flow:column;
border:1px solid black;
}
.flex-row {
padding: 0;
margin: 0;
display: flex;
justify-content: space-around;
line-height:30px;
}
.flex-item {
background: tomato;
margin: 5px;
color: white;
font-weight: bold;
font-size: 1.5em;
text-align: center;
flex: 1 0 auto;
height:auto;
}
.flex-item:before {
content:'';
float:left;
padding-top:100%;
}
<body>
<div class="flex-container">
<div class="flex-row">
<div class="flex-item">1</div>
<div class="flex-item">2</div>
<div class="flex-item">3</div>
<div class="flex-item">4</div>
<div class="flex-item">5</div>
<div class="flex-item">6</div>
<div class="flex-item">7</div>
<div class="flex-item">8</div>
</div>
<div class="flex-row">
<div class="flex-item">1</div>
<div class="flex-item">2</div>
<div class="flex-item">3</div>
<div class="flex-item">4</div>
<div class="flex-item">5</div>
<div class="flex-item">6</div>
<div class="flex-item">7</div>
<div class="flex-item">8</div>
</div>
</div>
</body>
此方法不考虑高度。
现在我知道我可以在 JS 中计算出所有的宽度和高度,然后相应地更改为 CSS,但这不会像纯 CSS 那样简洁,而且需要大量额外的资源。有没有办法在不使用 JS 的情况下使用纯 CSS/HTML 来做到这一点?
PS这是我在堆栈上的第一个问题,如果有不清楚的地方,请随时发表评论;)
解决方案
.container{
min-width: 100%;
max-width: 100%;
}
<div class = "container">
</div>
你可以做类似的事情来让你的容器总是 100% 宽度。
推荐阅读
- html - KaTeX 在怪癖模式下不起作用:如何以用户身份解决此问题?
- kotlin - 'readpage' 不会覆盖 udacity 教程中的任何内容
- ios - 安装 cocoapods 时出错:无法构建 gem 原生扩展
- c - 将字符串转换为另一个函数的结果
- azure - Cosmos DB - 为什么请求没有受到限制?
- python - 为什么 [1] 不是 python 中 range(1,5,-1) 函数的输出?
- python - plt.pause() 的最小值
- php - 使用代理创建流时找不到套接字传输“http”
- r - R中的自定义函数
- php - FOOEvent - 在 PDF Ticket 中获取订单信息(总数、项目等)