需要html,css,js,

源代码

HTML

<div class="box">

<!-- 左右两个点击按钮 -->

<a href="javaScript:;" class="leftBtn"><b>&lt</b></a>

<a href="javaScript:;" class="rightBtn"><b>&gt</b></a>

<!-- 轮播图 -->

<ul class="imgList">

<li><img src="./images/1e4bae3d165b7d5e.jpg.webp" alt=""></li>

<li><img src="./images/4698326cac3630e0.jpg.webp" alt=""></li>

<li><img src="./images/8a3012115f1bdc6f.jpg.webp" alt=""></li>

<li><img src="./images/aab57512633dea92.jpg.webp" alt=""></li>

<li><img src="./images/q (1).jpg" alt=""></li>

<li><img src="./images/q (2).jpg" alt=""></li>

<li><img src="./images/1.jpg" alt=""></li>

<li><img src="./images/123.jpg" alt=""></li>

</ul>

<!-- 小圆圈 -->

<ol class="circle">

</ol>

</div>

CSS样式

<style>

* {

margin: 0;

padding: 0;

}

.box {

width: 590px;

height: 441px;

background-color: salmon;

margin: 50px auto;

position: relative;

z-index: 99;

overflow: hidden;

}

.imgList {

position: absolute;

list-style: none;

width: 800%;

left: 0;

top: 0;

}

.imgList li {

float: left;

}

.imgList li img {

width: 590px;

height: 441px;

cursor: pointer;

}

.circle {

position: absolute;

width: 150px;

height: 10px;

z-index: 999;

display: flex;

justify-content: space-around;

align-items: center;

left: 38px;

top: 415px;

}

.circle li {

list-style: none;

width: 10px;

height: 10px;

border-radius: 50%;

cursor: pointer;

background-clip: content-box;

border: 1px solid rgba(255, 255, 255, 0.5);

padding: 1px;

}

.current {

background-color: #fff;

}

.leftBtn {

position: absolute;

width: 25px;

height: 35px;

color:white;

background-color: rgba(255, 255, 255, 0.5);

border-radius:  0 100px  100px 0;

left: 0;

top: 200px;

z-index: 66;

text-decoration: none;

text-align: center;

line-height: 33px;

display: none;

}

a:hover{

background-color:rgba(138, 115, 88, 0.336);

}

.rightBtn {

position: absolute;

width: 25px;

height: 35px;

color:white;

background-color: rgba(255, 255, 255, 0.5);

border-radius: 100px 0 0 100px;

right: 0;

top: 200px;

z-index: 66;

text-decoration: none;

text-align: center;

line-height: 33px;

display: none;

}

</style>

JS

<script>

//获取元素

var leftBtn = document.querySelector('.leftBtn'); //左按钮

var rightBtn = document.querySelector('.rightBtn'); //右按钮

var box = document.querySelector('.box'); //最大的盒子

var boxWidth = box.offsetWidth; //盒子宽=图片宽度

//1-鼠标落在div上显示左右按钮

//mouseenter事件为鼠标经过大盒子时显示左右两个按钮

box.addEventListener('mouseenter', function () {

leftBtn.style.display = 'block';

rightBtn.style.display = 'block';

clearInterval(timer);

timer = null;

})

//2-鼠标离开div上显示左右按钮

//mouseleave事件为鼠标离开左右两个按钮隐藏

box.addEventListener('mouseleave', function () {

leftBtn.style.display = 'none';

rightBtn.style.display = 'none';

timer = setInterval(function () {

rightBtn.click();

}, 2000);

})

//3-动态获取图片张数来展示小球个数

var ul = box.querySelector('ul'); //获取大盒子box里的ul标签

var ol = box.querySelector('.circle') //获取大盒子box里的ol标签

//for循环根据图片创建小球个数

for (var i = 0; i < ul.children.length; i++) {

//创建一个小li标签

var li = document.createElement('li');

//记录当前小圆圈的索引号 通过自定义属性来做  为第5步做准备

li.setAttribute('index', i);

//把小li插入到ol里面

ol.appendChild(li);

//4-小圆圈的排他思想 可以在生成小圆圈的同时直接绑定点击事件

li.addEventListener('click', function () {

//把所有小li清除current样式类名

for (var i = 0; i < ol.children.length; i++) {

ol.children[i].className = '';

}

//留下自己获取current类名的样式

this.className = 'current';

//使用动画函数的前提 该元素必须有定位

//注意  移动的是ul而不是li

//滚动图片核心算法 点击某个小圆圈 就让图片滚动

// 5-点击小圆圈 移动图片

//ul移动距离 小圆圈的索引号乘以图片的宽度作为ul运动的距离

//当我们点击了某个小li 就拿到当前小li的索引号

var index = this.getAttribute('index');

//当我们点击了某个小li 就把这个小li的索引给num

num = index;

//当我们点击了某个小li 就把这个小li的索引给circle

circle = index;

//调用动画函数

animate(ul, -index * boxWidth)

})

}

//把ol里面的第一个小li设置名为current

ol.children[0].className = 'current';

//6-克隆第一张图片放到ul最后

var first = ul.children[0].cloneNode(true);

ul.appendChild(first);

//7-点击右侧按钮 图片滚动一张功能

//右侧按钮点击事件

var num = 0; //声明一个变量

var circle = 0;

// circle控制小圆圈播放

rightBtn.addEventListener('click', function () {

//如果走到了最后一张复制的图片 此时我们的ul要快速的复原left为0

//无缝滚动,

if (num == ul.children.length - 2) {

ul.style.left = 0;

num = 0;

}

num++;

animate(ul, -num * boxWidth);

circle++;

//若果circle=4 说明走到了我们克隆的图片了

if (circle == ol.children.length) {

circle = 0;

}

//调用函数

circleChange();

})

//8-左侧按钮点击事件

leftBtn.addEventListener('click', function () {

//如果走到了最后一张复制的图片 此时我们的ul要快速的复原left为0

//无缝滚动,

if (num == 0) {

num = ul.children.length - 1;

ul.style.left = -num * boxWidth + 'px';

}

num--;

animate(ul, -num * boxWidth);

circle--;

//若果circle<0 说明走到了我们克隆的图片了

// if (circle <0) {

//   circle = ol.children.length-1;

// }

//上面注释的代码改为三元表达式

circle = circle < 0 ? ol.children.length - 1 : circle;

//调用函数

circleChange();

});

function circleChange() {

//先清除其余小圆圈的类名

for (var i = 0; i < ol.children.length; i++) {

ol.children[i].className = '';

}

//留下当前的小圆圈的类名

ol.children[circle].className = 'current';

}

//9-自动播放功能

var timer = setInterval(function () {

//手动调用点击事件

rightBtn.click();

}, 2000);

///

//动画函数

function animate(obj, target, callback) {

//先清除以前的定时器 只保留当前的一个定时器

clearInterval(obj.timer);

obj.timer = setInterval(function () {

//步长值写到定时器的里面

//把我们歩长值改为整数 不要出现小数点

var step = (target - obj.offsetLeft) / 10;

step = step > 0 ? Math.ceil(step) : Math.floor(step);

if (obj.offsetLeft == target) {

//停止动画 本质是停止定时器

clearInterval(obj.timer);

//回调函数写到定时器结束里面

if (callback) {

//调回函数

callback();

}

}

obj.style.left = obj.offsetLeft + step + 'px';

}, 15)

}

</script>

效果如图

JS简单实现京东网页轮播图相关推荐

  1. 原生JS仿造华为商城案例-实现了简单页面-两种轮播图思路的实现-动态展示数据

    文章目录 功能简介 项目准备 项目说明 方案一:源代码 CSS样式 HTML结构 JS逻辑 方案二:源代码 CSS样式 HTML结构 JS逻辑 功能简介 页面展示 该项目功能实现: 无限滚动轮播图 j ...

  2. 【JavaScript】缓动动画、网页轮播图

    缓动动画 动画函数封装 1.1 动画实现原理 缓动动画 1.1 缓动效果原理 1.2 动画函数多个目标值之间移动 1.3 动画函数添加回调函数 1.4 动画函数封装到单独JS文件里面 案例:京东侧边栏 ...

  3. Bootstrap练习:京东商城轮播图

    练习:京东商城的一个轮播图效果,可以自动切换图片和点击切换图片,主要运用了Bootstrap的Carousel插件与js插件等知识内容,练习源文件下面有下载链接. 目录 前言 一.练习 1.目标图: ...

  4. web前端html图片轮播,如何使用LayUI实现网页轮播图_WEB前端开发,layui,轮播图

    关于html5中自定义属性的介绍_WEB前端开发 html5为我们提供了以[data-]为前缀定义需要的属性即可设置自定义属性,如[ ].本篇文章介绍了使用LayUI实现网页轮播图的方法,具有一定的参 ...

  5. layui的轮播图片自适应大小_如何使用LayUI实现网页轮播图

    详细内容 本篇文章介绍了使用LayUI实现网页轮播图的方法,具有一定的参考价值,希望对学习Layui的朋友有帮助!想要用layui写出来轮播图,需要先下载layui的文档,下载到电脑上就可以了,随便保 ...

  6. Javascript-API-BOM、动画函数、网页轮播图、节流阀、筋斗云、固定侧边栏返回顶部案例

    动画实现原理 核心原理:通过定时器 setInterval() 不断移动盒子位置. 实现步骤: 获得盒子当前位置 让盒子在当前位置加上1个移动距离 利用定时器不断重复这个操作 加一个结束定时器的条件 ...

  7. 【JavaScript】网页轮播图

    目录 HTML搭建 功能实现 小圆圈事件 左右按钮事件 自动播放 轮播图也叫焦点图,是网页中比较常见的网页特效. 功能: 鼠标经过轮播图模块,左右按钮显示,离开隐藏左右按钮. 点击右侧按钮一次,图片往 ...

  8. html js轮播图无白链接,JavaScript:100%原生js实现左右切换的轮播图(无延迟加载)...

    简介这篇文章主要介绍了JavaScript:100%原生js实现左右切换的轮播图(无延迟加载)以及相关的经验技巧,文章约11114字,浏览量505,点赞数3,值得参考! *{ margin:0; pa ...

  9. 网页轮播图+缓动效果

    实现某宝上面的网页轮播图+缓动效果 代码和注释: <!DOCTYPE html> <html lang="en"><head><meta ...

最新文章

  1. 58到家技术总监沈剑:有选择的借鉴才能不走弯路
  2. Codeforces 235B Let's Play Osu!
  3. 听说现在都考这些React面试题
  4. [BZOJ 1072] 排列perm
  5. HDU1878-欧拉回路(入门题+并查集)
  6. mysql 严格模式_MySQL 开启/关闭 严格模式(Strict Mode)
  7. python银行家算法_Linux 死锁概念与银行家算法python 实现
  8. 【Flutter】基础组件【06】Image
  9. 两个常见小故障的修复
  10. 银河麒麟Linux系统安装谷歌浏览器
  11. 教你如何写第一个jsp页面
  12. ubuntu安装git失败解决办法
  13. angr源码分析——cle.Loader类
  14. 用快递单号快速查询物流退回件的单号
  15. Linux赋予文件权限 最高权限 可执行权限
  16. python学习笔记之pdf文档提取
  17. 前端AI语音方面的实现
  18. 关于oracle怎么保证读一致性
  19. UE4数字孪生 OD线开发浅析
  20. Ubuntu系统开启Intel千兆网卡SR-IOV

热门文章

  1. web前端需要学习什么?需要掌握什么技术
  2. 舆情智慧决策闭环管理平台
  3. WhatsApp拓客云控系统-SendWS群控管理后台功能介绍(三):WhatsApp多账号管理记录查询
  4. 自动驾驶轨迹预测论文阅读(二)TPNet: Trajectory Proposal Network for Motion Prediction
  5. 【python】爬虫入门:代理IP池的使用、文件的写入与网易云爬取时的注意事项
  6. VMware Workstation虚拟机装Win7详细高清图文教程
  7. 关于PostMan发送请求获得响应
  8. Taro 小程序开发大型实战(三):实现微信和支付宝多端登录
  9. 出生日期正则表达式丨出生日期年月日正则如何表达?
  10. java解压两层zip文件_Java解压缩zip - 解压缩多个文件或文件夹实例