成语| 古诗大全| 扒知识| 扒知识繁体

当前位置:首页 > 趣味生活

js轮播图实现简单代码

Q1:js代码实现banner图片轮播

这是我以前写过的一个,样式你改一下就OK了












































<script type="text/javascript" src="https://www.bazhishi.com/templates/runlinjinguan/js/flash.js"></script>
<script type="text/javascript">
$("#i_focus_btn").find("li").eq(0).addClass("i_cur");
</script>

引用的js文件
// JavaScript Document
//flash js
$(document).ready(function () {
var i_curIndex = 0;
var beauBeauSlide; //函数对象
var i_curID = 0; //取得鼠标下方的对象ID
var pictureID = 0; //索引ID
$("#i_focus_piclist li").eq(0).show(); //默认
autoScroll();
$("#i_focus_btn li").hover(function (e) {
StopScrolll();
$("#i_focus_btn li").removeClass("i_cur") //所有的li去掉当前的样式加上正常的样式
$(this).addClass("i_cur"); //而本身则加上当前的样式去掉正常的样式
i_curID = $(this).attr("id"); //取当前元素的ID
pictureID = $("#i_focus_btn li").index(this);// i_curID.substring(i_curID.length - 1); //取最后一个字符
$("#i_focus_piclist li").eq(pictureID).fadeIn("slow"); //本身显示
$("#i_focus_piclist li").not($("#i_focus_piclist li")[pictureID]).hide(); //除了自身别的全部隐藏
$("#i_focus_tx li").hide();
$("#i_focus_tx li").eq(pictureID).show();
},
function () {
//当鼠标离开对象的时候获得当前的对象的ID以便能在启动自动时与其同步
i_curID = $(this).attr("id"); //取当前元素的ID
pictureID = i_curID.substring(i_curID.length - 1); //取最后一个字符
i_curIndex = pictureID;
autoScroll();
});
//自动滚动
function autoScroll() {
var myNubli = $("#i_focus_btn li").size();
if (myNubli > 1) {
$("#i_focus_btn li:last").removeClass("i_cur");
$("#i_focus_tx li:last").hide();
$("#i_focus_btn li").eq(i_curIndex).addClass("i_cur");
$("#i_focus_btn li").eq(i_curIndex - 1).removeClass("i_cur");
$("#i_focus_tx li").eq(i_curIndex).show();
$("#i_focus_tx li").eq(i_curIndex - 1).hide();
$("#i_focus_piclist li").eq(i_curIndex).fadeIn("slow");
$("#i_focus_piclist li").eq(i_curIndex - 1).hide();
i_curIndex++;
i_curIndex = i_curIndex >= myNubli ? 0 : i_curIndex;
beauBeauSlide = setTimeout(autoScroll, 5000);
}
}
function StopScrolll() //当鼠标移动到对象上面的时候停止自动滚动
{
clearTimeout(beauBeauSlide);
}
});
//第二个渐隐幻灯开始
var defaultOpts = {
interval: 3000,
fadeInTime: 800,
fadeOutTime: 500
};
var _titles = $("ul.slide-txt li");
var _titles_bg = $("ul.op li");
var _bodies = $("ul.slide-pic li");
var _count = _titles.length;
var _current = 0;
var _intervalID = null;
var stop = function () {
window.clearInterval(_intervalID);
};
var slide = function (opts) {
if (opts) {
_current = opts.current0;
} else {
_current = (_current >= (_count - 1)) ? 0 : (++_current);
};
_bodies.filter(":visible").fadeOut(defaultOpts.fadeOutTime,
function () {
_bodies.eq(_current).fadeIn(defaultOpts.fadeInTime);
_bodies.removeClass("cur").eq(_current).addClass("cur");
});
_titles.removeClass("cur").eq(_current).addClass("cur");
_titles_bg.removeClass("cur").eq(_current).addClass("cur");
}; //endof slide
var go = function () {
stop();
_intervalID = window.setInterval(function () {
slide();
},
defaultOpts.interval);
}; //endof go
var itemMouseOver = function (target, items) {
stop();
var i = $.inArray(target, items);
slide({
current: i
});
}; //endof itemMouseOver
_titles.hover(function () {
if ($(this).attr(class) != cur) {
itemMouseOver(this, _titles);
} else {
stop();
}
},
go);
//_titles_bg.hover(function() { itemMouseOver(this, _titles_bg); }, go);
_bodies.hover(stop, go);
go();
var slideX = {
_this: $(.catalog .imgbox),
_btnLeft: $(.catalog .left),
_btnRight: $(.catalog .right),
init: function () {
slideX._btnLeft.click(slideX.slideLeft);
slideX._btnRight.click(slideX.slideRight);
},
slideLeft: function () {
slideX._btnLeft.unbind(click, slideX.slideLeft);
for (i = 0; i < 2; i++) {
slideX._this.find(li:last).prependTo(slideX._this);
}
slideX._this.css(marginLeft, -224);
slideX._this.animate({
marginLeft: 0
},
500,
function () {
slideX._btnLeft.bind(click, slideX.slideLeft);
});
return false;
},
slideRight: function () {
slideX._btnRight.unbind(click, slideX.slideRight);
slideX._this.animate({
marginLeft: -224、},
500,
function () {
slideX._this.css(marginLeft, 0);
for (i = 0; i < 2; i++) {
slideX._this.find(li:first).appendTo(slideX._this)
}
slideX._btnRight.bind(click, slideX.slideRight);
});
return false;
}
}
$(document).ready(function () {
slideX.init();
})
$(document).ready(function () {
var newTime = new Date();
var newTime = newTime.getTime();
var $imgTmp = $(#topromotion).find(img:first);
var osrc = https://www.bazhishi.com/aldyjtapi/$imgTmp.attr(src);
$imgTmp.attr(src, osrc + ? + newTime);
});
希望对你有帮助!

Q2:JS实现左右无缝轮播图代码

废话不多说了,直接给大家贴代码了。

无缝轮播图:

无缝轮播图<style>*{margin: 0;padding:0; }ul{list-style: none;}.banner{width: 600px;height: 300px;border: 2px solid #ccc;margin: 100px auto;position: relative;overflow: hidden;}.img{position: absolute;top: 0;left: 0}.img li{float: left;}.num{position: absolute;bottom: 10px;width: 100%;text-align: center;font-size: 0;}.num li{width: 10px;height: 10px;background:rgba(0,0,0,0.5);display: block;border-radius: 100%;display: inline-block;margin: 0 5px;cursor: pointer;}.btn{display: none;}.btn span{display: block;width: 50px;height: 100px;background: rgba(0,0,0,0.6);color: #fff;font-size: 40px;line-height: 100px;text-align: center;cursor:pointer;}.btn .prev{position: absolute;left: 0;top: 50%;margin-top: -50px;}.btn .next{position: absolute;right: 0;top: 50%;margin-top: -50px;}.num .active{background-color: #fff;}</style><script src="http://apps.bdimg.com/libs/jquery/1.8.3/jquery.min.js"></script> 成语| 古诗大全| 扒知识| 扒知识繁体 <body><script>$(function(){var i=0;var timer=null;for (var j = 0; j < $(.img li).length; j++) { //创建圆点$(.num).append(
  • )}$(.num li).first().addClass(active); //给第一个圆点添加样式var firstimg=$(.img li).first().clone(); //复制第一张图片$(.img).append(firstimg).width($(.img li).length*($(.img img).width())); //将第一张图片放到最后一张图片后,设置ul的宽度为图片张数*图片宽度// 下一个按钮$(.next).click(function(){i++;if (i==$(.img li).length) {i=1; //这里不是i=0$(.img).css({left:0}); //保证无缝轮播,设置left值};$(.img).stop().animate({left:-i*600},300);if (i==$(.img li).length-1) { //设置小圆点指示$(.num li).eq(0).addClass(active).siblings().removeClass(active);}else{$(.num li).eq(i).addClass(active).siblings().removeClass(active);}})// 上一个按钮$(.prev).click(function(){i--;if (i==-1) {i=$(.img li).length-2;$(.img).css({left:-($(.img li).length-1)*600});}$(.img).stop().animate({left:-i*600},300);$(.num li).eq(i).addClass(active).siblings().removeClass(active);})//设置按钮的显示和隐藏$(.banner).hover(function(){$(.btn).show();},function(){$(.btn).hide();})//鼠标划入圆点$(.num li).mouseover(function(){var _index=$(this).index();$(.img).stop().animate({left:-_index*600},150);$(.num li).eq(_index).addClass(active).siblings().removeClass(active);})//定时器自动播放timer=setInterval(function(){i++;if (i==$(.img li).length) {i=1;$(.img).css({left:0});};$(.img).stop().animate({left:-i*600},300);if (i==$(.img li).length-1) {$(.num li).eq(0).addClass(active).siblings().removeClass(active);}else{$(.num li).eq(i).addClass(active).siblings().removeClass(active);}},1000)//鼠标移入,暂停自动播放,移出,开始自动播放$(.banner).hover(function(){clearInterval(timer);},function(){timer=setInterval(function(){i++;if (i==$(.img li).length) {i=1;$(.img).css({left:0});};$(.img).stop().animate({left:-i*600},300);if (i==$(.img li).length-1) {$(.num li).eq(0).addClass(active).siblings().removeClass(active);}else{$(.num li).eq(i).addClass(active).siblings().removeClass(active);}},1000)})})</script>

    以上代码是使用js实现的无缝轮播效果,代码比较简单,所以没有给大家注释,如果有疑问欢迎给我留言。

    Q3:简单的JS轮播图代码

    在团队带人,突然被人问到轮播图如何实现,进入前端领域有一年多了,但很久没自己写过,一直是用大牛写的插件,今天就写个简单的适合入门者学习的小教程。当然,轮播图的实现原理与设计模式有很多种,我这里讲的是用面向过程函数式编程去实现,相对于面向对象设计模式,代码难免会显得臃肿冗余。但没有面向对象的抽象却很适合新手理解与学习。已经在BAT的同学看到希望少喷点。另外可以多提意见。

    轮播图的原理:

    一系列的大小相等的图片平铺,利用CSS布局只显示一张图片,其余隐藏。通过计算偏移量利用定时器实现自动播放,或通过手动点击事件切换图片。

    Html布局

    首先父容器container存放所有内容,子容器list存在图片。子容器buttons存放按钮小圆点。

    优化,无缝滚动。

    当你从最后一张图切换回第一张图时,有很大空白,利用两张辅助图来填补这个空白。

    这里补充下无缝滚动,直接看代码,复制最后一张图片放置第一张图片前,同时复制第一张图片放置最后一张图片的后面。并且,将第一张图片辅助图(实际上是实际显示的第5张图片隐藏起来,故设置style="left: -600px;")

    CSS修饰

    1、对盒子模型,文档流的理解,绝对定位问题。

    2、注意list的overflow:hidden;只显示窗口的一张图片,把左右两边的都隐藏起来。

    3、确保buttons中每个span所在层置顶,将其设置为最顶端。(z-index:999)

    * {margin: 0;padding: 0;text-decoration: none;}body {padding: 20px;}#container {width: 600px;height: 400px;border: 3px solid #333;overflow: hidden;position: relative;}#list {width: 4200px;height: 400px;position: absolute;z-index: 1;}#list img {width: 600px;height: 400px;float: left;}#buttons {position: absolute;height: 10px;width: 100px;z-index: 2;bottom: 20px;left: 250px;}#buttons span {cursor: pointer;float: left;border: 1px solid #fff;width: 10px;height: 10px;border-radius: 50%;background: #333;margin-right: 5px;}#buttons .on {background: orangered;}.arrow {cursor: pointer;display: none;line-height: 39px;text-align: center;font-size: 36px;font-weight: bold;width: 40px;height: 40px;position: absolute;z-index: 2;top: 180px;background-color: RGBA(0, 0, 0, .3);color: #fff;}.arrow:hover {background-color: RGBA(0, 0, 0, .7);}#container:hover .arrow {display: block;}#prev {left: 20px;}#next {right: 20px;}

    Js

    首先我们先实现出手动点击左右两个箭头切换图片的效果:

    window.onload = function() {var list = document.getElementById(list);var prev = document.getElementById(prev);var next = document.getElementById(next);function animate(offset) {//获取的是style.left,是相对左边获取距离,所以第一张图后style.left都为负值,//且style.left获取的是字符串,需要用parseInt()取整转化为数字。var newLeft = parseInt(list.style.left) + offset;list.style.left = newLeft + px;}prev.onclick = function() {animate(600);}next.onclick = function() {animate(-600);}}

    运行后我们会发现,一直点击右箭头 ,会出现空白,而且,不能回到第一张图片。要点击左箭头才能回到第一张图片。

    利用谷歌浏览器F12,原因是我们利用偏移量left来获取图片,当看到left值小于3600时,因为没有第8张图片就出现空白,所以这里我们需要对偏移量做一个判断。

    在animate函数里加上这么一段:

    if(newLeft<-3000){list.style.left = -600 + px;}if(newLeft>-600){list.style.left = -3000 + px;}

    好,运行一下,没问题了。轮播图,顾名思义,是自己会动的图片,这个时候我们需要用到浏览器的内置对象定时器。

    对于定时器,有必要说明一下setInterval()跟setTimeout的区别了。简单来说,setInterval()执行多次,setTimeout()只执行一次。

    更具体的用法可以点击链接查看区别:window.setInterval window.setTimeout 。

    这里我们是用setInterval(),因为我们的图片需要循环滚动。插入下面

    var timer;function play() {timer = setInterval(function () {prev.onclick()}, 1500)}play();

    运行,ok!

    但是,当我们想仔细看某一张图片时候,要把图片停住,我们清楚定时器就可以了,这里用到window.clearInterval 这个方法。

    这里,我们需要对其DOM操作,需要获取整个轮播图区域;

    var container = document.getElementById(container);function stop() {clearInterval(timer);}container.onmouseover = stop;container.onmouseout = play;

    但这里,一个轮播图基本算完成了,有同学·会问,那么简单。看到图片下面的那一排小圆点没。我给你加功能了。

    ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    这里是升级版:

    var buttons = document.getElementById(buttons).getElementsByTagName(span);var index = 1;function buttonsShow() {//这里需要清除之前的样式for (var i = 0; i < buttons.length; i++) {if (buttons[i].className == on) {buttons[i].className = ;}}//数组从0开始,故index需要-1buttons[index - 1].className = on;}prev.onclick = function() {index -= 1;if (index < 1) {index = 5;}buttonsShow();animate(600);}next.onclick = function() {//由于上边定时器的作用,index会一直递增下去,我们只有5个小圆点,所以需要做出判断index += 1;if (index > 5) {index = 1;}buttonsShow();animate(-600);}

    现在看起来正常多了吧,但我们想实现通过鼠标任意点击其中一个小圆点,切换到相应的图片,原理同样,我们还是需要通过偏移量去找到对应的图片。

    for (var i = 0; i < buttons.length; i++) {buttons[i].onclick = function() {//优化,当前图片点击当前的小圆点不执行以下代码。if (this.className == "on") {return;}/* 偏移量获取:这里获得鼠标移动到小圆点的位置,用this把index绑定到对象buttons[i]上,去谷歌this的用法 *//* 由于这里的index是自定义属性,需要用到getAttribute()这个DOM2级方法,去获取自定义index的属性*/var clickIndex = parseInt(this.getAttribute(index));var offset = 600 * (clickIndex - index);animate(offset);//存放鼠标点击后的位置,用于小圆点的正常显示index = clickIndex;buttonsShow();}}

    大家,可能发现了,这个轮播图有点奇怪,不中规中矩,它是向左切换的,改写一下:

    function play() {//将轮播图换成向右切换图片timer = setInterval(function () {next.onclick();}, 2000)}<meta charset="UTF-8"><style type="text/css">* {margin: 0;padding: 0;text-decoration: none;}body {padding: 20px;}#container {width: 600px;height: 400px;border: 3px solid #333;overflow: hidden;position: relative;}#list {width: 4200px;height: 400px;position: absolute;z-index: 1;}#list img {width: 600px;height: 400px;float: left;}#buttons {position: absolute;height: 10px;width: 100px;z-index: 2;bottom: 20px;left: 250px;}#buttons span {cursor: pointer;float: left;border: 1px solid #fff;width: 10px;height: 10px;border-radius: 50%;background: #333;margin-right: 5px;}#buttons .on {background: orangered;}.arrow {cursor: pointer;display: none;line-height: 39px;text-align: center;font-size: 36px;font-weight: bold;width: 40px;height: 40px;position: absolute;z-index: 2;top: 180px;background-color: RGBA(0, 0, 0, .3);color: #fff;}.arrow:hover {background-color: RGBA(0, 0, 0, .7);}#container:hover .arrow {display: block;}#prev {left: 20px;}#next {right: 20px;}</style><script type="text/javascript">/* 知识点: *//* this用法 *//* DOM事件 *//* 定时器 */window.onload = function () {var container = document.getElementById(container);var list = document.getElementById(list);var buttons = document.getElementById(buttons).getElementsByTagName(span);var prev = document.getElementById(prev);var next = document.getElementById(next);var index = 1;var timer;function animate(offset) {//获取的是style.left,是相对左边获取距离,所以第一张图后style.left都为负值,//且style.left获取的是字符串,需要用parseInt()取整转化为数字。var newLeft = parseInt(list.style.left) + offset;list.style.left = newLeft + px;//无限滚动判断if (newLeft > -600) {list.style.left = -3000 + px;}if (newLeft < -3000) {list.style.left = -600 + px;}}function play() {//重复执行的定时器timer = setInterval(function () {next.onclick();}, 2000)}function stop() {clearInterval(timer);}function buttonsShow() {//将之前的小圆点的样式清除for (var i = 0; i < buttons.length; i++) {if (buttons[i].className == "on") {buttons[i].className = "";}}//数组从0开始,故index需要-1buttons[index - 1].className = "on";}prev.onclick = function () {index -= 1;if (index < 1) {index = 5}buttonsShow();animate(600);};next.onclick = function () {//由于上边定时器的作用,index会一直递增下去,我们只有5个小圆点,所以需要做出判断index += 1;if (index > 5) {index = 1}animate(-600);buttonsShow();};for (var i = 0; i < buttons.length; i++) {buttons[i].onclick = function () {//优化,当前图片点击当前的小圆点不执行以下代码。if (this.className == "on") {return;}/* 这里获得鼠标移动到小圆点的位置,用this把index绑定到对象buttons[i]上,去谷歌this的用法 *//* 由于这里的index是自定义属性,需要用到getAttribute()这个DOM2级方法,去获取自定义index的属性*/var clickIndex = parseInt(this.getAttribute(index));var offset = 600 * (clickIndex - index); //这个index是当前图片停留时的indexanimate(offset);index = clickIndex; //存放鼠标点击后的位置,用于小圆点的正常显示buttonsShow();}}container.onmouseover = stop;container.onmouseout = play;play();}</script> 成语| 古诗大全| 扒知识| 扒知识繁体 <body>

    以上所述是小编给大家介绍的简单的JS轮播图代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

    猜你喜欢

    更多