css实现横竖切换的logo照片墙无限无缝滚动效果代码

代码语言:html

所属分类:动画

代码描述:css实现横竖切换的logo照片墙无限无缝滚动效果代码,两边带有渐变效果,logo可上下左右无缝滚动。

代码标签: css 横竖 切换 logo 照片墙 无限 无缝 滚动

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

<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">


    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/meyer-reset/2.0/reset.min.css">



    <style>
        :root {
          --color-text: navy;
          --color-bg: papayawhip;
          --color-bg-accent: #ecdcc0;
          --size: clamp(10rem, 40vmin, 30rem);
          --gap: calc(var(--size) / 14);
          --duration: 60s;
          --scroll-start: calc(var(--gap) * -1);
          --scroll-end: calc(-100% - var(--gap) * 2);
        }
        
        @media (prefers-color-scheme: dark) {
          :root {
            --color-text: papayawhip;
            --color-bg: navy;
            --color-bg-accent: #2626a0;
          }
        }
        
        * {
          box-sizing: border-box;
        }
        
        body {
          display: grid;
          align-content: center;
          overflow: hidden;
          gap: var(--gap);
          width: 100%;
          min-height: 100vh;
          font-family: system-ui, sans-serif;
          font-size: 1rem;
          line-height: 1.5;
          color: var(--color-text);
          background-color: var(--color-bg);
        }
        
        .marquee {
          display: flex;
          flex-wrap: nowrap;
          overflow: hidden;
          gap: var(--gap);
          -webkit-mask-image: linear-gradient(
            var(--mask-direction, to right),
            hsl(0 0% 0% / 0),
            hsl(0 0% 0% / 1) 20%,
            hsl(0 0% 0% / 1) 80%,
            hsl(0 0% 0% / 0)
          );
                  mask-image: linear-gradient(
            var(--mask-direction, to right),
            hsl(0 0% 0% / 0),
            hsl(0 0% 0% / 1) 20%,
            hsl(0 0% 0% / 1) 80%,
            hsl(0 0% 0% / 0)
          );
        }
        
        .marquee__group {
          flex-shrink: 0;
          display: flex;
          flex-wrap: nowrap;
          align-items: center;
          justify-content: space-around;
          gap: var(--gap);
          min-width: 100%;
          -webkit-animation: scroll-x var(--duration) linear infinite;
                  animation: scroll-x var(--duration) linear infinite;
        }
        
        @media (prefers-reduced-motion: reduce) {
          .marquee__group {
            -webkit-animation-play-state: paused;
                    animation-play-state: paused;
          }
        }
        
        .marquee--vertical {
          --mask-direction: to bottom;
        }
        
        .marquee--vertical,
        .marquee--vertical .marquee__group {
          flex-direction: column;
        }
        
        .marquee--vertical .marquee__group {
          -webkit-animation-name: scroll-y;
                  animation-name: scroll-y;
        }
        
        .marquee--reverse .marquee__group {
          animation-direction: reverse;
          -webkit-animation-delay: -3s;
                  animation-delay: -3s;
        }
        
        @-webkit-keyframes scroll-x {
          from {
            transform: translateX(var(--scroll-start));
          }
          to {
            transform: translateX(var(--scroll-end));
          }
        }
        
        @keyframes scroll-x {
          from {
            transform: translateX(var(--scroll-start));
          }
          to {
            transform: translateX(var(--scroll-end));
          }
        }
        
        @-webkit-keyframes scroll-y {
          from {
            transform: translateY(var(--scroll-start));
          }
          to {
            transform: translateY(var(--scroll-end));
          }
        }
        
        @keyframes scroll-y {
          from {
            transform: translateY(var(--scroll-start));
          }
          to {
            transform: translateY(var(--scroll-end));
          }
        }
        
        /* Element styles */
        .marquee svg {
          display: grid;
          place-items: center;
          width: var(--size);
          fill: var(--color-text);
          background: var(--color-bg-accent);
          aspect-ratio: 16/9;
          padding: calc(var(--size) / 10);
          border-radius: 0.5rem;
        }
        
        .marquee--vertical svg {
          aspect-ratio: 1;
          width: calc(var(--size) / 1.5);
      .........完整代码请登录后点击上方下载按钮下载查看

网友评论0