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

标签 html css sass z-index overlap

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

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/

相关文章:

html - Github 页面问题 -(错误 404 或什么都没有显示)

html - CSS格式轮播问题

javascript - 溢出隐藏元素的scrollTop、scrollLeft靠谱吗?

javascript - 导航列表菜单在 IE8 中不起作用

twitter-bootstrap - Angular 2 : How to use bootstrap-sass with @extend and mixins in Angular-CLI?

sass - 在 Gulp 或 Grunt 上运行 Dart Sass

html - 文本html中的额外间距

css - 我如何在 bootstrap 4 中为响应式切换菜单设置自定义断点

javascript - 需要像谷歌文档这样的下拉菜单栏的应用程序

css - .css 未加载,因为其 MIME 类型 “text/html” 不是 “text/css” 。和 SyntaxError : expected expression, 得到 '<'