html - CSS Grid - 跨列表项强制实现通用列大小

标签 html css css-grid

我有一个 <ul> -list,其中每个列表项包含多个文本部分。

我希望每个文本部分都尽可能窄,但我仍然希望所有文本在元素之间垂直对齐。例如

<ul>
  <li> A. Name     | Some complex address        | 555-1234 </li>
  <li> Longer Name | Short Addr.                 | 555-1234 </li>
  <li> P. Diddy    | No home                     | 555-1234 </li>
</ul>

我希望 css grid 能为我解决这个问题,但我想不通...

ul {
  list-style: none;
  display: grid;
  justify-content: stretch;	
}

li {
  display: grid;
  grid-template-columns: auto 1fr auto;
  grid-column-gap: 10px;
}

p:nth-child(1) {
  background: #EEEEEE;
  border-right: 1px solid;
}

p:nth-child(2) {
   background: #CECECE;
   border-right: 1px solid;
}


p:nth-child(3) {
    background: #EEEEEE;
}
<ul>
  <li>
    <p>A. Name</p>
    <p>Some complex address</p>
    <p>555-1234</p>
  </li>
  <li>
    <p>Longer Name</p>
    <p>Short Addr.</p>
    <p>555-1234</p>
  </li>
  <li>
    <p>P. Diddy</p>
    <p>No home</p>
    <p>555-1234</p>
  </li>
</ul>

css grid 是不是适合这项工作的工具,还是我遗漏了什么?

最佳答案

他们需要属于同一个网格才能得到这个结果,所以你可以尝试这样的事情:

是的,没有更多列表

.list {
  display: grid;
  grid-template-columns: auto 1fr auto;
  grid-column-gap: 10px;
}

p:nth-child(3n + 1) {
  background: #EEEEEE;
  border-right: 1px solid;
}

p:nth-child(3n +2) {
  background: #CECECE;
  border-right: 1px solid;
}

p:nth-child(3n+3) {
  background: #EEEEEE;
}
<div class="list">
  <p>A. Name</p>
  <p>Some complex address</p>
  <p>555-1234</p>

  <p>Longer Name</p>
  <p>Short Addr.</p>
  <p>555-1234</p>

  <p>P. Diddy</p>
  <p>No home</p>
  <p>555-1234</p>
</div>

或者考虑 display:table 并且你可以保持你的列表结构:

.list {
  display: table;
  margin:0;
  padding:0;
  border-spacing: 10px;
}
.list li {
  display:table-row;
}
p {
 display:table-cell;
}
p:nth-child(1) {
  background: #EEEEEE;
  border-right: 1px solid;
  white-space:nowrap;
}

p:nth-child(2) {
  background: #CECECE;
  border-right: 1px solid;
  width:100%;
}

p:nth-child(3) {
  background: #EEEEEE;
  white-space:nowrap;
}
<ul class="list">
<li>
  <p>A. Name</p>
  <p>Some complex address</p>
  <p>555-1234</p>
</li>
<li>
  <p>Longer Name</p>
  <p>Short Addr.</p>
  <p>555-1234</p>
</li>
<li>
  <p>P. Diddy</p>
  <p>No home</p>
  <p>555-1234</p>
</li>
</ul>

关于html - CSS Grid - 跨列表项强制实现通用列大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49661203/

相关文章:

javascript - 如何将 <div> 水平扩展到 100% 宽度?

javascript - css-grid 在 Firefox 和 Chrome 中呈现不同

html - 将文本附加到 Div 将 Div 扩展到初始 CSS 网格之外

javascript - 将幻灯片图像限制为幻灯片容器的高度/宽度?

css - 在 jQueryMobile 中最大化内容 div 的大小

javascript - CKEditor:我想在所见即所得编辑器中禁止 <ul> 标签

javascript - 为 Bootstrap Carousel 创建容器

html - 为什么 CSS Grid 的自动填充属性在列方向上不起作用

html - :before not applying gradient to image?

html - HTML 表格中的固定标题