JavaScript 实现图片轮播

article/2025/11/10 9:06:20

今天给大家介绍下怎么用 JS 实现图片轮播效果。

原理描述:

使用JS实现轮播的原理是这样的:

 假设初始的情况,下图一个网格代表一个图,初始时,显示1 :

当进行一次轮播后,显示变为下图 显示2:

依次类推。

 

代码实现:

1 JS 代码:

<script type="text/javascript">
    window.οnlοad=function(){
        //获得ul的元素
        var imgList=document.getElementById("imgList");
        //获得图片的数组
        var imgArr=document.getElementsByTagName("img");
        var navId=document.getElementById("navId");
        var outer=document.getElementById("outer");
        imgList.style.width=520*imgArr.length+"px";
        //设置navId的位置 使其居中
        navId.style.left=(outer.offsetWidth-navId.offsetWidth)/2+"px";
        //得到所有的a 标签 如果有其他的A的话  这里需要注意要使用navId子元素的a 
        var allA=document.getElementsByTagName("a");
        var index=0;
        allA[index].style.backgroundColor='black';//设置默认的a为黑色
        for(var i=0;i<allA.length;i++){
            allA[i].num=i;
            //alert(allA[i].num);
            allA[i].οnclick=function(){
                clearInterval(timer);
                index=this.num;
                /* imgList.style.left= -520*index+"px"; */
                setA();
                move(imgList,"left",-520*index,50,function(){
                    autoChange();
                });
            };
        }
        
        function setA(){
            //alert(index);
            //当indcx值比图片的数目多的时候 就归0
            if(index>=imgArr.length-1){
                index=0;
                imgList.style.left=0;
            } 
            for(var i=0;i<allA.length;i++){
                //去掉未点击的颜色  仍然保留a : hover有用
                allA[i].style.backgroundColor="";
            }
            allA[index].style.backgroundColor="black";
        }
        var timer;
        function autoChange(){
            
            timer=setInterval(function(){
                index++;
                index%=imgArr.length;
                move(imgList,"left",-520*index,20,function(){
                        setA();
                    });
            },2000); 
        }
        autoChange();

//可以根据 target 参数进行判断 向哪个方向移动
      function move(obj,attr,target,speed,callback){
          var current=parseInt(getStyle(obj,attr));
          //alert(current);
          //根据目标的位置来判定 speed的值是正是负
          if(current>target){
              speed=-speed;
          }
          //自定义对象定时器 防止对象之间的混乱操作 
          clearInterval(obj.timer);
          //alert(oldValue);
          obj.timer=setInterval(function(){
              var oldValue=parseInt(getStyle(obj,attr));
              var newVal=oldValue+speed;
              //如果移动的越界 进行重置
              if((speed<0 && newVal<=target) || (speed>0 && newVal>=target)){
                  newVal=target;
              }
              obj.style[attr]=newVal+"px";
              if(newVal==target){
                  clearInterval(obj.timer);
                  callback && callback();//回掉函数 先判断 有就执行 没有不执行
              }  
          },30);
      }
      
      //obj:获取样式元素
       //name:获取样式名
       function getStyle(obj,name){
           if(window.getComputedStyle){
               return getComputedStyle(obj,null)[name];
           }else{
               return obj.currentStyle[name];
           }
       }
    }
</script>

2  HTML 代码:

<div id="outer">
    <ul id="imgList">
        <li><img src="img/1.jpg"></li>
        <li><img src="img/2.jpg"></li>
        <li><img src="img/3.jpg"></li>
        <li><img src="img/1.jpg"></li><!-- 增加这个为了实现轮播无缝切换 -->
    </ul>
    <div id="navId">
        <a href="javascript:0"></a>
        <a href="javascript:0"></a>
       <a href="javascript:0"></a>

    </div>
</div>

3 CSS代码:

<style type="text/css">
   *{
      margin:0px;
      padding:0px;
   }
   #outer{
      width:520px;
      height:500px;
      margin:50px auto;
      background-color:greenyellow;
      padding:10px 0;
      /* 开启相对定位*/ 
      position:relative;
      overflow:hidden;/* 将超出的部分隐藏 */
      /* border:3px solid greenyellow */
   }
   #imgList{
      /*去除li的点*/
      list-style:none;
      /*开启绝对定位 */
      position:absolute;
      /*设置ul的宽度*/
     /*  width:1560px; */
   }
   #imgList li{
       /*为图片设置浮动*/
       float:left;
       margin:0 10px;/*设置左右外边距*/
   }
   #navId{
      /* 开启绝对定位 */
     position:absolute;
     /*设置位置*/
     bottom:15px;
     /*设置该块的左偏移量,使其可以居中
     由于outer 宽 520 每个链接宽15+2*5=25 目前共三张图,则共宽75*/
     /* left:212px; */
   }
   #navId a{
     width:15px;
     height:15px;
     float:left;/* 设置超链接浮动 */
     margin:0 5px;
     background-color:red;
     opacity:0.5;
     /*兼容 IE8 设置透明度*/
     filter:alpha(opacity=50);
   }
   /*设置鼠标移入效果*/
   #navId a:hover{
       background-color:black;
   }
 
</style>

4 实现效果:


http://chatgpt.dhexx.cn/article/Hh1INE4F.shtml

相关文章

JavaScript实现图片自动轮播

目录 1.轮播图片 1.1图片切换功能 1.2定时器功能 1.3图片自动轮播实现 2.页面定时弹出广告 2.2 技术分析 2.3步骤分析 2.4代码实现 3.表单校验 3.1需求分析 3.2技术分析 3.3校验邮箱 3.3.1从外部引入js文件&#xff08;一些匹配函数&#xff09; JS&#xff1a;是…

html js简单实现图片轮播功能

本章记录简单的图片轮播功能&#xff0c;需要html、js和css共同实现1、html文件<!DOCTYPE html> <html><head><meta charset"UTF-8"><link rel"stylesheet" type"text/css" href"css/text.css"/><sc…

js轮播图 最简单代码

js轮播图 最简单代码 今天来分享一篇js最简单轮播图轮播图&#xff0c;用最简单的代码实现&#xff1a; 首先&#xff0c;建立一个HTML文件&#xff0c;插入img标签&#xff0c;这里我们定义图片id为pic 然后使用document.getElementByid()获取img标签的id&#xff0c;并且定…

html+css+js实现图片轮播

html代码 原理是通过 overflow: hidden; 将ul的宽带属性设置为轮播图片的个数*100%&#xff0c;从而这个属性来使得div中只充斥 一个li&#xff1b;通过js让margin-left的值改变来实现图片轮播&#xff1b; <body><div class"warp"><div class"…

JS实现图片轮播效果(自动和手动)

本次轮播效果图如下&#xff1a; 具有以下功能&#xff1a;1.自动播放&#xff08;鼠标进入显示区域时停止播放&#xff09; 2.左右焦点切换 3.底下小按钮切换 ps:由于很多同志反馈无法总有各种奇怪的情况&#xff0c;所以有需要的直接下载整个工程&#xff1a;JS实现图片轮…

JS实现轮播图

在css使用动画可以实现简单的轮播图&#xff0c;但如今已经学习了JS&#xff0c;用JS来写轮播图更加方便快捷。今天就带着大家来实现轮播图。话不多说我们直接看代码&#xff1a; 这是css部分&#xff0c;进行了简单的样式操作接下来就进入js阶段&#xff1a; 运行结果如下&…

JS实现轮播图(一看就懂逻辑清晰)

轮播图有很多种实现方法&#xff0c;这是其中一种最清晰的方法。思路很清晰&#xff0c;代码很简单&#xff0c;欢迎大佬多指教。 先来看下效果图&#xff0c;嫌麻烦就不用具体图片来实现了&#xff0c;主要是理清思路。&#xff08;自动轮播&#xff0c;左右按钮切换图片&…

JS实现轮播图的三种简单方法。

Js实现轮播图01 实现思路 这可能是轮播图最简单点的实现之一&#xff0c;通过更改图片的src来实现该效果&#xff0c;首先需要将图片命名格式统一比如pic01.jpg&#xff0c;pic02.jpg…,再通过js使用定时器去改变img标签里面的src图片链接的名字来实现切换效果。代码如下&…

JS实现轮播图的三种简单方法

01、JS轮播图实现1 实现思路这可能是轮播图最简单点的实现之一&#xff0c;通过更改图片的src来实现该效果&#xff0c;首先需要将图片命名格式统一比如pic01.jpg&#xff0c;pic02.jpg…,再通过js使用定时器去改变img标签里面的src图片链接的名字来实现切换效果。代码如下&…

Mysql联表查询(学生表、教师表、成绩表、课程表)

文章目录 1 建库语句2 建表语句3 插入测试数据4 常见查询问题 1 建库语句 create database if not exists studentinfo character set utf8mb4;2 建表语句 一个学生可以选多门课程&#xff0c;一个课程下也对应多个学生&#xff0c;所以需要一个关系表&#xff08;student_cou…

mysql实操《学生表》

第一步&#xff0c;创建所需要的的表信息 1.创建学生表和添加所需要的信息 Student(SID,Sname,Sage,Ssex) --SID 学生编号,Sname 学生姓名,Sage 出生年月,Ssex 学生性别 添加测试数据1.学生表 insert into Student values(‘01’ , ‘赵雷’ , ‘1990-01-01’ , ‘男’); inser…

用Mysql设计一张学生表

mysql> create table student(-> id int,-> name varchar(10),-> gender char(1),-> birthday date,-> score double(5,2),-> email varchar(64),-> status tinyint#最后一行不用加逗号。-> ); Query OK, 0 rows affected (0.02 sec)mysql> desc…

Java数据库建立学生表

Java数据库建立学生表 代码如下&#x1f447;&#x1f447;&#x1f447;&#xff1a; import java.sql.*; //数据库建立学生表 public class Mysql {//数据库名为world&#xff0c;用户名为root&#xff0c;密码为adminprivate static String url "jdbc:mysql://localho…

mysql建立班级表_mysql数据表设计-班级表 学生表 老师表 课程表 成绩表

mysql数据表设计- 班级表 学生表 老师表 课程表 成绩表 image.png /* Navicat Premium Data Transfer Source Server : localhost Source Server Type : MySQL Source Server Version : 50624 Source Host : localhost Source Database : sqlexam Target Server Type : MySQL T…

mysql创建学生表命令_用sql语句创建学生表如何做

在数据库中使用SQL语句创建学生表代码如下&#xff1a;( 学号 char(12) primary key, 姓名 char(6) not null, 性别 char(2) check(性别 IN (男,女)), 班级 char(15) ) 相关表的创建&#xff1a;create table 成绩表 ( 学号 char(12)references 学生表(学号), 课程号 char(2)re…

SQL的学习学生表

1.创建数据库 create database school; 2.创建学生表&#xff0c;成绩表&#xff0c;课程表 create table student( Sno int primary key not null, Sname varchar(20) not null, Ssex varchar(2) null, Birthday datetime null, Sdept varchar(20) null);create table course(…

学生表

创建 1.学生表 Student(SID,Sname,Sage,Ssex) --SID 学生编号,Sname 学生姓名,Sage 出生年月,Ssex 学生性别 2.课程表 Course(CID,Cname,TID) --CID --课程编号,Cname 课程名称,TID 教师编号 3.教师表 Teacher(TID,Tname) --TID 教师编号,Tname 教师姓名 4.成绩表 SC(SID,CID,s…

学生表 成绩表 课程表 教师表

学生表&#xff1a; Student(s_id,s_name,s_birth,s_sex) –学生编号,学生姓名, 出生年月,学生性别 课程表&#xff1a; Course(c_id,c_name,t_id) – –课程编号, 课程名称, 教师编号 教师表&#xff1a; Teacher(t_id,t_name) –教师编号,教师姓名 成绩表&#xff1a; Score(…

MySQL基础 创建学生表实现查询基础功能

一. 创建学生表 1.进入MySQL WIN R 输入cmd 输入mysql -u root -p 输入密码进入mysql 2. 输入show databases; 查询现有数据库 选择一个数据库 use 数据库名称 创建一个学生表 create table stu( id int ,-- 编号 name varchar(10),-- 姓名 gender char(1)…

数据库学生表

文章目录 学生表建立学生表&#xff1a;建表过程中出现的错误&#xff1a; 插入数据 课程表建立课程表&#xff1a;插入数据 选课表建立选课表插入数据建表过程中出现的错误&#xff1a; 修改基本表增加属性列&#xff1a;修改数据类型&#xff1a;增加约束条件&#xff1a;删除…