类走马灯效果轮播(jquery)

23 篇文章 2 订阅
18 篇文章 0 订阅

bug:轻微高频的抖动

<!DOCTYPE html>

<html>
<head>
<meta charset="UTF-8">
<title></title>
<style>
.proListSub {
    width: 1190px;
    margin: 0px auto;
    position: relative;
}
.proListSub .linkQy {
    background: #fff;
    padding: 30px 0px;
    width: 1090px;
    overflow: hidden;
    margin: 20px auto;
    position: relative;
    height: 310px;
    box-sizing: content-box;
}
.proListSub .linkQy ul.banFirst,.proListSub .linkQy ul.banLast{
overflow: hidden;
width: 300%;
position: absolute;
top: 30px;
left: 0px;
background: #fff;
list-style: none;
padding: 0px;
}
.proListSub .linkQy ul.banLast{
left: 100%;
}
.proListSub .linkQy ul.banFirst li,.proListSub .linkQy ul.banLast li{
float: left;
height: 250px;
text-align: center;
background: skyblue;
}
.proListSub .linkQy ul.banFirst>li>a,.proListSub .linkQy ul.banLast>li>a{
display: block;
text-align: center;
height: 100%;
}
.proListSub .linkQy ul.banFirst>li>a img,.proListSub .linkQy ul.banLast>li>a img{
height: 100%;
display: block;
}
</style>
</head>
<body>
<div class="box">
<div class="proListSub"   id="lNav12">
<div class="linkQy">
<ul class="banFirst">
<li><a href=""><img src="img/5.jpg"/></a></li>
<li><a href=""><img src="img/55.jpg"/></a></li>
<li><a href=""><img src="img/33.jpg"/></a></li>
<li><a href=""><img src="img/44.jpg"/></a></li>
<li><a href=""><img src="img/55.jpg"/></a></li>
<li><a href=""><img src="img/6.jpg"/></a></li>
<li><a href=""><img src="img/77.jpg"/></a></li>
<li><a href=""><img src="img/1.jpg"/></a></li>
<li><a href=""><img src="img/2.jpg"/></a></li>
<li><a href=""><img src="img/4.jpg"/></a></li>
</ul>
<ul class="banLast"></ul>
</div>
</div>
</div>
<script src="static/js/jquery.js"></script>
<script>
var sum=0
for(var i = 0; i<$('.proListSub .linkQy>ul>li').length;i++){
sum+=$('.proListSub .linkQy>ul>li').eq(i).width()
}
$('.proListSub .linkQy>ul').css('width', sum)
$('.banLast').html($('.banFirst').html())
$('.banLast').css('left', $('.linkQy').width())
var speed = 18
function linkAnimate (firstAnimate, nextAnimate, parentNode) {
// 前一个移动距离只剩下最后一个父元素的宽度甚至更短
  if (Math.abs(firstAnimate.position().left) >= (firstAnimate.width() - parentNode.width())) {
    firstAnimate.stop().animate({
      left: -firstAnimate.width()
    }, (firstAnimate.width() + firstAnimate.position().left) * speed, 'linear', function () {
      firstAnimate.css('left', parentNode.width())
    })
    nextAnimate.stop().animate({
      left: 0
    }, nextAnimate.position().left * speed, 'linear', function () {
      linkAnimate(nextAnimate, firstAnimate, parentNode)
    })
  } else {
//     移动到仅剩下一个父元素宽度
    firstAnimate.stop().animate({
      left: -(firstAnimate.width() - parentNode.width())
    }, Math.abs(Math.abs(firstAnimate.position().left) - (firstAnimate.width() - parentNode.width())) * speed, 'linear', function () {
//       将当前最后一个父元素宽度的长度全部运动到左侧,并迅速返回最右侧等待下一次移动
      firstAnimate.stop().animate({
        left: -firstAnimate.width()
      }, parentNode.width() * speed, 'linear', function () {
        firstAnimate.css('left', parentNode.width())
      })
//       同时最右侧待定元素开始移动
      nextAnimate.stop().animate({
        left: 0
      }, parentNode.width() * speed, 'linear', function () {
        linkAnimate(nextAnimate, firstAnimate, parentNode)
      })
    })
  } 
}
linkAnimate($('.banFirst'), $('.banLast'), $('.linkQy'))
$('.linkQy').on('mouseenter', function () {
  $(this).children().stop(true, false)
})
$('.linkQy').on('mouseleave', function (e) {
  if ($(this).children().eq(0).position().left <= 0) {
    linkAnimate($(this).children().eq(0), $(this).children().eq(1), $(this))
  } else {
    linkAnimate($(this).children().eq(1), $(this).children().eq(0), $(this))
  }
})
</script>
</body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值