gsap实现手风琴式图文幻灯片代码

代码语言:html

所属分类:幻灯片

代码描述:gsap实现手风琴式图文幻灯片代码

代码标签: gsap 手风琴 图文 幻灯片 代码

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

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

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

  <link rel="preconnect" href="https://fonts.googleapis.com">
    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
    <link href="https://fonts.googleapis.com/css2?family=Gloria+Hallelujah&display=swap" rel="stylesheet">
  
  
  
<style>

@layer normalize, base, prototype, responsive, instruction;

@layer instruction {
  .arrow {
    display: inline-block;
    position: absolute;
    left: 55%;
    font-size: 0.875rem;
    opacity: 0.7;
    font-family: 'Gloria Hallelujah', cursive;
    transition: opacity 0.26s ease-out;
    top: 30%;
    rotate: -10deg;
    translate: 20% -140%;
    width: 60px;
    z-index: 99999;

    @media(max-width: 500px) {
      top: 95%;
      rotate: 30deg;
    }


    span {
      display: inline-block;
      rotate: -24deg;
      width: 160%;
      translate: -20% 110%;
    }
    svg {
      scale: 1 -1;
      translate: 120% 30%;
      rotate: -10deg;
      left: 0%;
      width: 80%;
    }
  }
}

@layer responsive {
  @container (max-width: 500px) {
    .slideshow-stack__tablist {
      grid-template-columns: unset;
      grid-template-rows: var(--active-tab);
      button {
        width: 100%;
        height: var(--button-width);
      }
    }
    .slideshow-stack__panels {
      grid-template-columns: unset;
      grid-template-rows: var(--active-tab);
      container-type: size;
    }

    

    [role="tabpanel"] {
      width: 100%;
      min-height: var(--button-width);
    
      &:nth-of-type(1) {
        /* z-index: 3; */
        .slideshow-stack__panel-content {
          height: calc(var(--active-panel-height) + (var(--radius) * 0));
        }
      }
      
      .slideshow-stack__panel-content {
        width: 100%;
        top: unset;
        right: 0;
        padding-bottom: var(--panel-padding);
        height: calc(var(--active-panel-height) + (var(--radius) * 2));
      }

      &:not(:nth-of-type(1)) .slideshow-stack__panel-content {
        border-top: 0;
      }
      &:not(:nth-of-type(1)) .slide__content {
        /* padding-bottom: calc(var(--button-width) + var(--panel-padding)); */
        padding-left: var(--panel-padding);

      }
    }
  }
}
@layer motion {
  @media (prefers-reduced-motion: no-preference) {
    :root:has([data-dragging]) * {
      cursor: -webkit-grabbing !important;
      cursor: grabbing !important;
    }
    [data-dragging] :is(.slideshow-stack__tablist, .slideshow-stack__panels) {
      transition: none !important;
    }
    .slideshow-stack__panels, .slideshow-stack__tablist {
      --ease: linear(
        0 0%, 0.0036 9.62%, 0.0185 16.66%,
        0.0489 23.03%, 0.0962 28.86%,
        0.1705 34.93%, 0.269 40.66%,
        0.3867 45.89%, 0.5833 52.95%,
        0.683 57.05%, 0.7829 62.14%,
        0.8621 67.46%, 0.8991 70.68%,
        0.9299 74.03%, 0.9545 77.52%,
        0.9735 81.21%, 0.9865 85%,
        0.9949 89.15%, 1 100%
      );
      transition-property: grid-template-columns, grid-template-rows;
      transition-property: grid-template-columns, grid-template-rows, -ms-grid-columns, -ms-grid-rows;
      transition-duration: calc(var(--transition, 0.6) * 1s);
      transition-timing-function: var(--ease);
    }
    .slide-text {
      opacity: 0;
      translate: 0 0.5lh;
      transition-property: opacity, translate, scale;
      transition-duration: calc(var(--transition, 0.6) * 0.8s);
      transition-timing-function: var(--ease);
    }
    [role="tabpanel"]:not([inert]) .slide-text {
      opacity: 1;
      transition-delay: calc(var(--transition, 0.6) * 0.4s);
      translate: 0 0;
    }


  }
}

@layer prototype {
  .resizable {
    padding: 2rem;
    resize: both;
    overflow: hidden;
    width: 75vw;
    aspect-ratio: 16/9;
    min-width: 360px;
    max-width: 100vw;

    @media (max-width: 500px) {
      aspect-ratio: 9 / 16;
      padding: 1rem;
    }
  }

  slideshow-stack {
    position: relative;
    display: inline-block;
    width: 100%;
    height: 100%;
  }
  
  .slideshow-stack__container {
    --radius: calc(var(--rad) * 1rem);
    --button-width: calc(var(--size, 4) * 1rem);
    --panel-padding: 2rem;
    --border-width: 2px;
    --border-color: light-dark(color-mix(in hsl, canvasText, canvas 50%), color-mix(in hsl, canvasText, canvas 75%));
    
    /* Calculated values for panel sizing */
    --inactive-tabs-width: calc((var(--total-tabs) - 1) * var(--button-width));
    --active-panel-width: calc(100cqi - var(--inactive-tabs-width));
    --active-panel-height: calc(100cqh - var(--inactive-tabs-width));
    
    width: 100%;
    height: 100%;
    position: relative;
    container-type: inline-size;
    border-radius: var(--radius);
    overflow: hidden;
    touch-action: none;
  }

  .slideshow-stack__tablist {
    display: grid;
    grid-template-columns: var(--active-tab);
    list-style: none;
    padding: 0;
    position: absolute;
    inset: 0;
    height: 100%;
    pointer-events: none;
    z-index: 10;

    button {
      width: var(--button-width);
      height: 100%;
      pointer-events: all;
      opacity: 0;
      cursor: -webkit-grab;
      cursor: grab;
      
      &[aria-selected="true"] {
        cursor: default;
      }
    }
  }

  .slideshow-stack__panels {
    display: grid;
    grid-template-columns: var(--active-tab);
    height: 100%;
    overflow: hidden;
  }

  .slide__content {
    position: absolute;
    inset: 0;
    padding: var(--panel-padding);
    display: flex;
    align-items.........完整代码请登录后点击上方下载按钮下载查看

网友评论0