爬行的蜗牛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: golang Linux PHP
查看: 106|回复: 0

html+css手搓轮播图(附源码)

[复制链接]

152

主题

48

回帖

1137

积分

管理员

积分
1137
发表于 2024-11-23 16:12:05 | 显示全部楼层 |阅读模式
预览效果

111.gif

源码

  1. <!DOCTYPE html>
  2. <html lang="en">

  3. <head>
  4.     <meta charset="UTF-8">
  5.     <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6.     <title>Document</title>
  7.     <style>
  8.         * {
  9.             padding: 0;
  10.             margin: 0;
  11.         }

  12.         #slideshow {
  13.             width: 800px;
  14.             height: 350px;
  15.             margin: 0 auto;
  16.             /*设置在页面水平居中*/
  17.             overflow: hidden;
  18.             position: relative;
  19.         }

  20.         #slideshow img {
  21.             width: 800px;
  22.             position: absolute;
  23.             /*图片采取绝对定位,均位于左上角,重叠在一起*/
  24.             top: 0;
  25.             left: 0;
  26.             opacity: 0;
  27.             /*初始不透明度为0,图片都看不见*/
  28.             transition: opacity 1s linear;
  29.             /*--重点--定义一个关于透明度的transition*/
  30.         }

  31.         #slideshow img.active {
  32.             opacity: 1;
  33.             /*有active类的图片不透明度为1,即显示图片*/
  34.         }

  35.         /*-- 设置页码的样式 --*/
  36.         #slideshow div {
  37.             width: 100%;
  38.             position: absolute;
  39.             bottom: 10px;
  40.             text-align: center;
  41.         }

  42.         #slideshow span {
  43.             display: inline-block;
  44.             width: 25px;
  45.             line-height: 25px;
  46.             /*当只有一行文本时height等于line-height*/
  47.             border-radius: 25px;
  48.             /*设置页码为圆形*/
  49.             margin: 0 15px;
  50.             background: white;
  51.             font-size: 16px;
  52.         }

  53.         #slideshow span.active {
  54.             color: white;
  55.             background: #FFDD55;
  56.         }

  57.         /*-- 设置图片描述文本的样式 --*/
  58.         #slideshow p {
  59.             position: absolute;
  60.             top: 30px;
  61.             left: -400px;
  62.             /*相对于轮播图左侧左移400px*/
  63.             line-height: 30px;
  64.             padding: 5px 30px;
  65.             font-size: 20px;
  66.             color: white;
  67.             background-color: rgba(100, 100, 100, 0.6);
  68.             /*用rgba设置一个带透明度的背景颜色*/
  69.             opacity: 0;
  70.             transition: all 0.5s;
  71.         }

  72.         #slideshow p.active {
  73.             left: 0;
  74.             opacity: 1;
  75.         }
  76.     </style>
  77. </head>

  78. <body>
  79.     <div id="slideshow">
  80.         <!-- 插入轮播的图片们 -->
  81.         <img class="active" src="https://images.unsplash.com/photo-1730722005859-f93a79460bae?q=80&w=1974&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D" />
  82.         <img src="https://image2.sina.com.cn/dongman/pic/chshidzrcji/U1595P55T4D115697F50DT20070406083109.jpeg" />
  83.         <img src="http://t1.mmonly.cc/uploads/tu/201602/198/qh1spjs3guk.jpg" />
  84.         <!-- 插入轮播的页码们 -->
  85.         <div>
  86.             <span class="active">1</span>
  87.             <span>2</span>
  88.             <span>3</span>
  89.         </div>
  90.         <!-- 插入图片的描述们 -->
  91.         <p class="active">这是第一幅图片哈哈哈</p>
  92.         <p>这是第二幅图片咩</p>
  93.         <p>到第三幅了!</p>
  94.     </div>

  95.     <script>
  96.         //---------主角:轮播图函数-------------
  97.         function slideshow() {
  98.             var slideshow = document.getElementById("slideshow"),
  99.                 imgs = slideshow.getElementsByTagName("img"), //得到图片们
  100.                 pages = slideshow.getElementsByTagName("span"), //得到页码们
  101.                 descrips = slideshow.getElementsByTagName("p"), //得到描述们
  102.                 current = 0; //current为当前活跃的图片编号

  103.             function slideOff() {
  104.                 imgs[current].className = ""; //图片淡出
  105.                 pages[current].className = "";
  106.                 descrips[current].className = "";
  107.             }
  108.             function slideOn() {
  109.                 imgs[current].className = "active"; //图片淡入
  110.                 pages[current].className = "active";
  111.                 descrips[current].className = "active";
  112.             }

  113.             function changeSlide() { //切换图片的函数
  114.                 slideOff();
  115.                 current++; //自增1
  116.                 if (current >= 3) current = 0;
  117.                 slideOn();
  118.             }

  119.             //每2s调用changeSlide函数进行图片轮播
  120.             var slideon = setInterval(changeSlide, 2000);

  121.             slideshow.onmouseover = function () {
  122.                 clearInterval(slideon); //当鼠标移入时清除轮播事件
  123.             }
  124.             slideshow.onmouseout = function () {
  125.                 slideon = setInterval(changeSlide, 2000); //当鼠标移出时重新开始轮播事件
  126.             }

  127.             for (var i = 0; i < pages.length; i++) { //定义鼠标移入和移出页码事件
  128.                 pages[i].onmouseover = function () {
  129.                     slideOff(); //图片淡出
  130.                     current = this.innerHTML - 1; //得到鼠标停留的页码对应的current
  131.                     slideOn(); //图片淡出
  132.                 }
  133.             }

  134.         }

  135.         slideshow();
  136.     </script>


  137. </body>

  138. </html>
复制代码
源码解释

这段代码是一个简单的图片轮播图的HTML页面,它使用了HTML、CSS和JavaScript来实现图片的自动轮播和手动切换功能。下面是代码的详细解释:

HTML部分:

<div id="slideshow">:定义了轮播图的容器。
<img>标签:包含了三张图片,其中第一张图片被设置为初始显示(class="active")。
<div>和<span>标签:用于显示页码,其中第一个页码被设置为初始活动状态(class="active")。
<p>标签:用于显示每张图片的描述,其中第一个描述被设置为初始活动状态(class="active")。
CSS部分:

设置了页面的基本样式,如padding和margin都被设置为0。
#slideshow:定义了轮播图容器的样式,包括宽度、高度、溢出隐藏和相对定位。
#slideshow img:设置了图片的样式,包括宽度、绝对定位、初始透明度和过渡效果。
#slideshow img.active:当图片具有active类时,透明度变为1,使其可见。
#slideshow div和#slideshow span:定义了页码的样式,包括宽度、位置、文本对齐和圆形外观。
#slideshow span.active:当页码具有active类时,背景颜色改变。
#slideshow p:定义了图片描述的样式,包括位置、行高、填充、字体大小和背景颜色。
#slideshow p.active:当描述具有active类时,位置和透明度改变,使其可见。
JavaScript部分:

定义了一个slideshow函数,用于控制图片的轮播。
slideOff函数:用于将当前图片、页码和描述的样式设置为非活动状态。
slideOn函数:用于将当前图片、页码和描述的样式设置为活动状态。
changeSlide函数:用于切换到下一张图片,如果到达最后一张图片,则回到第一张。
设置了一个定时器setInterval,每2秒调用一次changeSlide函数。
当鼠标移入轮播图时,清除定时器,停止自动轮播;鼠标移出时,重新开始定时器。
为每个页码绑定了鼠标移入事件,当鼠标移入某个页码时,切换到对应的图片。
这段代码实现了一个基本的图片轮播功能,包括自动轮播、鼠标悬停暂停、手动切换图片和显示图片描述。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表