当前位置: 首页 > article >正文

综合练习--轮播图

本篇博客将教大家实现一个基础的轮播图。

源代码:

<!DOCTYPE html>  
<html lang="en">  
<head>  
    <meta charset="UTF-8">  
    <meta name="viewport" content="width=device-width, initial-scale=1.0">  
    <title>图片自动切换(轮播图效果)</title>  
    <style>  
        body, html {  
            margin: 0;  
            padding: 0; 
            width: 100%; 
            height: 100%;  
        }  
        .carousel-container {  
            position: relative;  
            width: 25%;  
            height: 40%; /* 根据需要设置高度 */ 
            border: 4px red solid;
            background-color: gray;
        }  
        .carousel-image {  
            width: 100%;  
            height: 100%;  
        }  
 
    </style>  
</head>  
 
<body>  
 
    <div class="carousel-container">  
        <img src="./img_src/p1.jpg" class="carousel-image" id="img1">  
    </div> 
    
    <div class="change-image">
        <p class="button"  id="p1">第1张</p>
        <p class="button"  id="p2">第2张</p>
        <p class="button"  id="p3">第3张</p>
        <p class="button"  id="p4">第4张</p>   
    </div>
 
 
 
 
    <script>
        
    </script>
 
</body>  
</html>

基础效果图:

最终效果:

轮播图最终效果

一、实现轮播效果

1、首先获取节点
const imgElement = document.getElementById("img1"); 
2、设置一个布尔变量,定义一个函数,再通过if条件判断布尔变量是否为真,修改图片路径
        var i = 1;
        var scroll_img = true;  
        function showNextImage1() {     
            if(scroll_img){      
                if(i>4){
                    i = 1;
                }else{               
                    imgElement.src = `./img_src/p${i}.jpg`;
                    i =  i + 1;
                } 
            }
        }  
3、设置定时函数,实现自动切换
setInterval(showNextImage1, 1000);   

做到这一步,自动轮播的效果便做好了。 

 轮播效果:

轮播自动切换

二、实现按钮点击切换

1、css样式设置
        .carousel-container .carousel-image {  
            position: absolute;  
            top: 0;  
            left: 0;  
            width: 100%;  
            height: 100%;  
            opacity: 1;   
        }  
 
        .change-image{
            width: 20%;  
            height: 3%;  
            /* border: 1px purple solid; */
            position: absolute;
            top: 30%;
            left: 5%;
        }
 
        .change-image .button{        
            width: 60px;  
            height: 30px;
            color: white;
            text-align: center;
            background-color: red;
            border-radius: 10px;
            margin-left: 9px;
            float: left;
        }
 
        .clear_ele::after{
            content: "";  
            display: block;
            /* border: 6px purple dashed; */
            clear: both;
        }
2、给每个按钮设置鼠标监听事件
        // 【实现四个按钮切换图片】
        const p = document.getElementsByTagName("p");
        p[0].addEventListener("click",
            function(){
                i = 1;
                imgElement.src = `./img_src/p${i}.jpg`;
            }
        )
 
        p[1].addEventListener("click",
            function(){
                i = 2;
                imgElement.src = `./img_src/p${i}.jpg`;
            }
        )
 
        p[2].addEventListener("click",
            function(){
                i = 3;
                imgElement.src = `./img_src/p${i}.jpg`;
            }
        )
 
        p[3].addEventListener("click",
            function(){
                i = 4;
                imgElement.src = `./img_src/p${i}.jpg`;
            }
        )

 这样通过鼠标切换图片的效果便做好了

效果:

轮播鼠标监听

三、Enter键控制轮播是否开启

1、设置相应的CSS样式和html代码
<head>  
    <title>图片自动切换(轮播图效果)</title>  
    <style>  
         
        #output {  
            color: white;
            background-color: green; 
            text-align: center;
            width: 20%;  
            height: 3%; 
            margin-top: 1%;      
            position : relative;
            left: 3%;   
            border-radius: 10px;
        } 
    </style>  
</head>  
<body>  

    <div id="output">图片轮播开启......(按Enter键关闭轮播)</div>
 
</body>  
</html>
2、获取节点并设置文档监听事件
    const outputDiv = document.getElementById('output');  
      
    document.addEventListener('keydown', );
3、定义函数,并且获取按键
    document.addEventListener('keydown',  
        function(event) {              
            const keyCode = event.key; // 获取按键的代码(包括数字键和特殊键,如箭头键、功能键等)
        }
    );
4、设置布尔变量,控制图片路径切换
    document.addEventListener('keydown',  
        function(event) {              
            const keyCode = event.key; 
            if(keyCode==="Enter"){
                scroll_img = !scroll_img;      
            }
            if (scroll_img) {
                outputDiv.textContent = "图片轮播开启......(按Enter键关闭轮播)";
                outputDiv.style.backgroundColor = "green";
            } else {
                outputDiv.textContent = "图片轮播关闭......(按Enter键开启轮播)";
                outputDiv.style.backgroundColor = "red";
            }
        }
    );

这样,一个简单的轮播效果便做好了。 

轮播enter按键控制

综合代码:

<!DOCTYPE html>  
<html lang="en">  
<head>  
    <meta charset="UTF-8">  
    <meta name="viewport" content="width=device-width, initial-scale=1.0">  
    <title>图片自动切换(轮播图效果)</title>  
    <style>  
        body, html {  
            margin: 0;  
            padding: 0; 
            width: 100%; 
            height: 100%;  
        }  
        .carousel-container {  
            position: relative;  
            width: 25%;  
            height: 40%; /* 根据需要设置高度 */ 
            border: 4px red solid;
            background-color: gray;
        }  
        .carousel-container .carousel-image {  
            position: absolute;  
            top: 0;  
            left: 0;  
            width: 100%;  
            height: 100%;  
            opacity: 1; /* 不透明度0-1 */  
        }  
 
        .change-image{
            width: 20%;  
            height: 3%;  
            /* border: 1px purple solid; */
            position: absolute;
            top: 30%;
            left: 5%;
        }
 
        .change-image .button{        
            width: 60px;  
            height: 30px;
            color: white;
            text-align: center;
            background-color: red;
            border-radius: 10px;
            margin-left: 9px;
            float: left;
        }
 
 
 
        #output {  
            color: white;
            background-color: green; 
            text-align: center;
            width: 20%;  
            height: 3%; 
            margin-top: 1%;      
            position : relative;
            left: 3%;   
            border-radius: 10px;
        } 
 
        .clear_ele::after{
            content: "";  /* 这个伪元素的内容属性必须有 */
            display: block;
            /* border: 6px purple dashed; */
            clear: both;
        }
    </style>  
</head>  
<body>  
 
    <div class="carousel-container">  
        <img src="./img_src/p1.jpg" class="carousel-image" id="img1">  
    </div> 
 
    <div  class="clear_ele change-image">
        <p class="button"  id="p1">第1张</p>
        <p class="button"  id="p2">第2张</p>
        <p class="button"  id="p3">第3张</p>
        <p class="button"  id="p4">第4张</p>   
    </div>
 
    <div id="output">图片轮播开启......(按Enter键关闭轮播)</div>
 
    <script>  
 
        // 【实现自动轮播】
        const imgElement = document.getElementById("img1"); 
        var i = 1;
        var scroll_img = true;
        function showNextImage1() {     
            if(scroll_img){
                if(i>4){
                    i = 1;
                }else{               
                    imgElement.src = `./img_src/p${i}.jpg`;
                    i =  i + 1;
                } 
            }
        }  
        // 每1秒切换一次图片 (无限循环)
        setInterval(showNextImage1, 1000);  
 
 
 
        // 【实现四个按钮切换图片】
        const p = document.getElementsByTagName("p");
        p[0].addEventListener("click",
            function(){
                i = 1;
                imgElement.src = `./img_src/p${i}.jpg`;
            }
        )
 
        p[1].addEventListener("click",
            function(){
                i = 2;
                imgElement.src = `./img_src/p${i}.jpg`;
            }
        )
 
        p[2].addEventListener("click",
            function(){
                i = 3;
                imgElement.src = `./img_src/p${i}.jpg`;
            }
        )
 
        p[3].addEventListener("click",
            function(){
                i = 4;
                imgElement.src = `./img_src/p${i}.jpg`;
            }
        )
 
 
  
 
    // 【实现回车键控制轮播是否开启】    
      
    const outputDiv = document.getElementById('output');  // 获取显示按键信息的元素
      
    document.addEventListener('keydown',  // 监听整个文档的keydown事件
        function(event) {              
            const keyCode = event.key; // 获取按键的代码(包括数字键和特殊键,如箭头键、功能键等)
            if(keyCode==="Enter"){
                scroll_img = !scroll_img;      
            }
            //将提示信息添加到输出区域  
            if (scroll_img) {
                outputDiv.textContent = "图片轮播开启......(按Enter键关闭轮播)";
                outputDiv.style.backgroundColor = "green";
            } else {
                outputDiv.textContent = "图片轮播关闭......(按Enter键开启轮播)";
                outputDiv.style.backgroundColor = "red";
            }
        }
    );
 
 
 
    
 
    </script>  
</body>  
</html>


http://www.kler.cn/a/406119.html

相关文章:

  • 大数据新视界 -- 大数据大厂之 Impala 性能优化:跨数据中心环境下的挑战与对策(上)(27 / 30)
  • RTL8211F 1000M以太网PHY指示灯
  • Android上运行Opencv(TODO)
  • ROS机器视觉入门:从基础到人脸识别与目标检测
  • 移动充储机器人“小奥”的多场景应用(上)
  • 启动前后端分离项目笔记
  • ubuntu20.04中编译安装gcc 9.2.0
  • .net将List<实体1>的数据转到List<实体2>
  • Linux 常用命令大汇总
  • 【数论】莫比乌斯函数及其反演
  • 探索免费的Figma中文版:开启高效设计之旅
  • tcp::acceptor acceptor(io_service, tcp::endpoint(tcp::v4(), PORT)); 解析
  • (超级详细!!!)解决“com.mysql.jdbc.Driver is deprecated”警告:详解与优化
  • xxl-job入门
  • 支持多种快充协议和支持多种功能的诱骗取电协议芯片
  • 解决——CPN IDE卡在启动画面中 initializing状态
  • 二、CSS
  • tcp/ip异常断开调试笔记——lwip
  • Android音频采集
  • C# NetworkStream用法
  • 我对软考“背背背”的看法
  • [已解决]Tomcat 9.0.97控制台乱码
  • Pytorch 遇到 NNPACK 初始化问题unsupported hardware
  • CSS给元素的四个角添加边框
  • 《Django 5 By Example》阅读笔记:p651-p678
  • Python学习32天