轮播图JS Javascript +html +css

1 html,css

            只需要一个 空标签 定义好css样式
            所有需要的轮播图标签 都可以 动态生成
            根据需求 动态生成 轮播图 页面内容

2 动态生成页面函数

            1,  定义一个数组 模拟 后端传参数据
            2,  获取 生成轮播图的html标签

3, 定义函数程序 动态生成轮播图页面

                (1) 创建 ul ol div 标签节点 
                (2) 设定 ul ol div 标签节点内容
                    ul>li>img

                    ol>li
                        第一个li有class,active样式 也就是背景颜色是红色
                        每一个li定义name属性用于事件委托区分标签
                        每一个li定义num属性存储索引下标

                    div内容是固定内容
                        左 右 切换按钮 
                            添加name用于事件委托
                (3) 将 ul ol div 标签节点 写入 轮播图标签对象中
                (4) 获取 原始的ul>li 原始的ol>li 
                    获取 ul>li 标签宽度
                (5) 克隆 原始ul>li 第一个 和 最后一个
                    克隆 原始ul>li 第一个 写入 ul标签 最后
                    克隆 原始ul>li 最后一个 写入 ul标签 起始
                (6) 重新设定 ul标签宽度 是 克隆之后 li标签个数 * li标签宽度
                    重新设定 ul标签定位 向左 定位 一个li宽度

4, 自动轮播函数

                设定一个定时器 每间隔一段时间 触发执行程序
                    index变量累加1 

                    设定 焦点标签样式 
                        清除所有的ol>li标签的 class,active
                        给 当前显示的ul>li 对应的 ol>li 标签 添加class,active
                            显示最后一个ul>li 给 第一个 ol>li 添加样式
                            显示第一个ul>il 给 最后一个 ol>li 添加样式
                            其他情况 index - 1 是 ul>li 对应的 ol>li

                    调用move()运动函数 根据新的index 运动完成ul标签的定位切换
                        move()定时器的回调函数 
                            如果 当前显示 ul>li 的 最后一个 
                                ul定位瞬间切换到 第二个ul.li
                            如果 当前显示 ul>li 的 第一个 
                                ul定位瞬间切换到 倒数第二个ul.li

                            变量赋值 true 可以再次调用move()运动函数

                外层定时器的时间间隔 必须要 大于 内层定时器move() 执行的时间

5, 鼠标移入移出

                给 轮播图div 添加 事件 
                    鼠标移入 enter
                        清除定时器

                    鼠标移出 leave
                        再次调用 自动轮播函数

6, 点击事件

                给 轮播图div 添加 点击事件 
                    点击 左切换
                        先 防止点击过快 
                            判断变量储存是不是原始值 
                                是 原始值 赋值 false
                                不是 原始值 执行 return
                                
                        显示上一个ul>li 也就是 index 累减 1 
                            index-- 

                        设定 焦点按钮样式

                        调用move()运动函数 动态完成ul标签定位切换

                    点击 右切换
                        先 防止点击过快 
                            判断变量储存是不是原始值 
                                是 原始值 赋值 false
                                不是 原始值 执行 return
                                
                        显示下一个ul>li 也就是 index 累加1
                            index++

                        设定 焦点按钮样式

                        调用move()运动函数 动态完成ul标签定位切换

                    点击 焦点按钮
                        先 防止点击过快 
                            判断变量储存是不是原始值 
                                是 原始值 赋值 false
                                不是 原始值 执行 return
                                
                        显示 点击的 ol>li 对应的 ul>li
                            获取 点击的 ol>li 标签 num属性的属性值
                            也就是 ol>li 标签的索引下标 
                            ol>li 标签的索引下标 获取结果 转化为数值类型 
                            + 1 是 对应的 ul>li 的索引下标
                                index = num属性值转化为数值类型 + 1

                        设定 焦点按钮样式

                        调用move()运动函数 动态完成ul标签定位切换

7, 浏览器最小化隐藏

                给 document 添加 浏览器显示状态监听事件 visibilitychange

                    通过 浏览器显示状态码 判断 浏览器当前的显示状态 
                        如果 visibilityState 是 hidden 
                            表示 浏览器 当期显示状态是 隐藏最小化
                            清除 定时器 

                        如果 visibilityState 是 visible
                            表示 浏览器 当期显示状态是 显示状态
                            再次调用自动轮播函数

详细代码

主体代码

<!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> 
        *{
     
            margin: 0;
            padding: 0;
        }

        ul,ol,li{
     
            list-style: none;
        }

        img{
     
            display: block;
            width: 100%;
            height:100%;
        }

        a,a:hover,a:active{
     
            text-decoration: none;
        }

        .banner{
     
            width: 600px;
            height: 400px;
            border: 3px solid #000;
            margin: 50px auto;
            position: relative;
            overflow: hidden; 
        }

        .banner ul{
     
            width: 500%;
            height: 100%;
            position: absolute;
            top: 0;
            left: 0;
        }

        .banner ul::after{
     
            display: block;
            content: "";
            clear: both;
        }

        .banner ul li{
     
            width: 600px;
            height: 400px;
            float: left;
        }

        .banner ol{
     
            position: absolute;
            bottom: 50px;
            left: 50%;
            transform: translateX(-50%);
            height: 50px;
            display: flex;
            justify-content: center;
            align-items: center;
            background: rgba(0,0,0,0.5);
            padding: 5px;
            border-radius: 10px;
        }

        .banner ol li{
     
            w
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值