项目源代码下载地址:轮播图

以下为项目实现效果:(由于gif太大,所以只上传一张图片,但效果完全能实现,经测试,在ie各版本浏览器及chrome,firefox等浏览器中均能实现效果,可以实现点击切换图片,无缝滚动和非无缝滚动两种效果)

 

页面源代码:index.html(以下注释自行切换,为了项目清晰,所以用了四个js文件,分别实现不同的效果)

<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>轮播图</title>
<link rel="stylesheet" href="css/index.css">
</head>
<body>
<div class="slider">
<div class="slider-inner" id="slider_inner">
<button class="btn-left" id="btn_left">&lt;</button>
<button class="btn-right" id="btn_right">&gt;</button>
</div>
</div>
<script src="js/jquery-1.12.4.js"></script>
<script src="js/jquery1.js"></script>
<!--<script src="js/jquery2.js"></script>-->
<!--<script src="js/js1.js"></script>-->
<!--<script src="js/js2.js"></script>-->
</body>
</html>

index.css(以下为项目css文件,解决了ie低版本浏览器的兼容问题,不然的话会出现一些问题)

/**
*Created by xxc on 2019/4/28
*/
*{
margin:;
padding:;
}
a{
display: block;
}
li{
list-style: none;
vertical-align: middle;
}
img{
display: block;//兼容ie
border-width:;//兼容ie
}
.slider{
width: 730px;
height: 454px;
margin: 20px auto;
border: 1px solid #ccc;
padding: 5px;
}
.slider .slider-inner{
width: 100%;
height: 100%;
overflow: hidden;
position: relative;
}
.slider .slider-inner ul{
width: 800%;
position: absolute;
left:;
top:;
}
.slider .slider-inner ul li{
float: left;
display: block;
}
.slider .slider-indicator{
position: absolute;
right: 50px;
bottom: 20px;
z-index:;
}
.slider .slider-indicator i{
display: inline-block;
width: 20px;
height: 20px;
text-align: center;
line-height: 20px;
background-color: #fff;
cursor: pointer;
font-style: normal;
margin-left: 5px;
}
.slider .slider-indicator i.current,
.slider .slider-indicator i:hover{
background-color: orange;
}
.slider .slider-inner button{
width: 20px;
height: 40px;
background-color: #aeb5ad;
background-color: rgba(0,0,0,.3);
position: absolute;
top: 50%;
margin-top: -20px;
z-index:;
border: none;
outline: none;
color: #fff;
cursor: pointer;
}
.slider .slider-inner button.btn-right{
right:;
}

以下为js的四种实现方法:

js1.js代码:

/**
*Created by xxc on 2019/4/28
*/
var images = [
"images/1.jpg",
"images/2.jpg",
"images/3.jpg",
"images/4.jpg",
"images/5.jpg",
"images/6.jpg"]
function $(id) {
return document.getElementById(id);
}
function getFirstElementByParent(parent) {
if(parent.firstElementChild){
return parent.firstElementChild;
}else{
var ele=parent.firstChild;
while (ele&&ele.nodeType!==1){
ele=ele.nextSibling;
}
return ele;
}
}
window.onload = function () { function slider(images,speed,imgWidth) {
var ul = document.createElement('ul');
ul.setAttribute('id','slider_list');
for(var j = 0;j<images.length;j++){
var li = document.createElement('li');
var a = document.createElement('a');
var img = document.createElement('img');
img.setAttribute('src',images[j]);
a.appendChild(img);
li.appendChild(a);
ul.appendChild(li);
} $("slider_inner").appendChild(ul);
var div = document.createElement('div');
div.setAttribute('class','slider-indicator');
div.setAttribute('id','slider_indicator');
for(var j = 0;j<images.length;j++){
var i = document.createElement('i');
i.innerHTML = j+1;
div.appendChild(i);
}
getFirstElementByParent(div).setAttribute('class','current');
$("slider_inner").appendChild(div); var isquares = $("slider_indicator").getElementsByTagName("i");
var timer=null,i=0;
function animate(){
i--;
if(i<-(images.length-1)){
i=0;
}
$("slider_list").style.left = i*imgWidth+"px";
for(var j = 0;j<isquares.length;j++){
isquares[j].removeAttribute('class','');
}
isquares[-i].setAttribute('class','current');
}
timer = setInterval(animate,speed); for(var k = 0;k<isquares.length;k++){
isquares[k].index = k+1;
isquares[k].onmouseover = function () {
clearInterval(timer);
for(var j = 0;j<isquares.length;j++){
isquares[j].removeAttribute('class','');
}
this.setAttribute('class','current');
i=-(this.index-1);
$("slider_list").style.left = i*imgWidth+"px";
timer = setInterval(animate,speed);
}
}
$("btn_left").onclick = function () {
i++;
if(i>0){
i=-(images.length-1);
}
for(var j = 0;j<isquares.length;j++){
isquares[j].removeAttribute('class','');
}
isquares[-i].setAttribute('class','current');
$("slider_list").style.left = i*imgWidth+"px";
}
$("btn_right").onclick = function () {
i--;
if(i<-(images.length-1)){
i=0;
}
for(var j = 0;j<isquares.length;j++){
isquares[j].removeAttribute('class','');
}
isquares[-i].setAttribute('class','current');
$("slider_list").style.left = i*imgWidth+"px";
}
$("slider_inner").onmouseover = function () {
clearInterval(timer);
}
$("slider_inner").onmouseout = function () {
timer = setInterval(animate,speed);
}
}
//images:图片数据
//2000:轮播速度
//730:图片宽度
slider(images,2000,730); }

js2.js代码:

/**
*Created by xxc on 2019/4/28
*/
var images = [
"images/1.jpg",
"images/2.jpg",
"images/3.jpg",
"images/4.jpg",
"images/5.jpg",
"images/6.jpg"]
function $(id) {
return document.getElementById(id);
}
function getFirstElementByParent(parent) {
if(parent.firstElementChild){
return parent.firstElementChild;
}else{
var ele=parent.firstChild;
while (ele&&ele.nodeType!==1){
ele=ele.nextSibling;
}
return ele;
}
}
window.onload = function () {
var length = images.length
function animate(element,target) {
var now = element.offsetLeft;
var step = now > target ? -10 : 10;
var timers = setInterval(function () {
now += step;
if(Math.abs(now-target)<=Math.abs(step)){
clearInterval(timers);
element.style.left = target+"px";
}else {
element.style.left = now+"px";
}
},10)
} function slider(images,speed,imgWidth) {
var ul = document.createElement('ul');
ul.setAttribute('id','slider_list');
for(var j = 0;j<length;j++){
var li = document.createElement('li');
var a = document.createElement('a');
var img = document.createElement('img');
img.setAttribute('src',images[j]);
a.appendChild(img);
li.appendChild(a);
ul.appendChild(li);
}
ul.appendChild(getFirstElementByParent(ul).cloneNode(true));
$("slider_inner").appendChild(ul);
var div = document.createElement('div');
div.setAttribute('class','slider-indicator');
div.setAttribute('id','slider_indicator');
for(var j = 0;j<images.length;j++){
var i = document.createElement('i');
i.innerHTML = j+1;
div.appendChild(i);
}
getFirstElementByParent(div).setAttribute('class','current');
$("slider_inner").appendChild(div); var isquares = $("slider_indicator").getElementsByTagName("i");
var timer=null,i=0;
function autoPlay(){
if(i==-length){
$("slider_list").style.left = 0;
i=0;
}
i--;
animate($("slider_list"),i*imgWidth);
for(var j = 0;j<length;j++){
isquares[j].removeAttribute('class','');
}
if(i==-length){
isquares[0].setAttribute('class','current');
}else {
isquares[-i].setAttribute('class','current');
}
}
timer = setInterval(autoPlay,speed); for(var k = 0;k<isquares.length;k++){
isquares[k].index = k+1;
isquares[k].onmouseover = function () {
clearInterval(timer);
for(var j = 0;j<isquares.length;j++){
isquares[j].removeAttribute('class','');
}
this.setAttribute('class','current');
i=-(this.index-1);
$("slider_list").style.left = i*imgWidth+"px";
timer = setInterval(autoPlay,speed);
}
}
$("btn_left").onclick = function () {
clearInterval(timer);
if(i==0){
i=-length;
$("slider_list").style.left = i*imgWidth+"px";
}
for(var j = 0;j<isquares.length;j++){
isquares[j].removeAttribute('class','');
}
i++;
isquares[-i].setAttribute('class','current');
animate($("slider_list"),i*imgWidth)
}
$("btn_right").onclick = function () {
clearInterval(timer);
if(i==-length){
i=0;
$("slider_list").style.left = 0;
}
for(var j = 0;j<isquares.length;j++){
isquares[j].removeAttribute('class','');
}
i--;
if(i==-length){
animate($("slider_list"),i*imgWidth)
isquares[0].setAttribute('class','current');
}else {
isquares[-i].setAttribute('class','current');
animate($("slider_list"),i*imgWidth)
}
}
$("slider_inner").onmouseover = function () {
clearInterval(timer);
}
$("slider_inner").onmouseout = function () {
timer = setInterval(autoPlay,speed);
}
}
//images:图片数据
//2000:轮播速度
//730:图片宽度
slider(images,2000,730); }

jquery1.js代码:

/**
*Created by xxc on 2019/4/28
*/
var images = [
"images/1.jpg",
"images/2.jpg",
"images/3.jpg",
"images/4.jpg",
"images/5.jpg",
"images/6.jpg"];
$(function () {
function animate(images,speed,imgWidth) {
var length = images.length;
$("#slider_inner").append("<ul id='slider_list'></ul><div id='slider_indicator' class='slider-indicator'></div>");
for(var i = 0;i<images.length;i++){
$("#slider_inner #slider_list").append("<li><a href='#'><img src='"+images[i]+"'></a></li>")
$("#slider_indicator").append("<i>"+(i+1)+"</i>");
}
$("#slider_indicator i:eq(0)").addClass("current"); var timer = null,k=0;
function autoPlay(){
k--;
if(k<-(length-1)){
k=0;
}
$("#slider_list").css('left',k*imgWidth+'px');
$("#slider_indicator i:eq("+(-k)+")").addClass("current").siblings("i").removeClass("current");
}
timer = setInterval(autoPlay,speed)
$("#slider_indicator i").mouseover(function () {
clearInterval(timer);
var $this = $(this);
$("#slider_list").css('left',-($this.index())*imgWidth+'px');
k=-($this.index());
$this.addClass("current").siblings().removeClass("current");
timer = setInterval(autoPlay,speed)
})
$("#btn_left").click(function () {
k++;
if(k>0){
k=-(length-1);
}
$("#slider_list").css('left',k*imgWidth+'px');
$("#slider_indicator i:eq("+(-k)+")").addClass("current").siblings("i").removeClass("current");
})
$("#btn_right").click(function () {
k--;
if(k<-(length-1)){
k=0;
}
$("#slider_list").css('left',k*imgWidth+'px');
$("#slider_indicator i:eq("+(-k)+")").addClass("current").siblings("i").removeClass("current");
})
$("#slider_inner").mouseover(function () {
clearInterval(timer);
}).mouseout(function () {
timer = setInterval(autoPlay,speed)
})
}
animate(images,2000,730);
})

jquery2.js代码

/**
*Created by xxc on 2019/4/28
*/
var images = [
"images/1.jpg",
"images/2.jpg",
"images/3.jpg",
"images/4.jpg",
"images/5.jpg",
"images/6.jpg"];
$(function () {
function animates(images,speed,imgWidth) {
var length = images.length;
$("#slider_inner").append("<ul id='slider_list'></ul><div id='slider_indicator' class='slider-indicator'></div>");
for(var i = 0;i<images.length;i++){
$("#slider_inner #slider_list").append("<li><a href='#'><img src='"+images[i]+"'></a></li>")
$("#slider_indicator").append("<i>"+(i+1)+"</i>");
}
$("#slider_indicator i:eq(0)").addClass("current");
$("#slider_inner #slider_list").append("<li><a href='#'><img src='"+images[0]+"'></a></li>") var timer = null,k=0;
function autoPlay(){
k--;
$("#slider_list").animate({'left':k*imgWidth+'px'},1000);
if(k==-length){
$("#slider_indicator i:eq(0)").addClass("current").siblings("i").removeClass("current");
$("#slider_list").animate({'left':0},0);
k=0
}else {
$("#slider_indicator i:eq("+(-k)+")").addClass("current").siblings("i").removeClass("current");
}
}
timer = setInterval(autoPlay,speed)
$("#slider_inner").mouseover(function () {
clearInterval(timer);
}).mouseout(function () {
timer = setInterval(autoPlay,speed)
})
$("#slider_indicator i").mouseover(function () {
clearInterval(timer);
var $this = $(this);
$("#slider_list").css('left',-($this.index())*imgWidth+'px');
k=-($this.index());
$this.addClass("current").siblings().removeClass("current");
timer = setInterval(autoPlay,speed);
})
$("#btn_left").click(function () {
k++;
if(k==1){
$("#slider_list").animate({'left':-length*imgWidth+'px'},0);
$("#slider_list").animate({'left':-(length-1)*imgWidth+'px'},1000);
$("#slider_indicator i:eq("+(length-1)+")").addClass("current").siblings("i").removeClass("current");
k=-(length-1);
}else {
$("#slider_list").animate({'left':k*imgWidth+'px'},1000);
$("#slider_indicator i:eq("+(-k)+")").addClass("current").siblings("i").removeClass("current");
}
})
$("#btn_right").click(function () {
k--;
$("#slider_list").animate({'left':k*imgWidth+'px'},1000);
if(k==-length){
$("#slider_indicator i:eq(0)").addClass("current").siblings("i").removeClass("current");
$("#slider_list").animate({'left':0},0);
k=0
}else {
$("#slider_indicator i:eq("+(-k)+")").addClass("current").siblings("i").removeClass("current");
}
}) }
animates(images,2000,730);
})

轮播图采用js、jquery实现无缝滚动和非无缝滚动的四种案例实现,兼容ie低版本浏览器的更多相关文章

  1. 高仿阴阳师官网轮播图效果的jQuery插件

    代码地址如下:http://www.demodashi.com/demo/12302.html 插件介绍 这是一个根据阴阳师官网的轮播效果所扒下来的轮播插件,主要应用于定制个性化场景,目前源码完全公开 ...

  2. 轮播图原生js实现和jquery实现和js面向对象方式实现

    原生JS实现 html: <!DOCTYPE html> <html lang="en"> <head> <meta charset=&q ...

  3. 简单介绍无限轮播图,js源代码

    无限轮播图js源代码,今天介绍一下用js简单的编写无限轮播图 <!DOCTYPE html> <html>   <head>     <meta charse ...

  4. 无限循环轮播图之JS部分(原生JS)

    JS逻辑与框架调用, <script type="text/javascript"> var oBox = document.getElementById('box') ...

  5. jquery里面的attr和css来设置轮播图竟然效果不一致

    /*封装$*/ // window.$=HTMLElement.prototype.$=function(selector){ // var elems=(this==window?document: ...

  6. 原生js实现响应式轮播图,支持电脑端点击切图,手机端滑动切图

    轮播图的实现原理并不难,但是步骤有些繁琐.最近练习了一个轮播图,大部分是跟着网上的教程写的,然后自己做了一点兼容ie8的修改,加了点击切换图片的特效和手机端的滑动特效,让这个轮播图可以在响应式的网站中 ...

  7. 移动web——bootstrap响应式轮播图

    基本介绍 1.bootstrap有轮播图的模板,我们只需要改动下就行. 2.这里我们将介绍桌面版本和移动版本最后是综合版本 桌面版本 1.这里的图片设置是有窍门的,不再去添加img标签,而是作为a标签 ...

  8. 第124天:移动web端-Bootstrap轮播图插件使用

    Bootstrap JS插件使用 > 对于Bootstrap的JS插件,我们只需要将文档实例中的代码粘到我们自己的代码中> 然后作出相应的样式调整 Bootstrap中轮播图插件叫作Car ...

  9. Bootstrap中轮播图

    Bootstrap中轮播图插件叫作Carousel,为了清晰的表明每个标签在这里是什么意思,我把解释写在了下面的代码中. <!-- 以下容器就是整个轮播图组件的整体, 注意该盒子必须加上 cla ...

随机推荐

  1. B+树和LSM比较(转)

    出处:https://blog.csdn.net/u013928917/article/details/75912045 B+树和LSM比较 在关系型数据库mysql中普遍使用B+树作为索引,在实际中 ...

  2. mysql学习之路_基础知识

                    Mysql php阶段将数据库分为三个阶 基础阶段: mysql数据库的基本操作(增删改查),以及一些高级操作(视图,触发器,函数,存储过程等),PHP操作没有sql数 ...

  3. php 微信登录 公众号 获取用户信息 微信网页授权

    php 微信登录 公众号 获取用户信息 微信网页授权 先自己建立两个文件: index.php  和  getUserInfo.php index.php <?php //scope=snsap ...

  4. HDU-3608 最长回文

    HDU-3608 最长回文 题面 Problem Description 给出一个只由小写英文字符a,b,c...y,z组成的字符串S,求S中最长回文串的长度. 回文就是正反读都是一样的字符串,如ab ...

  5. Zookeeper C++编程实战之主备切换

    默认zookeeper日志输出到stderr,可以调用zoo_set_log_stream(FILE*)设置输出到文件中还可以调用zoo_set_debug_level(ZooLogLevel)控制日 ...

  6. FPGA之初认识

    什么是FPGA FPGA(Field-Programmable Gate Array),即现场可编程门阵列 .看到编程两个字码农就笑了,不就是编程嘛,那可是我们的强项 .且慢,此编程非彼编程 .一定要 ...

  7. bzoj2004(矩阵快速幂,状压DP)

    每个长度为p的区间都必须出现k次1,数据又很小,我们使用状压. dp[i][j]->dp[i+1][j'],dp[i][j]表示当前考虑到了第i个车站,包括第i个其后的p个的状态(有车停或没车停 ...

  8. Job Interview: Why Only 3 Questions Really Matter

    Even for the most fearless amongst us, job interviews can be nerve wracking. In order to give us the ...

  9. kepware http接口 c语言 ruby

    读取某变量的值 require 'uri' require 'net/http' url = URI("http://127.0.0.1:39321/iotgateway/read?ids= ...

  10. 20155326刘美岑 2016-2017-2 《Java程序设计》第二周学习总结

    20155326刘美岑 2016-2017-2 <Java程序设计>第二周学习总结 教材学习内容总结 教材第三章主要讲解的是基础语法,主要包括认识类型与变量.学习运算符的基本使用.了解类型 ...