我正在尝试使用display:inline-grid;
的逻辑将同级div的最小宽度设置为最宽的元素。根据,Width of widest element sets width of all siblings in the row,如果仅使用内联网格,则最宽的元素应为所有元素的宽度。这是一个例子。
似乎他们只是在拉伸物品?我想要的行为是使绿卡的宽度与最长的卡(人均卡)的宽度相同。如果我使用justify-items:center
,它会中断。
我真的不想指定最小宽度并且不拉伸div来填充容器,但是让绿卡的宽度为人均(最宽)卡的宽度。
仅CSS就有可能吗?
这是我的Codepen https://codepen.io/jwillis0720/live/jObMOEO
.header-container {
display: grid;
grid-template-columns: 0.25fr 1fr;
}
.description-container {
text-align: center;
border: 2px solid orange;
}
.card {
background-color: green;
text-align: center;
}
.container {
background-color: grey;
padding: 0.25rem;
margin: 0.25rem;
}
.counters-container {
display: inline-grid;
background-color: red;
grid-gap: 10px;
border: 2px solid blue;
font-size: 150%;
grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
justify-items: center;
}
<div id="header" class="container header-container">
<div id="description" class="description-container">
<div class="title-div">
<h1>Bored</h1>
</div>
<div class="bottom-div">
<h2>Jordan R. Willis</h2>
</div>
</div>
<div id="counters" class="counters-container">
<div id="cases-card" class="card tooltip">
<h3>Total Cases</h3>
<p id="total-cases">2,317,203</p>
<div class="change-card"><span>▲</span><span>77,568 </span><span></span><span>85,781</span>
</div>
</div>
<div id="deaths-card" class="card tooltip">
<h3>Total Deaths</h3>
<p id="total-deaths">159,492</p>
<div class="change-card"><span>▲</span><span>5,688 </span><span>6,355</span></div>
</div>
<div id="mortality-card" class="card tooltip">
<h3>Mortality Rate</h3>
<p id="mortality-rate">6.88%</p>
<div class="change-card"><span>▲</span><span>0.02 </span><span>0.02</span></div>
</div>
<div id="growth-card" class="card tooltip">
<h3>Growth Rate</h3>
<p id="growth-rate">3.46%</p>
<div class="change-card"><span>▼</span><span>0.61 </span><span>0.24</span></div>
</div>
<div id="relative-card-confirm" class="card tooltip">
<h3>Per Capita</h3>
<p id="total-cases">1 in 2907 </p>
<div class="change-card"><span>▲</span><span>1 in 3007 </span><span>1 in 2803 </span></div>
</div>
</div>
</div>
答案 0 :(得分:1)
问题是.header-container
的{{1}}具有1fr
,因此该列的宽度拉伸到100%。
您可以使用.counters-container
代替1fr
。
max-content
.header-container {
display: grid;
grid-template-columns: 0.25fr max-content;
}
不需要justify-content: center
。
不幸的是,将.counters-container
与repeat()
和auto-fit
一起使用是行不通的。如您所提供的链接中所见,您必须对列数进行硬编码。在这种情况下5。
min-max
如果需要将其居中,则可以将其包装在另一个.counters-container {
display: inline-grid;
background-color: red;
grid-gap: 10px;
border: 2px solid blue;
font-size: 150%;
grid-template-columns: repeat(5, 1fr);
}
中。
答案 1 :(得分:-1)
我个人不喜欢这种方法。我将使用flex
框或display
块。但是,由于您正在寻找现有实现的答案,请尝试执行此操作。
.counters-container {
...,
padding: 0 2em;
grid-gap: 2em;
justify-items: center;
}
.card {
...,
width: 100%;
}