本文在前一篇js焦点轮播效果的基础上,使用函数递归实现图片滑动切换,采用辅助图片实现图片无限滚动等技巧,具体内容如下

假如前后不加一张图片的话,图片顺序为[1,2,3,4,5],当你点到第 5 张图时,再点“下一张”(就是要回到第 1 张图那里),这时候,你想象下那个画面,会一瞬间“刷刷刷”地闪过中间那几张图片才能到第 1 张图那里,这样,太难看了吧。
为了解决这个问题,所以要在第 5 张那里加多一张 1 图,图片顺序为 [1,2,3,4,5,1]。当你在第 5 张图点下一张时,图片滚动顺序是这样的:5 ----> (1) ----> 1,(注:中间的那个 1 是指后面多加的 1 图),一旦到了那个“多加的 1 图”,轮播就会瞬间回到 前面的 1 图那里。
因为都是“1 图”,所以视觉上不会有那个一次“刷刷刷”闪过好几张图片的效果。
效果如图:
实现代码:
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
<style type="text/css">
*{
margin: 0;
padding: 0;
list-style: none;
text-decoration: none;
}
.wrap{
width: 490px;
height: 170px;
margin: 100px auto;
border: 1px solid #000000;
position: relative;
overflow: hidden;
}
#pic{
width: 3430px;
position: absolute;
}
#pic li{
float: left;
height: 170px;
}
#list{
position: absolute;
bottom: 10px;
left:150px ;
}
#list li{
float: left;
width: 15px;
height: 15px;
background: #fff;
margin: 0 10px;
border-radius: 50%;
cursor: pointer;
}
#list .on{
background: #e27a00;
}
.Prev{
top: 30px;
left: 0;
}
.Next{
top: 30px;
right: 0;
}
.Prev,.Next{
position: absolute;
font-size: 80px;
font-weight: bold;
color:#fff ;
-webkit-transition: all 0.35s ease-in-out
}
.Next:hover,
.Prev:hover{
background: #ccc;
background: rgba(204, 204, 204, 0.4);
}
</style>
<script type="text/javascript">
window.onload=function(){
var wrap=document.getElementById('wrap');
var pic=document.getElementById('pic');
var Li=document.getElementById('list').getElementsByTagName('li');
var prev=document.getElementById('Prev');
var next=document.getElementById('Next');
var animated=false;
var index=0;
var timer=null;
next.onclick=function(){
if(animated){//如果图片正在滚动时要返回,否则index会变化
return;
}
else{
index++;
if(index>=Li.length){
index=0;
}
}
showlist();
if(animated == false){//if(!animated)
animate(-490);
}
}
prev.onclick=function(){
if(animated){
return;
}
else{
index--;
if(index<=0){
index=Li.length-1;
}
}
showlist();
if(!animated){//判断其是否滚动完
animate(490);
}
}
for(var i=0;i<Li.length;i++){
Li[i].num=i;
Li[i].onclick=function(){
if(this.className=="on"){
return;
}
var offset = -490*(this.num-index);
if(!animated){
animate(offset);
}
index=this.num;
showlist();
}
}
//图片变换
function animate(offset){
animated=true;
var newLeft=parseInt(pic.style.left) + offset;
var time=300//位移总时间
var interval=10;//位移间隔时间
var speed=offset/(time/interval);//每次位移量
function go(){
if((speed < 0 && parseInt(pic.style.left) > newLeft )|| (speed > 0 && parseInt(pic.style.left) < newLeft)){
pic.style.left = parseInt(pic.style.left) + speed + 'px';
setTimeout(go,interval);
}else{
animated=false;
pic.style.left= newLeft + 'px';
if(newLeft > -490){
pic.style.left = -2450 + 'px';
}
if(newLeft < -2450){
pic.style.left = -490 + 'px';
}
}
}
go();
}
//圆点变换
function showlist(){
for(var i=0;i<Li.length;i++){
Li[i].className="";
}
Li[index].className="on";
}
//自动播放
function play(){
timer=setInterval(function(){
next.onclick();
},2000);
}
function stop(){
clearInterval(timer);
}
wrap.onmouseover=stop;
wrap.onmouseout=play;
play();
}
</script>
</head>
<body>
<div class="wrap" id="wrap">
<ul id="pic" style="left: -490px;">
<li><a href="#"><img src="/54111d7d00018ba604900170.jpg" alt="5"/></a></li>
<li><a href="#"><img src="/54111cd9000174cd04900170.jpg" alt="1"/></a></li>
<li><a href="#"><img src="/54111dac000118af04900170.jpg" alt="2"/></a></li>
<li><a href="#"><img src="/54111d9c0001998204900170.jpg" alt="3"/></a></li>
<li><a href="#"><img src="/54111d8a0001f41704900170.jpg" alt="4"/></a></li>
<li><a href="#"><img src="/54111d7d00018ba604900170.jpg" alt="5"/></a></li>
<li><a href="#"><img src="/54111cd9000174cd04900170.jpg" alt="1"/></a></li>
</ul>
<ul id="list">
<li class="on"></li>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
<a href="javascript:;" class="Prev" id="Prev"><</a>
<a href="javascript:;" class="Next" id="Next">></a>
</div>
</body>
</html>
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# js焦点轮播效果
# js焦点轮播
# js图片轮播
# 原生Js 实现的简单无缝滚动轮播图的示例代码
# 如何使用JavaScript实现无缝滚动自动播放轮播图效果
# JavaScript基于面向对象实现的无缝滚动轮播示例
# javascript实现异形滚动轮播
# JS实现排行榜文字向上滚动轮播效果
# js轮播图无缝滚动效果
# JavaScript 轮播图和自定义滚动条配合鼠标滚轮分享代码贴
# JS简单的轮播的图片滚动实例
# 原生js实现轮播图的示例代码
# JavaScript滚动轮播图制作原理详解
# 到第
# 加多
# 几张
# 递归
# 多加
# 下一张
# 都是
# 瞬间
# 就会
# 会有
# 看了
# 是这样
# 基础上
# 是指
# 你在
# 当你
# 要在
# 如图
# 要回
# 在前
相关文章:
青浦网站制作公司有哪些,苹果官网发货地是哪里?
中山网站制作网页,中山新生登记系统登记流程?
制作企业网站建设方案,怎样建设一个公司网站?
C#怎么创建控制台应用 C# Console App项目创建方法
制作网页的网站有哪些,电脑上怎么做网页?
如何快速查询域名建站关键信息?
宿州网站制作公司兴策,安徽省低保查询网站?
C#怎么使用委托和事件 C# delegate与event编程方法
西安专业网站制作公司有哪些,陕西省建行官方网站?
如何快速搭建高效WAP手机网站?
如何自定义建站之星网站的导航菜单样式?
建站之星五站合一营销型网站搭建攻略,流量入口全覆盖优化指南
IOS倒计时设置UIButton标题title的抖动问题
如何快速搭建高效可靠的建站解决方案?
一键网站制作软件,义乌购一件代发流程?
Python路径拼接规范_跨平台处理说明【指导】
代刷网站制作软件,别人代刷火车票靠谱吗?
猪八戒网站制作视频,开发一个猪八戒网站,大约需要多少?或者自己请程序员,需要什么程序员,多少程序员能完成?
如何在阿里云虚拟服务器快速搭建网站?
建站一年半SEO优化实战指南:核心词挖掘与长尾流量提升策略
高防服务器如何保障网站安全无虞?
如何在Windows虚拟主机上快速搭建网站?
建站之星安装后如何自定义网站颜色与字体?
Python多线程使用规范_线程安全解析【教程】
ppt在线制作免费网站推荐,有什么下载免费的ppt模板网站?
青岛网站建设如何选择本地服务器?
电脑免费海报制作网站推荐,招聘海报哪个网站多?
如何快速辨别茅台真假?关键步骤解析
建站之星如何配置系统实现高效建站?
网站专业制作公司有哪些,做一个公司网站要多少钱?
大连企业网站制作公司,大连2025企业社保缴费网上缴费流程?
建站之星×万网:智能建站系统+自助建站平台一键生成
ppt制作免费网站有哪些,ppt模板免费下载网站?
如何在建站主机中优化服务器配置?
如何通过虚拟主机快速完成网站搭建?
企业网站制作费用多少,企业网站空间一般需要多大,费用是多少?
如何确认建站备案号应放置的具体位置?
css网站制作参考文献有哪些,易聊怎么注册?
如何快速搭建个人网站并优化SEO?
网站制作公司排行榜,抖音怎样做个人官方网站
香港服务器如何优化才能显著提升网站加载速度?
如何在服务器上三步完成建站并提升流量?
网页设计与网站制作内容,怎样注册网站?
建站之星客服服务时间及联系方式如何?
官网自助建站平台指南:在线制作、快速建站与模板选择全解析
北京企业网站设计制作公司,北京铁路集团官方网站?
制作网站外包平台,自动化接单网站有哪些?
如何快速配置高效服务器建站软件?
详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)
如何批量查询域名的建站时间记录?
*请认真填写需求信息,我们会在24小时内与您取得联系。