css - 在 CSS Grid 中自动跨越项目宽度
问题描述
我正在使用 CSS Grid 来显示一些标签。如果标签很大(即它的宽度超过 150 像素),我希望该项目根据需要跨越到更多列。例如,在图像中,我希望红色标签分成两列,以便文本保持在一行中。
是否可以在不向目标元素添加特定类的情况下做类似的事情?我正在通过 React 中的数组进行映射以生成每个 div,因此无法仅向该元素添加类。
index.js
<div className={styles.container}>
<>
{tags.map(tag => {
return <TagBlock tag={tag} />
})}
</>
</div>
样式.css
.container {
margin: 30px auto;
width: 90%;
display: grid;
grid-template-columns: repeat(auto-fill, minmax(150px, auto));
grid-gap: 20px;
}
解决方案
不知道仅通过 CSS 实现逐渐增加列宽的方法。需要一个 JS 逻辑来设置“它应该占用多少列”。然后是以下情况之一。
- “宽”列的显式样式:
grid-column: span X;
其中 X 是你的元素应该有多少列。
- 设置预定义的类(如 Bootstrap:col-1、col-2),然后应用它们。
如果一列可以有任何宽度,那么我建议您使用带有换行的 flexbox。有点儿:
.container {
margin: 30px auto;
width: 90%;
/*added properties below*/
display: flex;
flex-wrap: wrap;
align-content: flex-start;
}
/*TagBlock base style that grid generated on its own*/
TagBlock {
margin: 25px;
min-height: 120px;
min-width: 120px;
}
希望,这会有所帮助。
推荐阅读
- java - 如何在我的全局变量中存储一个值并在活动中的任何方法中使用它
- sql - Sql - 打开 Json 插入表
- command-line - Loopback cli (lb4) 在启动时崩溃
- typescript - 由于“TypeError:无法读取未定义的属性 'xxx'”,Jest 测试套件无法运行
- python - 编写代码以检查密码是否符合特定条件
- css - 在屏幕上显示时弹跳或淡入文本和 div
- r - 具有索引向量的子集列表
- javascript - 根据元素值,应修改对象数组中的剩余元素
- ansible - 获取ansible中变量的值
- django - 自定义Django模型时如何防止错误