css实现响应式图片横向堆叠丝滑滚动切换效果代码

代码语言:html

所属分类:响应式

代码描述:css实现响应式图片横向堆叠丝滑滚动切换效果代码

代码标签: css 响应式 图片 横向 堆叠 丝滑 滚动 切换

下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开

<!DOCTYPE html>
<html lang="en" >

<head>
  <meta charset="UTF-8">
  

  <meta name="viewport" content="width=device-width, initial-scale=1">
  
  
  
<style>

@keyframes slide-in {
  from {
    transform: translateX(-100cqi) scale(.75);
  }
}

.scroll-stack {
  container-type: inline-size;
  inline-size: 100cqi;

  display: grid;
  grid-auto-flow: column;

  overflow-x: auto;
  scroll-snap-type: x mandatory;
  overscroll-behavior: contain;

  gap: 1rem;
  padding-inline: 1rem;
  scroll-padding-inline: 1rem;
  padding-block: 30px 60px;

  /* the before and afters have unsnappable elements that create bouncy edges to the scroll */
  &::before,
  &::after {
    content: '';
    display: block;
  }

  &::before {
    order: 0;
    inline-size: 25cqi;
  }

  &::after {
    order: 11;
    inline-size: 80cqi;
  }

  /* 
    snap on the item, which is untransformed
    also order is changed to last item is on top
  */
  .item {
    scroll-snap-align: start;

    &:nth-child(1) { order: 10; z-index: 1; }
    &:nth-child(2) { order: 9; z-index: 2; }
    &:nth-child(3) { order: 8; z-index: 3; }
    &:nth-child(4) { order: 7; z-index: 4; }
    &:nth-child(5) { order: 6; z-index: 5; }
    &:nth-child(6) { order: 5; z-index: 6; }
    &:nth-child(7) { order: 4; z-index: 7; }
    &:nth-child(8) { order: 3; z-index: 8; }
    &:nth-child(9) { order: 2; z-index: 9; }
  }

  /* 
    magic is here, a child of the snapped item 
    animates items as they cross the viewport view()
    range is set to create the effect
  */
  figure {
    @supports (animation-timeline: view()) {
      @media (prefers-reduced-motion: no-preference) {
        animation: slide-in linear both;
        animation-timeline: view(inline);
        animation-range: cover -75cqi contain 20cqi;
      }
    }

    flex-shrink: 0;
    block-size: 80cqb;
    aspect-ratio: 9/16;
    background: light-dark(#ccc, #444);
    box-shadow: var(--shadow-5);
    border-radius: 20px;
    overflow: clip;

    display: flex;

    @container (width < 480px) {
      block-size: 50cqb;
    }

    > img {
.........完整代码请登录后点击上方下载按钮下载查看

网友评论0