Overlapping/overlaying multiple inline images

后端 未结 2 2001
灰色年华
灰色年华 2020-12-06 06:09

I have a list of images I\'m trying to overlap so that they look similar to this:

My code:

相关标签:
2条回答
  • 2020-12-06 06:59

    You can use flex and reverse order then no need 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>

    Here is another idea with scale:

    .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>

    Another idea using mask in case you want to keep the order of your images. This will also give you transparency between the images:

    .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>

    0 讨论(0)
  • 2020-12-06 07:07

    I like Temani's better, but if you can't use flex because you have to support IE 9 or earlier, I'll leave this here.

    Note that the text direction is now right to left, so you'll need to reverse the order of your avatars.

    .avatar img {
      border-radius: 50%;
      position: relative;
      left: -5px;
      margin-left: -25px;
      z-index: 1;
    }
    
    .avatars {
      direction: rtl;  /* This is to get the stack with left on top */
      text-align: left;  /* Now need to explitly align left */
      padding-left: 25px;  /* Same value as the negative margin */
    }
    <div class="avatars">
      <span class="avatar">
            <img src="https://www.fillmurray.com/50/50" width="50" height="50"/>
        </span>
      <span class="avatar">
            <img src="https://www.fillmurray.com/100/100" width="50" height="50"/>
        </span>
      <span class="avatar">
            <img src="https://www.fillmurray.com/200/200" width="50" height="50"/>
        </span>
      <span class="avatar">
            <img src="https://www.fillmurray.com/150/150" width="50" height="50"/>
        </span>
      <span class="avatar">
            <img src="https://www.fillmurray.com/50/50" width="50" height="50"/>
        </span>
      <!-- Variable amount more avatars -->
    </div>

    0 讨论(0)
提交回复
热议问题