JQuery页面图片切换和新闻列表滚动效果的具体实现
JQuery页面图片切换和新闻列表滚动效果的具体实现
发布时间:2016-12-30 来源:查字典编辑
摘要:最近用到一个页面上图片左右切换和新闻列表滚动呈现的效果,整理如下:前段代码:复制代码代码如下:jQuery(document).ready(...

最近用到一个页面上图片左右切换和新闻列表滚动呈现的效果,整理如下:

前段代码:

复制代码 代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />

<link rel="stylesheet" href="css/css.css" type="text/css" />

<script type="text/javascript" src="js/jquery-1.7.2.min.js"></script>

<script type="text/javascript" src="js/kxbdSuperMarquee.js"></script>

<script type="text/javascript" src="js/indexPic.js"></script>

<script type="text/javascript">

jQuery(document).ready(function() {

$('.indexNews div.core').kxbdSuperMarquee({

isEqual:false,

distance:18,

time:4,

//btnGo:{up:'#goU',down:'#goD'},

direction:'up'

});

});

</script>

</script>

<title></title>

</head>

<body>

<div>

<div>

<div id="fadImgs">

<ul>

<li><a target="_blank" href="#"><img alt="首页AD-1" src="Images/ad-1.jpg" width="1980" height="449"></a></li>

<li><a target="_blank" href="#"><img alt="首页AD-2" src="images/ad-2.jpg" width="1980" height="449"></a></li>

<li><a target="_blank" href="#"><img alt="首页AD-3" src="images/ad-3.jpg" width="1980" height="449"></a></li>

<li><a target="_blank" href="#"><img alt="首页AD-4" src="Images/ad-4.jpg" width="1980" height="449"></a></li>

</ul>

</div>

</div>

<div>

<strong><a href="#">新闻中心</a></strong>

<div>

<ul>

<li><a href="#" title="新闻1">新闻标题1</a></li>

<li><a href="#" title="新闻2">新闻标题2</a></li>

<li><a href="#" title="新闻3”">新闻标题3</a></li>

<li><a href="#" title="新闻4">新闻标题4</a></li>

<li><a href="#" title="新闻5">新闻标题5</a></li>

</ul>

</div>

</div>

</div>

<script type="text/javascript">

$(function() {

var len = $(".img-box li").length;

var imgW = $(".img-box li").width() * len;

$(".img-box").width(imgW);

$(".info_slide_dots span").hide();

})

$("#fadImgs").slideImg({

speed: "slow",

timer: 5000

});

</script>

</body>

</html>

css文件夹包含一个样式表css.css:

复制代码 代码如下:

/* reset.css */

body{background:#fff;color:#444;height:100%;line-height:1.4;}

html{height:100%;overflow-y:scroll;-webkit-text-size-adjust:none;}

body,input,button,textarea,select,h1,h2,h3,h4,h5,h6{font:12px/1.5 Arial,Tahoma,Helvetica,"5b8b4f53",sans-serif;}

body,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,button,textarea,blockquote,th,td{margin:0;padding:0;}

img{vertical-align:bottom;}

/* base.css */

a:link,a:visited,a:hover,a:active{cursor:pointer;text-decoration:none;}

a:active,a:focus {-moz-outline:none;outline:none;ie-dummy:expression(this.hideFocus=true);}

a:hover {text-decoration:underline;}

li {list-style:none;}

ol li {display:inline;}

/*common.css*/

.outer{position:relative; overflow:hidden; background:url(../images/line.gif) repeat-x bottom; border-bottom:solid 1px #fff; margin:0 auto;}

.banner{position:absolute; left:50%; top:0; margin-left:-990px; height:400px; width:1980px;overflow:hidden;}

.flash_img {

overflow: hidden;

width: 1980px;

height: 400px;

position: relative

}

.banner{height:400px;}

.flash_img .img-box {

position: absolute;

}

.flash_img .img-box li{float:left;}

.flash_img img {

display: block;

}

.flash_item {

position: absolute;

right: 510px;

bottom: 10px;

height: 12px;

}

.flash_item li {

background:url(../images/flash_item.png) no-repeat right;

color: #D94B01;

cursor: pointer;

float: left;

font-size: 12px;

height: 12px;

line-height: 12px;

margin-left: 15px;

text-align: center;

width: 12px;

}

.flash_item li.on

{

background-position:left;

color: #FFFFFF;

font-weight: bold;

height: 12px;

line-height: 12px;

width: 12px;

}

.flash_item li img {

display: block

}

/*default.css*/

.indexNews{width:700px; height:29px; bottom:0; left:50%; position:absolute; margin-left:-480px; z-index:999;}

.indexNews strong{color:#409dd9;float: left;}

.indexNews strong a{color:#409dd9;text-decoration:none;}

.indexNews .core{height:18px; line-height:18px; overflow:hidden;}

.indexNews .core span{color:#409dd9; margin-right:20px;}

.indexNews .core a{margin-left:10px;color:#666;}

.outer{height:440px;}

js文件夹包含三个文件:jquery-1.7.2.min.js、indexPic.js、kxbdSuperMarquee.js。第一个可以在网上直接下载,第二个是切换图片,第三个滚动新闻列表。

indexPic.js:

复制代码 代码如下:

document.writeln("<script type="text/javascript" >BAIDU_CLB_SLOT_ID = "586642";</script>");

document.writeln("<script type="text/javascript" src="http://cbjs.baidu.com/js/o.js"></script>");

(function($) {

$.fn.slideImg = function(settings) {

settings = jQuery.extend({

speed: "normal",

timer: 1000

}, settings);

return this.each(function() {

$.fn.slideImg.scllor($(this), settings);

});

};

$.fn.slideImg.scllor = function($this, settings) {

var index = 0;

var scllorer = $(".img-box li", $this);

var size = scllorer.size();

var slideW = scllorer.outerWidth();

var $selItem = $("<ul></ul>", {

"class": "flash_item",

html: function() {

var $selItemHTML = "";

if (size == 1) {

return;

} else if (size > 1) {

for (var i = 0; i < size; i++) {

i == 0 ? $selItemHTML += '<li>' : $selItemHTML += '<li></li>';

}

return $selItemHTML;

}

}

}).appendTo($this);

var li = $(".flash_item li", $this);

var showBox = $(".img-box", $this);

var intervalTime = null;

li.hover(function() {

var that = this;

if (intervalTime) {

clearInterval(intervalTime);

}

intervalTime = setTimeout(function() {

index = li.index(that);

ShowAD(index);

}, 200);

}, function() {

clearInterval(intervalTime);

interval();

});

showBox.hover(function() {

if (intervalTime) {

clearInterval(intervalTime);

}

}, function() {

clearInterval(intervalTime);

interval();

});

function interval() {

intervalTime = setInterval(function() {

ShowAD(index);

index++;

if (index == size) {

index = 0;

}

}, settings.timer);

}

interval();

var ShowAD = function(i) {

showBox.animate({ "left": -i * slideW }, settings.speed);

li.eq(i).addClass("on").siblings().removeClass("on");

};

};

})(jQuery);

kxbdSuperMarquee.js:

复制代码 代码如下:

/**

* @classDescription 超级Marquee,可做图片导航,图片轮换

* @author Aken Li(www.kxbd.com)

* @date 2009-07-27

* @dependence jQuery 1.3.2

* @DOM

* <div id="marquee">

* <ul>

* <li></li>

* <li></li>

* </ul>

* </div>

* @CSS

* #marquee {width:200px;height:50px;overflow:hidden;}

* @Usage

* $('#marquee').kxbdSuperMarquee(options);

* @options

* distance:200,//一次滚动的距离

* duration:20,//缓动效果,单次移动时间,越小速度越快,为0时无缓动效果

* time:5,//停顿时间,单位为秒

* direction: 'left',//滚动方向,'left','right','up','down'

* scrollAmount:1,//步长

* scrollDelay:20//时长,单位为毫秒

* isEqual:true,//所有滚动的元素长宽是否相等,true,false

* loop: 0,//循环滚动次数,0时无限

* btnGo:{left:'#goL',right:'#goR'},//控制方向的按钮ID,有四个属性left,right,up,down分别对应四个方向

* eventGo:'click',//鼠标事件

* controlBtn:{left:'#goL',right:'#goR'},//控制加速滚动的按钮ID,有四个属性left,right,up,down分别对应四个方向

* newAmount:4,//加速滚动的步长

* eventA:'mouseenter',//鼠标事件,加速

* eventB:'mouseleave',//鼠标事件,原速

* navId:'#marqueeNav', //导航容器ID,导航DOM:<ul><li>1</li><li>2</li><ul>,导航CSS:.navOn

* eventNav:'click' //导航事件

*/

(function($){

$.fn.kxbdSuperMarquee = function(options){

var opts = $.extend({},$.fn.kxbdSuperMarquee.defaults, options);

return this.each(function(){

var $marquee = $(this);//滚动元素容器

var _scrollObj = $marquee.get(0);//滚动元素容器DOM

var scrollW = $marquee.width();//滚动元素容器的宽度

var scrollH = $marquee.height();//滚动元素容器的高度

var $element = $marquee.children(); //滚动元素

var $kids = $element.children();//滚动子元素

var scrollSize=0;//滚动元素尺寸

var _type = (opts.direction == 'left' || opts.direction == 'right') ? 1:0;//滚动类型,1左右,0上下

var scrollId, rollId, isMove, marqueeId;

var t,b,c,d,e; //滚动动画的参数,t:当前时间,b:开始的位置,c:改变的位置,d:持续的时间,e:结束的位置

var _size, _len; //子元素的尺寸与个数

var $nav,$navBtns;

var arrPos = [];

var numView = 0; //当前所看子元素

var numRoll=0; //轮换的次数

var numMoved = 0;//已经移动的距离

//防止滚动子元素比滚动元素宽而取不到实际滚动子元素宽度

$element.css(_type?'width':'height',10000);

//获取滚动元素的尺寸

var navHtml = '<ul>';

if (opts.isEqual) {

_size = $kids[_type?'outerWidth':'outerHeight']();

_len = $kids.length;

scrollSize = _size * _len;

for(var i=0;i<_len;i++){

arrPos.push(i*_size);

navHtml += '<li>'+ (i+1) +'</li>';

}

}else{

$kids.each(function(i){

arrPos.push(scrollSize);

scrollSize += $(this)[_type?'outerWidth':'outerHeight']();

navHtml += '<li>'+ (i+1) +'</li>';

});

}

navHtml += '</ul>';

//滚动元素总尺寸小于容器尺寸,不滚动

if (scrollSize<(_type?scrollW:scrollH)) return;

//克隆滚动子元素将其插入到滚动元素后,并设定滚动元素宽度

$element.append($kids.clone()).css(_type?'width':'height',scrollSize*2);

//轮换导航

if (opts.navId) {

$nav = $(opts.navId).append(navHtml).hover( stop, start );

$navBtns = $('li', $nav);

$navBtns.each(function(i){

$(this).bind(opts.eventNav,function(){

if(isMove) return;

if(numView==i) return;

rollFunc(arrPos[i]);

$navBtns.eq(numView).removeClass('navOn');

numView = i;

$(this).addClass('navOn');

});

});

$navBtns.eq(numView).addClass('navOn');

}

//设定初始位置

if (opts.direction == 'right' || opts.direction == 'down') {

_scrollObj[_type?'scrollLeft':'scrollTop'] = scrollSize;

}else{

_scrollObj[_type?'scrollLeft':'scrollTop'] = 0;

}

if(opts.isMarquee){

//滚动开始

//marqueeId = setInterval(scrollFunc, opts.scrollDelay);

marqueeId = setTimeout(scrollFunc, opts.scrollDelay);

//鼠标划过停止滚动

$marquee.hover(

function(){

clearInterval(marqueeId);

},

function(){

//marqueeId = setInterval(scrollFunc, opts.scrollDelay);

clearInterval(marqueeId);

marqueeId = setTimeout(scrollFunc, opts.scrollDelay);

}

);

//控制加速运动

if(opts.controlBtn){

$.each(opts.controlBtn, function(i,val){

$(val).bind(opts.eventA,function(){

opts.direction = i;

opts.oldAmount = opts.scrollAmount;

opts.scrollAmount = opts.newAmount;

}).bind(opts.eventB,function(){

opts.scrollAmount = opts.oldAmount;

});

});

}

}else{

if(opts.isAuto){

//轮换开始

start();

//鼠标划过停止轮换

$marquee.hover( stop, start );

}

//控制前后走

if(opts.btnGo){

$.each(opts.btnGo, function(i,val){

$(val).bind(opts.eventGo,function(){

if(isMove == true) return;

opts.direction = i;

rollFunc();

if (opts.isAuto) {

stop();

start();

}

});

});

}

}

function scrollFunc(){

var _dir = (opts.direction == 'left' || opts.direction == 'right') ? 'scrollLeft':'scrollTop';

if(opts.isMarquee){

if (opts.loop > 0) {

numMoved+=opts.scrollAmount;

if(numMoved>scrollSize*opts.loop){

_scrollObj[_dir] = 0;

return clearInterval(marqueeId);

}

}

var newPos = _scrollObj[_dir]+(opts.direction == 'left' || opts.direction == 'up'?1:-1)*opts.scrollAmount;

}else{

if(opts.duration){

if(t++<d){

isMove = true;

var newPos = Math.ceil(easeOutQuad(t,b,c,d));

if(t==d){

newPos = e;

}

}else{

newPos = e;

clearInterval(scrollId);

isMove = false;

return;

}

}else{

var newPos = e;

clearInterval(scrollId);

}

}

if(opts.direction == 'left' || opts.direction == 'up'){

if(newPos>=scrollSize){

newPos-=scrollSize;

}

}else{

if(newPos<=0){

newPos+=scrollSize;

}

}

_scrollObj[_dir] = newPos;

if(opts.isMarquee){

marqueeId = setTimeout(scrollFunc, opts.scrollDelay);

}else if(t<d){

if(scrollId) clearTimeout(scrollId);

scrollId = setTimeout(scrollFunc, opts.scrollDelay);

}else{

isMove = false;

}

};

function rollFunc(pPos){

isMove = true;

var _dir = (opts.direction == 'left' || opts.direction == 'right') ? 'scrollLeft':'scrollTop';

var _neg = opts.direction == 'left' || opts.direction == 'up'?1:-1;

numRoll = numRoll +_neg;

//得到当前所看元素序号并改变导航CSS

if(pPos == undefined&&opts.navId){

$navBtns.eq(numView).removeClass('navOn');

numView +=_neg;

if(numView>=_len){

numView = 0;

}else if(numView<0){

numView = _len-1;

}

$navBtns.eq(numView).addClass('navOn');

numRoll = numView;

}

var _temp = numRoll<0?scrollSize:0;

t=0;

b=_scrollObj[_dir];

//c=(pPos != undefined)?pPos:_neg*opts.distance;

e=(pPos != undefined)?pPos:_temp+(opts.distance*numRoll)%scrollSize;

if(_neg==1){

if(e>b){

c = e-b;

}else{

c = e+scrollSize -b;

}

}else{

if(e>b){

c =e-scrollSize-b;

}else{

c = e-b;

}

}

d=opts.duration;

//scrollId = setInterval(scrollFunc, opts.scrollDelay);

if(scrollId) clearTimeout(scrollId);

scrollId = setTimeout(scrollFunc, opts.scrollDelay);

}

function start(){

rollId = setInterval(function(){

rollFunc();

}, opts.time*1000);

}

function stop(){

clearInterval(rollId);

}

function easeOutQuad(t,b,c,d){

return -c *(t/=d)*(t-2) + b;

}

function easeOutQuint(t,b,c,d){

return c*((t=t/d-1)*t*t*t*t + 1) + b;

}

});

};

$.fn.kxbdSuperMarquee.defaults = {

isMarquee:false,//是否为Marquee

isEqual:true,//所有滚动的元素长宽是否相等,true,false

loop: 0,//循环滚动次数,0时无限

newAmount:3,//加速滚动的步长

eventA:'mousedown',//鼠标事件,加速

eventB:'mouseup',//鼠标事件,原速

isAuto:true,//是否自动轮换

time:5,//停顿时间,单位为秒

duration:50,//缓动效果,单次移动时间,越小速度越快,为0时无缓动效果

eventGo:'click', //鼠标事件,向前向后走

direction: 'left',//滚动方向,'left','right','up','down'

scrollAmount:1,//步长

scrollDelay:10,//时长

eventNav:'click'//导航事件

};

$.fn.kxbdSuperMarquee.setDefaults = function(settings) {

$.extend( $.fn.kxbdSuperMarquee.defaults, settings );

};

})(jQuery);

images文件夹用的图标:

JQuery页面图片切换和新闻列表滚动效果的具体实现1

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新Javascript教程学习
热门Javascript教程学习
编程开发子分类