前端原生 CSS 跑马灯效果,无限轮播(横竖版本,带渐变遮罩,简单实用)

简介: 前端原生 CSS 跑马灯效果,无限轮播(横竖版本,带渐变遮罩,简单实用)

一、横版跑马灯

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    .box {
      /* 重点:盒子宽度 600 */
      width: 600px;
      height: 150px;
      border: 3px solid black;
      overflow: hidden;
    }
    .box ul {
      margin: 0;
      padding: 0;
      list-style: none;
      display: flex;
      height: 100%;
      animation: move 5s linear infinite;
    }
    /* hover 暂停,不用可去掉 */
    .box ul:hover {
      animation-play-state: paused;
    }
    .box ul li {
      height: 100%;
      /* 重点:单个图片宽度 200,相当于默认不动可见 3 个 */
      width: 200px;
      flex-shrink: 0;
    }
    .box ul li img {
      height: 100%;
      width: 100%;
    }
    @keyframes move {
      /* 为什么设置 -800px ?公式:主图张数 * 单个图片宽度(每轮主图只有 4 张,4 张照片为一个周期,如果需要轮播的主图为 7、8、9...张,都一样) */
      100% {
        transform: translateX(-800px);
      }
    }
  </style>
</head>
<body>
  <!-- 窗口 -->
  <div class="box">
    <!-- 轮播列表 -->
    <ul>
      <!-- 轮播主图 -->
      <li><a href="#"><img src="./1.jpg" alt=""></a></li>
      <li><a href="#"><img src="./2.jpg" alt=""></a></li>
      <li><a href="#"><img src="./3.jpg" alt=""></a></li>
      <li><a href="#"><img src="./4.jpg" alt=""></a></li>
      <!-- 轮播完成防止留白 -->
      <!-- 怎么确定尾部需要几张防止留白,3 张是怎么得出的?其实就是上面: 盒子宽度 / 单个图片宽度 = 一屏几张留白图 -->
      <li><a href="#"><img src="./1.jpg" alt=""></a></li>
      <li><a href="#"><img src="./2.jpg" alt=""></a></li>
      <li><a href="#"><img src="./3.jpg" alt=""></a></li>
    </ul>
</div>
</body>
</html>

二、竖版跑马灯

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    .box {
      width: 600px;
      /* 重点:盒子宽度 150 */
      height: 150px;
      border: 3px solid black;
      overflow: hidden;
    }
    .box ul {
      margin: 0;
      padding: 0;
      list-style: none;
      display: flex;
      flex-direction: column;
      height: 100%;
      animation: move 5s linear infinite;
    }
    /* hover 暂停,不用可去掉 */
    .box ul:hover {
      animation-play-state: paused;
    }
    .box ul li {
      /* 重点:单个图片高度 150,相当于默认不动可见 1 个 */
      height: 150px;
      width: 100%;
      flex-shrink: 0;
    }
    .box ul li img {
      height: 100%;
      width: 100%;
    }
    @keyframes move {
      /* 为什么设置 -600px ?公式:主图张数 * 单个图片高度(每轮主图只有 4 张,4 张照片为一个周期,如果需要轮播的主图为 7、8、9...张,都一样) */
      100% {
        transform: translateY(-600px);
      }
    }
  </style>
</head>
<body>
  <!-- 窗口 -->
  <div class="box">
    <!-- 轮播列表 -->
    <ul>
      <!-- 轮播主图 -->
      <li><a href="#"><img src="./1.jpg" alt=""></a></li>
      <li><a href="#"><img src="./2.jpg" alt=""></a></li>
      <li><a href="#"><img src="./3.jpg" alt=""></a></li>
      <li><a href="#"><img src="./4.jpg" alt=""></a></li>
      <!-- 轮播完成防止留白 -->
      <!-- 怎么确定尾部需要几张防止留白,1 张是怎么得出的?其实就是上面: 盒子高度 / 单个图片高度 = 一屏几张留白图 -->
      <li><a href="#"><img src="./1.jpg" alt=""></a></li>
    </ul>
</div>
</body>
</html>

三、竖版跑马灯(带渐变遮罩,可以改成横向的)

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    .box {
      position: relative;
      width: 600px;
      /* 重点:盒子宽度 150 */
      height: 150px;
      overflow: hidden;
    }
    .box ul {
      margin: 0;
      padding: 0;
      list-style: none;
      display: flex;
      flex-direction: column;
      height: 100%;
      animation: move 5s linear infinite;
    }
    /* hover 暂停,不用可去掉 */
    .box ul:hover {
      animation-play-state: paused;
    }
    .box ul li {
      /* 重点:单个图片高度 150,相当于默认不动可见 1 个 */
      height: 150px;
      width: 100%;
      flex-shrink: 0;
    }
    .box ul li img {
      height: 100%;
      width: 100%;
    }
    @keyframes move {
      /* 为什么设置 -600px ?公式:主图张数 * 单个图片高度(每轮主图只有 4 张,4 张照片为一个周期,如果需要轮播的主图为 7、8、9...张,都一样) */
      100% {
        transform: translateY(-600px);
      }
    }
    /* 顶部、底部白色渐变 */
    .header-blur {
      position: absolute;
      left: 0;
      top: 0;
      right: 0;
      height: 10px;
      /* background-image: linear-gradient(red, green 50%); */
      background-image: linear-gradient(#fff, rgba(0, 0, 0, 0) 50%);
      z-index: 1;
    }
    .footer-blur {
      position: absolute;
      left: 0;
      bottom: 0;
      right: 0;
      height: 10px;
      /* background-image: linear-gradient(red 40%, green); */
      background-image: linear-gradient(rgba(0, 0, 0, 0) 40%, #fff);
      z-index: 1;
    }
  </style>
</head>
<body>
  <!-- 窗口 -->
  <div class="box">
    <!-- 顶部、底部白色渐变 -->
    <div class="header-blur"></div>
    <div class="footer-blur"></div>
    <!-- 轮播列表 -->
    <ul>
      <!-- 轮播主图 -->
      <li><a href="#"><img src="./1.jpg" alt=""></a></li>
      <li><a href="#"><img src="./2.jpg" alt=""></a></li>
      <li><a href="#"><img src="./3.jpg" alt=""></a></li>
      <li><a href="#"><img src="./4.jpg" alt=""></a></li>
      <!-- 轮播完成防止留白 -->
      <!-- 怎么确定尾部需要几张防止留白,1 张是怎么得出的?其实就是上面: 盒子高度 / 单个图片高度 = 一屏几张留白图 -->
      <li><a href="#"><img src="./1.jpg" alt=""></a></li>
    </ul>
</div>
</body>
</html>
相关文章
|
1月前
|
前端开发
【前端web入门第四天】02 CSS三大特性+背景图
本文详细介绍了CSS的三大特性:继承性、层叠性和优先级,并深入讲解了背景图的相关属性,包括背景属性、背景图的平铺方式、位置设定、缩放、固定以及复合属性。其中,继承性指子元素自动继承父元素的文字控制属性;层叠性指相同属性后定义覆盖前定义,不同属性可叠加;优先级涉及选择器权重,包括行内样式、ID选择器等。背景图部分则通过具体示例展示了如何设置背景图像的位置、大小及固定方式等。
245 91
|
5天前
|
前端开发 JavaScript
CSS样式穿透技巧:利用scoped与deep实现前端组件样式隔离与穿透
CSS样式穿透技巧:利用scoped与deep实现前端组件样式隔离与穿透
38 1
|
1月前
|
前端开发
前端基础(五)_CSS文本文字属性、背景颜色属性
本文详细介绍了CSS中关于文本和背景颜色的样式属性。包括字体大小、字体族、字体加粗、字体样式、文本行高、`font`属性、文本颜色、文本对齐方式、文本装饰线、首行缩进等文本属性,以及背景颜色、背景图片、背景重复、背景位置等背景属性。文章通过示例代码展示了这些属性的具体应用和效果。
21 3
前端基础(五)_CSS文本文字属性、背景颜色属性
|
1月前
|
前端开发
前端基础(九)_CSS的三大特征
本文详细解释了CSS的三大特性:层叠性、继承性和优先级,并通过实例演示了样式冲突、叠加和选择器优先级的应用。
22 2
前端基础(九)_CSS的三大特征
|
16天前
|
前端开发 容器
前端技术分享:利用CSS Grid布局实现响应式设计
【10月更文挑战第1天】前端技术分享:利用CSS Grid布局实现响应式设计
|
16天前
|
前端开发 UED 容器
前端技术分享:利用 CSS Grid 实现响应式布局
【10月更文挑战第1天】前端技术分享:利用 CSS Grid 实现响应式布局
33 2
|
19天前
|
Web App开发 前端开发
【前端基础篇】CSS基础速通万字介绍(上篇)3
【前端基础篇】CSS基础速通万字介绍(上篇)
14 1
|
19天前
|
Web App开发 前端开发
【前端基础篇】CSS基础速通万字介绍(上篇)2
【前端基础篇】CSS基础速通万字介绍(上篇)
20 1
|
19天前
|
缓存 前端开发 JavaScript
【前端基础篇】CSS基础速通万字介绍(上篇)1
【前端基础篇】CSS基础速通万字介绍(上篇)
16 1
|
1月前
|
前端开发
【前端web入门第三天】02 CSS字体和文本
本文详细介绍了CSS中字体和文本的相关属性。字体部分涵盖字体大小、粗细、样式、行高、字体族及`font`复合属性,通过具体示例展示了如何设置和使用这些属性。文本部分则讲解了文本缩进、对齐方式、修饰线及文字颜色等属性,并提供了实用的代码示例。此外,还简要介绍了调试工具中的一些细节,如错误属性标识和属性生效状态的控制。
58 28