具有固定宽度元素的 Flexbox
Flexbox with fixed width elements
我有一个包含在 Flexbox 中的金字塔形状的图像。只要图像的宽度固定,它就会按预期工作。如果我调整屏幕大小(或将其更改为更小的分辨率),因为它是 Flexbox,基本项目(下行)将减少 space 并且会缩小。
理想情况下,我希望基本项目有一个动态的基本尺寸(屏幕越小,项目越小),但是上面几行的项目尺寸应该在下面的行中索引并且有大小一样。
这是我想要实现的示例:https://codepen.io/Mantequilla_/pen/WNrWBWW
调整浏览器大小(或分辨率太低)后,金字塔就会变形(例如,项目越靠上,它就会越大,这是不需要的)。
不确定,我想实现的目标仅在 CSS 中可行,但我愿意接受任何建议。
示例代码供参考:
.row {
margin: 0 auto;
display: flex;
flex-wrap: nowrap;
justify-content: center;
}
.item {
display: inline-block;
}
img {
width: 50%;
}
<ul class="row">
<li class="item"><img class="Pyramide-img-128" src="https://i.imgur.com/8ZYUZbG.png" alt="Card"></li>
</ul>
<ul class="row">
<li class="item"><img class="Pyramide-img-128" src="https://i.imgur.com/8ZYUZbG.png" alt="Card"></li>
<li class="item"><img class="Pyramide-img-128" src="https://i.imgur.com/8ZYUZbG.png" alt="Card"></li>
</ul>
<ul class="row">
<li class="item"><img class="Pyramide-img-128" src="https://i.imgur.com/8ZYUZbG.png" alt="Card"></li>
<li class="item"><img class="Pyramide-img-128" src="https://i.imgur.com/8ZYUZbG.png" alt="Card"></li>
<li class="item"><img class="Pyramide-img-128" src="https://i.imgur.com/8ZYUZbG.png" alt="Card"></li>
</ul>
<ul class="row">
<li class="item"><img class="Pyramide-img-128" src="https://i.imgur.com/8ZYUZbG.png" alt="Card"></li>
<li class="item"><img class="Pyramide-img-128" src="https://i.imgur.com/8ZYUZbG.png" alt="Card"></li>
<li class="item"><img class="Pyramide-img-128" src="https://i.imgur.com/8ZYUZbG.png" alt="Card"></li>
<li class="item"><img class="Pyramide-img-128" src="https://i.imgur.com/8ZYUZbG.png" alt="Card"></li>
</ul>
您可以尝试使用视图宽度。
<style>
.row {
margin: 0 auto;
display: flex;
flex-wrap: nowrap;
justify-content: center;
}
.item {
display: inline-block;
}
img {
width: 5vw;
margin-left: 2.5vw;
margin-right: 2.5vw;
}
</style>
如果行数已知或者您有最大值,您可以像下面这样尝试:
:root {
--r:5; /* number of row */
}
body {
margin:0;
text-align:center;
}
.container {
display:inline-flex;
flex-direction:column;
}
.row {
padding:0;
margin:0 auto;
display: flex;
list-style:none;
}
img {
width: 50%;
}
.row:not(:last-child) {
width:0;
}
/* you can easily generate the below using SASS/LESS*/
.row:nth-last-child(2) {min-width:calc(100% * (var(--r) - 1)/var(--r));}
.row:nth-last-child(3) {min-width:calc(100% * (var(--r) - 2)/var(--r));}
.row:nth-last-child(4) {min-width:calc(100% * (var(--r) - 3)/var(--r));}
.row:nth-last-child(5) {min-width:calc(100% * (var(--r) - 4)/var(--r));}
.row:nth-last-child(6) {min-width:calc(100% * (var(--r) - 5)/var(--r));}
.row:nth-last-child(7) {min-width:calc(100% * (var(--r) - 6)/var(--r));}
.row:nth-last-child(8) {min-width:calc(100% * (var(--r) - 7)/var(--r));}
.row:nth-last-child(9) {min-width:calc(100% * (var(--r) - 8)/var(--r));}
/*.row:nth-last-child(N) {min-width:calc(100% * (var(--r) - (N-1))/var(--r));}*/
<div class="container">
<ul class="row">
<li class="item"><img src="https://i.imgur.com/8ZYUZbG.png" alt="Card"></li>
</ul>
<ul class="row">
<li class="item"><img src="https://i.imgur.com/8ZYUZbG.png" alt="Card"></li>
<li class="item"><img src="https://i.imgur.com/8ZYUZbG.png" alt="Card"></li>
</ul>
<ul class="row">
<li class="item"><img src="https://i.imgur.com/8ZYUZbG.png" alt="Card"></li>
<li class="item"><img src="https://i.imgur.com/8ZYUZbG.png" alt="Card"></li>
<li class="item"><img src="https://i.imgur.com/8ZYUZbG.png" alt="Card"></li>
</ul>
<ul class="row">
<li class="item"><img src="https://i.imgur.com/8ZYUZbG.png" alt="Card"></li>
<li class="item"><img src="https://i.imgur.com/8ZYUZbG.png" alt="Card"></li>
<li class="item"><img src="https://i.imgur.com/8ZYUZbG.png" alt="Card"></li>
<li class="item"><img src="https://i.imgur.com/8ZYUZbG.png" alt="Card"></li>
</ul>
<ul class="row">
<li class="item"><img src="https://i.imgur.com/8ZYUZbG.png" alt="Card"></li>
<li class="item"><img src="https://i.imgur.com/8ZYUZbG.png" alt="Card"></li>
<li class="item"><img src="https://i.imgur.com/8ZYUZbG.png" alt="Card"></li>
<li class="item"><img src="https://i.imgur.com/8ZYUZbG.png" alt="Card"></li>
<li class="item"><img src="https://i.imgur.com/8ZYUZbG.png" alt="Card"></li>
</ul>
</div>
更多行:
:root {
--r:7; /* number of row */
}
body {
margin:0;
text-align:center;
}
.container {
display:inline-flex;
flex-direction:column;
}
.row {
padding:0;
margin:0 auto;
display: flex;
list-style:none;
}
img {
width: 50%;
}
.row:not(:last-child) {
width:0;
}
/* you can easily generate the below using SASS/LESS*/
.row:nth-last-child(2) {min-width:calc(100% * (var(--r) - 1)/var(--r));}
.row:nth-last-child(3) {min-width:calc(100% * (var(--r) - 2)/var(--r));}
.row:nth-last-child(4) {min-width:calc(100% * (var(--r) - 3)/var(--r));}
.row:nth-last-child(5) {min-width:calc(100% * (var(--r) - 4)/var(--r));}
.row:nth-last-child(6) {min-width:calc(100% * (var(--r) - 5)/var(--r));}
.row:nth-last-child(7) {min-width:calc(100% * (var(--r) - 6)/var(--r));}
.row:nth-last-child(8) {min-width:calc(100% * (var(--r) - 7)/var(--r));}
.row:nth-last-child(9) {min-width:calc(100% * (var(--r) - 8)/var(--r));}
/*.row:nth-last-child(N) {min-width:calc(100% * (var(--r) - (N-1))/var(--r));}*/
<div class="container">
<ul class="row">
<li class="item"><img src="https://i.imgur.com/8ZYUZbG.png" alt="Card"></li>
</ul>
<ul class="row">
<li class="item"><img src="https://i.imgur.com/8ZYUZbG.png" alt="Card"></li>
<li class="item"><img src="https://i.imgur.com/8ZYUZbG.png" alt="Card"></li>
</ul>
<ul class="row">
<li class="item"><img src="https://i.imgur.com/8ZYUZbG.png" alt="Card"></li>
<li class="item"><img src="https://i.imgur.com/8ZYUZbG.png" alt="Card"></li>
<li class="item"><img src="https://i.imgur.com/8ZYUZbG.png" alt="Card"></li>
</ul>
<ul class="row">
<li class="item"><img src="https://i.imgur.com/8ZYUZbG.png" alt="Card"></li>
<li class="item"><img src="https://i.imgur.com/8ZYUZbG.png" alt="Card"></li>
<li class="item"><img src="https://i.imgur.com/8ZYUZbG.png" alt="Card"></li>
<li class="item"><img src="https://i.imgur.com/8ZYUZbG.png" alt="Card"></li>
</ul>
<ul class="row">
<li class="item"><img src="https://i.imgur.com/8ZYUZbG.png" alt="Card"></li>
<li class="item"><img src="https://i.imgur.com/8ZYUZbG.png" alt="Card"></li>
<li class="item"><img src="https://i.imgur.com/8ZYUZbG.png" alt="Card"></li>
<li class="item"><img src="https://i.imgur.com/8ZYUZbG.png" alt="Card"></li>
<li class="item"><img src="https://i.imgur.com/8ZYUZbG.png" alt="Card"></li>
</ul>
<ul class="row">
<li class="item"><img src="https://i.imgur.com/8ZYUZbG.png" alt="Card"></li>
<li class="item"><img src="https://i.imgur.com/8ZYUZbG.png" alt="Card"></li>
<li class="item"><img src="https://i.imgur.com/8ZYUZbG.png" alt="Card"></li>
<li class="item"><img src="https://i.imgur.com/8ZYUZbG.png" alt="Card"></li>
<li class="item"><img src="https://i.imgur.com/8ZYUZbG.png" alt="Card"></li>
<li class="item"><img src="https://i.imgur.com/8ZYUZbG.png" alt="Card"></li>
</ul>
<ul class="row">
<li class="item"><img src="https://i.imgur.com/8ZYUZbG.png" alt="Card"></li>
<li class="item"><img src="https://i.imgur.com/8ZYUZbG.png" alt="Card"></li>
<li class="item"><img src="https://i.imgur.com/8ZYUZbG.png" alt="Card"></li>
<li class="item"><img src="https://i.imgur.com/8ZYUZbG.png" alt="Card"></li>
<li class="item"><img src="https://i.imgur.com/8ZYUZbG.png" alt="Card"></li>
<li class="item"><img src="https://i.imgur.com/8ZYUZbG.png" alt="Card"></li>
<li class="item"><img src="https://i.imgur.com/8ZYUZbG.png" alt="Card"></li>
</ul>
</div>
我有一个包含在 Flexbox 中的金字塔形状的图像。只要图像的宽度固定,它就会按预期工作。如果我调整屏幕大小(或将其更改为更小的分辨率),因为它是 Flexbox,基本项目(下行)将减少 space 并且会缩小。
理想情况下,我希望基本项目有一个动态的基本尺寸(屏幕越小,项目越小),但是上面几行的项目尺寸应该在下面的行中索引并且有大小一样。
这是我想要实现的示例:https://codepen.io/Mantequilla_/pen/WNrWBWW 调整浏览器大小(或分辨率太低)后,金字塔就会变形(例如,项目越靠上,它就会越大,这是不需要的)。
不确定,我想实现的目标仅在 CSS 中可行,但我愿意接受任何建议。
示例代码供参考:
.row {
margin: 0 auto;
display: flex;
flex-wrap: nowrap;
justify-content: center;
}
.item {
display: inline-block;
}
img {
width: 50%;
}
<ul class="row">
<li class="item"><img class="Pyramide-img-128" src="https://i.imgur.com/8ZYUZbG.png" alt="Card"></li>
</ul>
<ul class="row">
<li class="item"><img class="Pyramide-img-128" src="https://i.imgur.com/8ZYUZbG.png" alt="Card"></li>
<li class="item"><img class="Pyramide-img-128" src="https://i.imgur.com/8ZYUZbG.png" alt="Card"></li>
</ul>
<ul class="row">
<li class="item"><img class="Pyramide-img-128" src="https://i.imgur.com/8ZYUZbG.png" alt="Card"></li>
<li class="item"><img class="Pyramide-img-128" src="https://i.imgur.com/8ZYUZbG.png" alt="Card"></li>
<li class="item"><img class="Pyramide-img-128" src="https://i.imgur.com/8ZYUZbG.png" alt="Card"></li>
</ul>
<ul class="row">
<li class="item"><img class="Pyramide-img-128" src="https://i.imgur.com/8ZYUZbG.png" alt="Card"></li>
<li class="item"><img class="Pyramide-img-128" src="https://i.imgur.com/8ZYUZbG.png" alt="Card"></li>
<li class="item"><img class="Pyramide-img-128" src="https://i.imgur.com/8ZYUZbG.png" alt="Card"></li>
<li class="item"><img class="Pyramide-img-128" src="https://i.imgur.com/8ZYUZbG.png" alt="Card"></li>
</ul>
您可以尝试使用视图宽度。
<style>
.row {
margin: 0 auto;
display: flex;
flex-wrap: nowrap;
justify-content: center;
}
.item {
display: inline-block;
}
img {
width: 5vw;
margin-left: 2.5vw;
margin-right: 2.5vw;
}
</style>
如果行数已知或者您有最大值,您可以像下面这样尝试:
:root {
--r:5; /* number of row */
}
body {
margin:0;
text-align:center;
}
.container {
display:inline-flex;
flex-direction:column;
}
.row {
padding:0;
margin:0 auto;
display: flex;
list-style:none;
}
img {
width: 50%;
}
.row:not(:last-child) {
width:0;
}
/* you can easily generate the below using SASS/LESS*/
.row:nth-last-child(2) {min-width:calc(100% * (var(--r) - 1)/var(--r));}
.row:nth-last-child(3) {min-width:calc(100% * (var(--r) - 2)/var(--r));}
.row:nth-last-child(4) {min-width:calc(100% * (var(--r) - 3)/var(--r));}
.row:nth-last-child(5) {min-width:calc(100% * (var(--r) - 4)/var(--r));}
.row:nth-last-child(6) {min-width:calc(100% * (var(--r) - 5)/var(--r));}
.row:nth-last-child(7) {min-width:calc(100% * (var(--r) - 6)/var(--r));}
.row:nth-last-child(8) {min-width:calc(100% * (var(--r) - 7)/var(--r));}
.row:nth-last-child(9) {min-width:calc(100% * (var(--r) - 8)/var(--r));}
/*.row:nth-last-child(N) {min-width:calc(100% * (var(--r) - (N-1))/var(--r));}*/
<div class="container">
<ul class="row">
<li class="item"><img src="https://i.imgur.com/8ZYUZbG.png" alt="Card"></li>
</ul>
<ul class="row">
<li class="item"><img src="https://i.imgur.com/8ZYUZbG.png" alt="Card"></li>
<li class="item"><img src="https://i.imgur.com/8ZYUZbG.png" alt="Card"></li>
</ul>
<ul class="row">
<li class="item"><img src="https://i.imgur.com/8ZYUZbG.png" alt="Card"></li>
<li class="item"><img src="https://i.imgur.com/8ZYUZbG.png" alt="Card"></li>
<li class="item"><img src="https://i.imgur.com/8ZYUZbG.png" alt="Card"></li>
</ul>
<ul class="row">
<li class="item"><img src="https://i.imgur.com/8ZYUZbG.png" alt="Card"></li>
<li class="item"><img src="https://i.imgur.com/8ZYUZbG.png" alt="Card"></li>
<li class="item"><img src="https://i.imgur.com/8ZYUZbG.png" alt="Card"></li>
<li class="item"><img src="https://i.imgur.com/8ZYUZbG.png" alt="Card"></li>
</ul>
<ul class="row">
<li class="item"><img src="https://i.imgur.com/8ZYUZbG.png" alt="Card"></li>
<li class="item"><img src="https://i.imgur.com/8ZYUZbG.png" alt="Card"></li>
<li class="item"><img src="https://i.imgur.com/8ZYUZbG.png" alt="Card"></li>
<li class="item"><img src="https://i.imgur.com/8ZYUZbG.png" alt="Card"></li>
<li class="item"><img src="https://i.imgur.com/8ZYUZbG.png" alt="Card"></li>
</ul>
</div>
更多行:
:root {
--r:7; /* number of row */
}
body {
margin:0;
text-align:center;
}
.container {
display:inline-flex;
flex-direction:column;
}
.row {
padding:0;
margin:0 auto;
display: flex;
list-style:none;
}
img {
width: 50%;
}
.row:not(:last-child) {
width:0;
}
/* you can easily generate the below using SASS/LESS*/
.row:nth-last-child(2) {min-width:calc(100% * (var(--r) - 1)/var(--r));}
.row:nth-last-child(3) {min-width:calc(100% * (var(--r) - 2)/var(--r));}
.row:nth-last-child(4) {min-width:calc(100% * (var(--r) - 3)/var(--r));}
.row:nth-last-child(5) {min-width:calc(100% * (var(--r) - 4)/var(--r));}
.row:nth-last-child(6) {min-width:calc(100% * (var(--r) - 5)/var(--r));}
.row:nth-last-child(7) {min-width:calc(100% * (var(--r) - 6)/var(--r));}
.row:nth-last-child(8) {min-width:calc(100% * (var(--r) - 7)/var(--r));}
.row:nth-last-child(9) {min-width:calc(100% * (var(--r) - 8)/var(--r));}
/*.row:nth-last-child(N) {min-width:calc(100% * (var(--r) - (N-1))/var(--r));}*/
<div class="container">
<ul class="row">
<li class="item"><img src="https://i.imgur.com/8ZYUZbG.png" alt="Card"></li>
</ul>
<ul class="row">
<li class="item"><img src="https://i.imgur.com/8ZYUZbG.png" alt="Card"></li>
<li class="item"><img src="https://i.imgur.com/8ZYUZbG.png" alt="Card"></li>
</ul>
<ul class="row">
<li class="item"><img src="https://i.imgur.com/8ZYUZbG.png" alt="Card"></li>
<li class="item"><img src="https://i.imgur.com/8ZYUZbG.png" alt="Card"></li>
<li class="item"><img src="https://i.imgur.com/8ZYUZbG.png" alt="Card"></li>
</ul>
<ul class="row">
<li class="item"><img src="https://i.imgur.com/8ZYUZbG.png" alt="Card"></li>
<li class="item"><img src="https://i.imgur.com/8ZYUZbG.png" alt="Card"></li>
<li class="item"><img src="https://i.imgur.com/8ZYUZbG.png" alt="Card"></li>
<li class="item"><img src="https://i.imgur.com/8ZYUZbG.png" alt="Card"></li>
</ul>
<ul class="row">
<li class="item"><img src="https://i.imgur.com/8ZYUZbG.png" alt="Card"></li>
<li class="item"><img src="https://i.imgur.com/8ZYUZbG.png" alt="Card"></li>
<li class="item"><img src="https://i.imgur.com/8ZYUZbG.png" alt="Card"></li>
<li class="item"><img src="https://i.imgur.com/8ZYUZbG.png" alt="Card"></li>
<li class="item"><img src="https://i.imgur.com/8ZYUZbG.png" alt="Card"></li>
</ul>
<ul class="row">
<li class="item"><img src="https://i.imgur.com/8ZYUZbG.png" alt="Card"></li>
<li class="item"><img src="https://i.imgur.com/8ZYUZbG.png" alt="Card"></li>
<li class="item"><img src="https://i.imgur.com/8ZYUZbG.png" alt="Card"></li>
<li class="item"><img src="https://i.imgur.com/8ZYUZbG.png" alt="Card"></li>
<li class="item"><img src="https://i.imgur.com/8ZYUZbG.png" alt="Card"></li>
<li class="item"><img src="https://i.imgur.com/8ZYUZbG.png" alt="Card"></li>
</ul>
<ul class="row">
<li class="item"><img src="https://i.imgur.com/8ZYUZbG.png" alt="Card"></li>
<li class="item"><img src="https://i.imgur.com/8ZYUZbG.png" alt="Card"></li>
<li class="item"><img src="https://i.imgur.com/8ZYUZbG.png" alt="Card"></li>
<li class="item"><img src="https://i.imgur.com/8ZYUZbG.png" alt="Card"></li>
<li class="item"><img src="https://i.imgur.com/8ZYUZbG.png" alt="Card"></li>
<li class="item"><img src="https://i.imgur.com/8ZYUZbG.png" alt="Card"></li>
<li class="item"><img src="https://i.imgur.com/8ZYUZbG.png" alt="Card"></li>
</ul>
</div>