<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/htmlcharset=gb2312" />
<title>无标题文档</title>
<style type="text/css">
<!--
.Marquee{ height:60pxoverflow:hidden}
.Marquee div{ border:1px solid #DDD3FEbackground:#EEECF4height:58px}
-->
</style>
</head>
<body>
<div id="Marquee" class="Marquee">
<div style="width: 160pxheight: 58px">间断-1-caiying2007</div>
<div style="width: 160pxheight: 58px">间断-2-caiying2007</div>
<div style="width: 160pxheight: 58px">间断-3-caiying2007</div>
</div>
<div id="Marquee1" class="Marquee">
<div style="width: 160pxheight: 58px">间断-1-caiying2007</div>
<div style="width: 160pxheight: 58px">间断-2-caiying2007</div>
<div style="width: 160pxheight: 58px">间断-3-caiying2007</div>
</div>
<script>
function up(x){
var Mar = document.getElementById(x)
var child_div=Mar.getElementsByTagName("div")
var picH = 60//移动高度
var scrollstep=3//移动步幅,越大越快
var scrolltime=20//移动频度(毫秒)越大越慢
var stoptime=3000//间断时间(毫秒)
var tmpH = 0
Mar.innerHTML += Mar.innerHTML
function start(){
if(tmpH <picH){
tmpH += scrollstep
if(tmpH >picH )tmpH = picH
Mar.scrollTop = tmpH
setTimeout(start,scrolltime)
}else{
tmpH = 0
Mar.appendChild(child_div[0])
Mar.scrollTop = 0
setTimeout(start,stoptime)
}
}
setTimeout(start,stoptime)
}
up("Marquee")
up("Marquee1")
</script>
</body>
</html>
给你一个函数你调用下就OK了,支持加速滚动、循环滚动、间隔滚动、上下滚动、左右滚动等等
直接将这段代码拷贝到一个JS文件里面,这段代码需要jquery1.3以上运行环境。
代码里面有调用示例。
望采纳··
/**
* @classDescription 超级Marquee,可做图片导航,图片轮换
* @dependence jQuery 1.3.2
* @DOM
* <div id="marquee">
* <ul>
* <li></li>
* <li></li>
* </ul>
* </div>
* @CSS
* #marquee {width:200pxheight:50pxoverflow:hidden}
* @Usage
* $('#marquee').superMarquee(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.superMarquee = function(options){
var opts = $.extend({},$.fn.superMarquee.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=0i<_leni++){
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.superMarquee.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.superMarquee.setDefaults = function(settings) {
$.extend( $.fn.superMarquee.defaults, settings )
}
})(jQuery)
用document.getElementById(div1)获取到该div,然后操作它就行了,如果是文本上下移动完全可以使用marquee标签。引用JS:
www.cyin.cn/js/front/supermarquee.js
HTML代码:
<div class="zuixinxuqiu" style="height: 197pxwidth: 678pxoverflow: hiddenposition: relative">
<ul>
<dl class="clearfix">
<dt class="coladdress">
成都市</dt>
</dl>
<dl class="clearfix">
<dt class="coladdress">
成都市</dt>
</dl>
<dl class="clearfix">
<dt class="coladdress">
成都市</dt>
</dl>
<dl class="clearfix">
<dt class="coladdress">
成都市</dt>
</dl>
<dl class="clearfix">
<dt class="coladdress">
成都市</dt>
</dl>
</ul>
</div>
执行JS:
$(".zuixinxuqiu").kxbdSuperMarquee({
isEqual: false,
distance: 33,
time: 5,
direction: 'up'
})