图片轮播(基础)

案例一 横轴滚动

1.实现效果

在这里插入图片描述

2. 知识点:
  1. 图片之间默认有缝隙,给左浮动float:left清除缝隙
  2. 设置计时器和清除计时器没有强制要求使用同样名称只是为了规范代码
  3. scrollleft默认值为0,且值不带单位是纯数字值
  4. 清除滚动:一圈结束后,最后一张图片到第一张图片会有抖动,可以增加一个相同内容的div或者增加可视区域图片数量的相同图片(原理相同)

1) 可视区域为三张图片

在这里插入图片描述
2) 再增加一个相同的div,更保险一些的做法
在这里插入图片描述

3.设计思路:
  1. 利用滚动轴,当滚动轴移动到最左边,即a.scrollLeft <= 0时,跳到第二部分图开始的位置,因为速度很快且两组图可视区域显示的内容相同所以看不到切换的效果,则实现了无缝滚动
  2. 一般把定时器里的延长时间设置为变量speed来控制切换速度
  3. 为了方便添加鼠标进入和离开时间,今后在设置计时器时可以直接赋给变量timer,timer要先清空等于null,并封装在函数show()中方便重新启动计时器,如下
  a.onmouseenter = function () {/*鼠标进入事件*/
        clearInterval(time);/*清除计时器*/
    }
    a.onmouseleave = function () {/*鼠标离开事件*/
        show();/*重新启动*/
    }

变量声明

    var a = document.getElementsByClassName("a")[0];
    var b = document.getElementsByClassName("b")[0];
    var c = document.getElementsByClassName("c")[0];
    c.innerHTML = b.innerHTML;
    var speed = 30;//每一百毫秒向左移动的距离
    var time;

计时器

 show();
    function show() {
        time = setInterval(function () {
            a.scrollLeft -= speed;
            if (a.scrollLeft <= 0) {
                a.scrollLeft = 1200;
            }
        }, 100)
    }

4.cursor的各种常用鼠标属性效果
在这里插入图片描述
在这里插入图片描述
补充:not allowed为禁用图标
在这里插入图片描述

案例二:简单轮播

1.功能及实现步骤
  1. 自动轮播
  2. 下方的点跟图片对应
  3. 左右按钮可切换图片并对应点的效果
2.实现效果

在这里插入图片描述

3.设计思路
  1. 内函数取不到for里面的i值,要用索引记录btn[i].index = i;
  2. 动态的给点添加颜色,定义变量numnum++实现点的效果,大于4时赋值1
  3. 轮播效果通过动态修改图片路径实现,添加的图片刚好与num值对应,所以实现了点和图片的对应
  4. 按钮功能主要实现点和图片对应,利用num值,重新添加图片路径和对应点(索引为num-1)变色,即再次调用上面的方法
  5. 清除之前的点变色使用for循环将所有点的颜色取消

变量声明

    var a = document.getElementsByClassName("a")[0];
    var imglist = document.getElementsByClassName("imglist")[0];
    var point = document.getElementsByClassName("point")[0].children;
    var btn = document.getElementsByClassName("btn")[0].children;


    var num = 1;
    var speed = 1000;
    var time = null;
    point[0].style.backgroundColor = "red";

点的功能

show();
    function show() {
        time = setInterval(function () {
            num++;
            for (var i = 0; i < point.length; i++) {
                point[i].style.backgroundColor = "";
            }

            if (num > 4) {
                num = 1;
            }
            point[num - 1].style.backgroundColor = "red";
            imglist.src = "./img/" + num + ".jpg";
        }, speed)
    }

鼠标进入和离开

    a.onmouseenter = function () {
        clearInterval(time);
    }
    a.onmouseleave = function () {
        show();
    }

左右按钮效果——注意索引获取

  /* 不能直接取到for循环中的i值*/
    for (var i = 0; i < btn.length; i++) {
        btn[i].index = i;
        btn[i].onclick = function () {
            if (this.index == 1) {/*i=1为右按钮*/
                num++;
                if (num > 4) {
                    num = 1;
                }
            }
            else {
                num--;
                if (num < 1) {
                    num = 4;
                }
            }
            imglist.src = "./img/" + num + ".jpg";
            for (var i = 0; i < point.length; i++) {
                point[i].style.backgroundColor = "";
            }
            point[num - 1].style.backgroundColor = "red";
        }
    }
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
HTML和CSS可以结合使用来实现一个简单的图片轮播效果,这里提供一个基础的示例,不涉及JavaScript或jQuery等动态脚本。我们将创建一个包含几张图片的div容器,以及两个按钮来控制图片切换。 首先,你需要在HTML中创建基本结构: ```html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>图片轮播</title> <style> .carousel { position: relative; width: 100%; overflow: hidden; } .carousel-item { position: absolute; width: 100%; opacity: 0; transition: opacity 1s ease; } .active { opacity: 1; } </style> </head> <body> <div class="carousel"> <img src="image1.jpg" class="carousel-item active" alt="Image 1"> <img src="image2.jpg" class="carousel-item" alt="Image 2"> <!-- 添加更多图片 --> </div> <button id="prev">上一张</button> <button id="next">下一张</button> </body> </html> ``` 接下来,添加一些基本的CSS样式,以及两个按钮的HTML和一些基本的点击事件(假设按钮的ID分别为`prev`和`next`): ```html <!-- 添加以下CSS到<head>部分上方 --> <style> /* ... (之前的样式) ... */ #prev, #next { position: absolute; bottom: 20px; cursor: pointer; } #prev { left: 20px; } #next { right: 20px; } /* 按钮样式 */ button { padding: 10px 20px; font-size: 16px; } </style> <!-- ... (之前的<body>部分) ... --> <button id="prev">上一张</button> <button id="next">下一张</button> <script> // 假设每张图片都有对应的索引 let currentIndex = 0; function changeSlide(direction) { const items = document.querySelectorAll('.carousel-item'); items.forEach((item, index) => { item.classList.remove('active'); }); const nextItem = direction === 'prev' ? currentIndex - 1 : currentIndex + 1; if (nextItem >= items.length) { nextItem = 0; // 循环处理 } if (nextItem < 0) { nextItem = items.length - 1; // 循环处理 } items[nextItem].classList.add('active'); currentIndex = nextItem; } document.getElementById('prev').addEventListener('click', () => changeSlide('prev')); document.getElementById('next').addEventListener('click', () => changeSlide('next')); </script> ``` 这个例子中的图片轮播是静态的,如果你想添加真正的轮播功能,可以考虑使用JavaScript库如Swiper.js或者使用纯JavaScript结合`requestAnimationFrame`实现动画。如果你对使用这些库感兴趣,我可以为你提供相关的引导。现在,请问: 1. 这种静态图片轮播能满足你的需求吗? 2. 有没有兴趣了解如何添加轮播动画效果? 3. 如果你希望用JavaScript实现,还需要什么方面的帮助?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值