首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >CSS网格:使网格列适应最宽的列

CSS网格:使网格列适应最宽的列
EN

Stack Overflow用户
提问于 2018-08-10 05:39:33
回答 1查看 351关注 0票数 0

代码语言:javascript
复制
const items = Array.from(column.children)

const widths = items.map(item => item.offsetWidth)

const widest = widths.reduce((widest, current) => widest > current ? widest : current, 0)

items.map(item => item.style.width = `${widest}px`)
代码语言:javascript
复制
body {
  margin: 0;
}

body * {
  font-family: Helvetica;
}

ul {
  margin: 0;
  padding: 0;
  list-style: none;
  display: grid;
}

#column {
  grid-auto-columns: max-content;
  grid-auto-flow: column;
}

li {
  text-align: center;
  padding: 10px 10px;
  color: lightcyan;
  background: lightseagreen;
  border-right: 2px solid lightcyan;
}
代码语言:javascript
复制
<ul id="column">
  <li>S</li>
  <li>Med</li>
  <li>Widest Item</li>
</ul>

我用一点javascript使列表项适合列表中最大的项。如何仅使用CSS来完成此任务?

这也可以从网格中行的角度来看。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-10 05:45:39

将UL的显示设置为inline-block。对于水平,你可以将( flex,inline-flex)与css-grid混合使用,使用flex或inline-flex类型创建一个包装器div。

代码语言:javascript
复制
body {
  margin: 0;
  font-family: Helvetica;
}

div {
  display: inline-flex;
}

ul {
  margin: 0;
  padding: 0;
  list-style: none;
  display: grid;
  grid-template-columns: repeat(3, 1fr);
}

li {
  text-align: center;
  padding: 10px 10px;
  color: lightcyan;
  background: lightseagreen;
  border-right: 2px solid lightcyan;
}
代码语言:javascript
复制
<div>
  <ul id="column">
    <li>S</li>
    <li>Med</li>
    <li>Widest Item</li>
  </ul>
</div>

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51776130

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档