gpt4 book ai didi

javascript - 我可以根据 flex 容器中的元素数量更改 "justify-content"值吗?

转载 作者:太空狗 更新时间:2023-10-29 12:22:45 26 4
gpt4 key购买 nike

我正在旧站点上的图片库中工作。除了常规的旧 HTML/jQuery 或 JS/CSS,我不能使用任何其他东西。我知道使用 Bootstrap 或某些网格库会容易得多。

我正在用 flexbox 构建它。每行有四个图像,有多个行。当每一行都有四个图像时,它看起来很棒。当它有 2 或 3 时,因为我正在使用 justify-content: space-between,它看起来很奇怪,因为图像之间的差距很大。

我使用 space-between 的原因是我希望图像与父容器的左侧对齐,也与右侧对齐。

一些注意事项:

  • 每个 flex 元素的最大宽度为 150 像素
  • 我想要元素之间的边距,但我不关心这个边距是否随着视口(viewport)宽度的变化而变化
  • flex 容器的最大宽度只允许连续放置四个 150 像素宽的元素

我的问题:如果一行少于一组元素(在本例中为四个),我可以将 justify-content 更改为更合适的内容,例如 flex-开始?

理想情况下,我想在没有 JavaScript/jQuery 的情况下执行此操作,但如果那不可能,我也愿意接受这些解决方案。

此外,如果我想得太多甚至不需要使用 justify-content: space-between,请随时告诉我。这是一个工作示例:

/* outer container */
.flex-container {
padding: 24px 0;
background: white;
border: solid 1px rgba(0,0,0,.1);
max-width: 700px; /* or whatever */

/* flex props */
display: flex;
flex-wrap: wrap;
justify-content: space-between;
}

/* contains img block and title */
.thumb-grid {
border: solid 1px rgba(0,0,0,.1);
width: 150px;
margin-bottom: 36px;
}

.thumb-grid:first-of-type { margin-left: 0; }
.thumb-grid:nth-of-type(4) { margin-right: 0; }

.thumb-grid p {
text-align: center;
}

.img-block {
background: black;
height: 150px;
}

.img-block img {
height: 150px;
opacity: 1;
transition: opacity 150ms;
}

.img-block:hover img {
opacity: .9;
}
<div class="flex-container">

<div class="thumb-grid">
<div class="img-block">
<a href=""><img src="https://www.expedient.com/wp-content/uploads/2017/06/exp-mq-resouce-thumbnail-1-150x150.jpg" alt="example image"></a>
</div>
<p>Image 1</p>
</div>

<div class="thumb-grid">
<div class="img-block">
<a href=""><img src="https://www.expedient.com/wp-content/uploads/2017/06/exp-mq-resouce-thumbnail-1-150x150.jpg" alt="example image"></a>
</div>
<p>Image 2</p>
</div>

<div class="thumb-grid">
<div class="img-block">
<a href=""><img src="https://www.expedient.com/wp-content/uploads/2017/06/exp-mq-resouce-thumbnail-1-150x150.jpg" alt="example image"></a>
</div>
<p>Image 3</p>
</div>

<div class="thumb-grid">
<div class="img-block">
<a href=""><img src="https://www.expedient.com/wp-content/uploads/2017/06/exp-mq-resouce-thumbnail-1-150x150.jpg" alt="example image"></a>
</div>
<p>Image 4</p>
</div>

<div class="thumb-grid">
<div class="img-block">
<a href=""><img src="https://www.expedient.com/wp-content/uploads/2017/06/exp-mq-resouce-thumbnail-1-150x150.jpg" alt="example image"></a>
</div>
<p>Image 5</p>
</div>

<div class="thumb-grid">
<div class="img-block">
<a href=""><img src="https://www.expedient.com/wp-content/uploads/2017/06/exp-mq-resouce-thumbnail-1-150x150.jpg" alt="example image"></a>
</div>
<p>Image 6</p>
</div>

<div class="thumb-grid">
<div class="img-block">
<a href=""><img src="https://www.expedient.com/wp-content/uploads/2017/06/exp-mq-resouce-thumbnail-1-150x150.jpg" alt="example image"></a>
</div>
<p>Image 7</p>
</div>

</div>

最佳答案

根据您需要支持的内容,使用 CSS 网格布局可能更有意义(正如 TylerH 指出的那样,CSS 网格没有通用的浏览器支持)。查看文档以获取更多信息:https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Grid_Layout

.flex-container {
display: grid;
grid-template-columns: repeat(4, 1fr);
grid-gap: 10px;
grid-auto-rows: minmax(100px, auto);
}
<div class="flex-container">

<div class="thumb-grid">
<div class="img-block">
<a href=""><img src="https://www.expedient.com/wp-content/uploads/2017/06/exp-mq-resouce-thumbnail-1-150x150.jpg" alt="example image"></a>
</div>
<p>Image 1</p>
</div>

<div class="thumb-grid">
<div class="img-block">
<a href=""><img src="https://www.expedient.com/wp-content/uploads/2017/06/exp-mq-resouce-thumbnail-1-150x150.jpg" alt="example image"></a>
</div>
<p>Image 2</p>
</div>

<div class="thumb-grid">
<div class="img-block">
<a href=""><img src="https://www.expedient.com/wp-content/uploads/2017/06/exp-mq-resouce-thumbnail-1-150x150.jpg" alt="example image"></a>
</div>
<p>Image 3</p>
</div>

<div class="thumb-grid">
<div class="img-block">
<a href=""><img src="https://www.expedient.com/wp-content/uploads/2017/06/exp-mq-resouce-thumbnail-1-150x150.jpg" alt="example image"></a>
</div>
<p>Image 4</p>
</div>

<div class="thumb-grid">
<div class="img-block">
<a href=""><img src="https://www.expedient.com/wp-content/uploads/2017/06/exp-mq-resouce-thumbnail-1-150x150.jpg" alt="example image"></a>
</div>
<p>Image 5</p>
</div>

<div class="thumb-grid">
<div class="img-block">
<a href=""><img src="https://www.expedient.com/wp-content/uploads/2017/06/exp-mq-resouce-thumbnail-1-150x150.jpg" alt="example image"></a>
</div>
<p>Image 6</p>
</div>

<div class="thumb-grid">
<div class="img-block">
<a href=""><img src="https://www.expedient.com/wp-content/uploads/2017/06/exp-mq-resouce-thumbnail-1-150x150.jpg" alt="example image"></a>
</div>
<p>Image 7</p>
</div>

</div>

关于javascript - 我可以根据 flex 容器中的元素数量更改 "justify-content"值吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46084356/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com