gpt4 book ai didi

html - 重叠/覆盖多个内联图像

转载 作者:搜寻专家 更新时间:2023-10-31 22:10:33 24 4
gpt4 key购买 nike

我有一个图像列表,我试图重叠这些图像,使它们看起来类似于:

overlapped people

我的代码:

.avatar img {
border-radius: 50%;
position: relative;
left: -5px;
z-index: 1;
}
<div class="avatars">
<span class="avatar">
<img src="https://picsum.photos/70" width="25" height="25"/>
</span>
<span class="avatar">
<img src="https://picsum.photos/50" width="25" height="25"/>
</span>
<span class="avatar">
<img src="https://picsum.photos/20" width="25" height="25"/>
</span>
<span class="avatar">
<img src="https://picsum.photos/100" width="25" height="25"/>
</span>
<!-- Variable amount more avatars -->
</div>
<p>4 People</p>

但显然,我需要一个递增的 left 值和一个递减的 z-index 来表示头像 img 的数量。当然,我可以使用 @for 指令来做到这一点,但问题是,头像 imgs 的数量是可变的。我正在查看 length() 函数,但它并没有按照我打算使用的方式工作。

另一个想法是设置一个宽度 div,并将图像放入其中,但这有其自身的问题(如果有 5 张图像或 20 张图像,如何控制宽度)。我还可以在其他地方按照我想要的方式组合图像,而不使用任何 CSS。

最佳答案

你可以使用 flex 和 reverse order 然后不需要 z-index:

.avatars {
display: inline-flex;
flex-direction: row-reverse;
}

.avatar {
position: relative;
border: 4px solid #fff;
border-radius: 50%;
overflow: hidden;
width: 100px;
}

.avatar:not(:last-child) {
margin-left: -60px;
}

.avatar img {
width: 100%;
display: block;
}
<div class="avatars">
<span class="avatar">
<img src="https://picsum.photos/70">
</span>
<span class="avatar">
<img src="https://picsum.photos/80">
</span>
<span class="avatar">
<img src="https://picsum.photos/90">
</span>
<span class="avatar">
<img src="https://picsum.photos/100">
</span>
</div>

这是另一个有规模的想法:

.avatars {
display: inline-block;
transform: scale(-1, 1);
}

.avatar {
position: relative;
display: inline-block;
border: 4px solid #fff;
border-radius: 50%;
overflow: hidden;
width: 100px;
}

.avatar:not(:first-child) {
margin-left: -60px;
}

.avatar img {
width: 100%;
display: block;
transform: scale(-1, 1);
}
<div class="avatars">
<span class="avatar">
<img src="https://picsum.photos/70">
</span>
<span class="avatar">
<img src="https://picsum.photos/80">
</span>
<span class="avatar">
<img src="https://picsum.photos/90">
</span>
<span class="avatar">
<img src="https://picsum.photos/100">
</span>
</div>

如果您想保持图像的顺序,使用蒙版的另一个想法。这也将为您提供图像之间的透明度:

.avatar {
display: inline-block;
border-radius: 50%;
overflow: hidden;
width: 100px;
}

.avatar:not(:first-child) {
margin-left: -60px;
-webkit-mask:radial-gradient(circle 55px at 5px 50%,transparent 99%,#fff 100%);
mask:radial-gradient(circle 55px at 5px 50%,transparent 99%,#fff 100%);
}

.avatar img {
width: 100%;
display: block;
}

body {
background:pink
}
<div class="avatars">
<span class="avatar">
<img src="https://picsum.photos/70">
</span>
<span class="avatar">
<img src="https://picsum.photos/80">
</span>
<span class="avatar">
<img src="https://picsum.photos/90">
</span>
<span class="avatar">
<img src="https://picsum.photos/100">
</span>
</div>

另一个使用 3D 转换技巧的想法(没有透明度)

.avatars {
transform-style:preserve-3d; /* here */
}

.avatar {
display: inline-block;
border-radius: 50%;
overflow: hidden;
width: 100px;
}

.avatar:not(:first-child) {
margin-left: -60px;
transform:rotateY(-1deg); /* and here */
}

.avatar img {
width: 100%;
display: block;
}
<div class="avatars">
<span class="avatar">
<img src="https://picsum.photos/70">
</span>
<span class="avatar">
<img src="https://picsum.photos/80">
</span>
<span class="avatar">
<img src="https://picsum.photos/90">
</span>
<span class="avatar">
<img src="https://picsum.photos/100">
</span>
</div>

关于html - 重叠/覆盖多个内联图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48916431/

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