jquery animate 制作简单弹幕

时间:2023-03-09 04:13:03
jquery animate 制作简单弹幕

定位滚动条

$("html,body").animate({scrollTop:$(".middle1").offset().top},1000)

弹幕

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>marquee</title>
<link rel="stylesheet" href="index.css"/>
<script src="jquery.min.js"></script>
<script src="keyframse.js"></script>
</head>
<body>
<!--
a)scrollAmount 它表示速度,值越大速度越快。如果没有它,默认为6,建议设为1~3比较好。
b)width和height表示滚动区域的大小,width是宽度,height是高度。特别是在做垂直滚动的时候,一定要设height的值。
c)direction 表示滚动的方向,默认为从右向左:←←←。可选的值有right、down、up。滚动方向分别为:right表示→→→,up表示↑,down表示↓。
d)scrollDelay 这也是用来控制速度的,默认为90,值越大,速度越慢。通常scrollDelay是不需要设置的。
e)behavior 用它来控制属性,默认为循环滚动,可选的值有alternate(交替滚动)、slide(幻灯片效果,指的是滚动一次,然后停止滚动)
-->
<div class="marquee-wrapper">
</div>
<!--$(selector).animate(styles,speed,easing,callback)-->
<div class="wrapper">
<div class="piece"></div>
<div class="piece"></div>
<div class="piece"></div>
<div class="piece"></div>
<div class="piece"></div>
<div class="piece"></div>
<div class="piece"></div>
</div>
<div class="wrapper">
<div class="begin-rotate">
waiting...
</div>
</div>
</body>
</html>

弹幕css

.marquee-wrapper{width: 360px;height: 288px;margin: 0 auto;position: relative;overflow: hidden;background-image: url("bg-danmu.png");}
.marquee-piece{width: 250px;height: 35px;line-height: 35px;border-radius: 20px;border:1px solid lightblue;background-color:white;text-align: center;}
.dm-phone{color: rgb(55,208,219);}
.marquee{position: absolute;left:}
.wrapper{width: 360px;height: 288px;border: 1px solid red;margin: 0 auto;position: relative;overflow: hidden;}
.marquee-piece{width: 250px;height: 35px;line-height: 35px;border-radius: 20px;border:1px solid lightgreen;text-align: center;}
.begin-rotate{width: 100px;height: 100px;line-height: 100px;text-align: center;background-color: #dadada;border-radius: 50%;border-bottom:4px solid red;border-right: 4px solid red;}
.piece{width: 250px;height: 35px;line-height: 35px;border-radius: 20px;border:1px solid lightgreen;text-align: center;} @keyframes setRight { from {right: -249px;} to {right:100%} }
@-moz-keyframes setRight { from {right: -249px;} to {right:100%} }
@-webkit-keyframes setRight /* Safari 和 Chrome */ { from {right: -249px;} to {right:100%} }
@-o-keyframes setRight /* Opera */ { from {right: -249px;} to {right:100%} } @keyframes beginRotate {
0% {
transform: rotate(0deg);
-ms-transform: rotate(0deg); /* IE 9 */
-webkit-transform: rotate(0deg); /* Safari and Chrome */
-o-transform: rotate(0deg); /* Opera */
-moz-transform: rotate(0deg); }
50% {
transform: rotate(180deg);
-ms-transform: rotate(180deg); /* IE 9 */
-webkit-transform: rotate(180deg); /* Safari and Chrome */
-o-transform: rotate(180deg); /* Opera */
-moz-transform: rotate(180deg); }
100% {
transform: rotate(360deg);
-ms-transform: rotate(360deg); /* IE 9 */
-webkit-transform: rotate(360deg); /* Safari and Chrome */
-o-transform: rotate(360deg); /* Opera */
-moz-transform: rotate(360deg); }
}
@-moz-keyframes beginRotate {
0% {
transform: rotate(0deg);
-ms-transform: rotate(0deg); /* IE 9 */
-webkit-transform: rotate(0deg); /* Safari and Chrome */
-o-transform: rotate(0deg); /* Opera */
-moz-transform: rotate(0deg); }
50% {
transform: rotate(180deg);
-ms-transform: rotate(180deg); /* IE 9 */
-webkit-transform: rotate(180deg); /* Safari and Chrome */
-o-transform: rotate(180deg); /* Opera */
-moz-transform: rotate(180deg); }
100% {
transform: rotate(360deg);
-ms-transform: rotate(360deg); /* IE 9 */
-webkit-transform: rotate(360deg); /* Safari and Chrome */
-o-transform: rotate(360deg); /* Opera */
-moz-transform: rotate(360deg); }
}
@-webkit-keyframes beginRotate {
0% {
transform: rotate(0deg);
-ms-transform: rotate(0deg); /* IE 9 */
-webkit-transform: rotate(0deg); /* Safari and Chrome */
-o-transform: rotate(0deg); /* Opera */
-moz-transform: rotate(0deg); }
50% {
transform: rotate(180deg);
-ms-transform: rotate(180deg); /* IE 9 */
-webkit-transform: rotate(180deg); /* Safari and Chrome */
-o-transform: rotate(180deg); /* Opera */
-moz-transform: rotate(180deg); }
100% {
transform: rotate(360deg);
-ms-transform: rotate(360deg); /* IE 9 */
-webkit-transform: rotate(360deg); /* Safari and Chrome */
-o-transform: rotate(360deg); /* Opera */
-moz-transform: rotate(360deg); }
}
@-o-keyframes beginRotate {
0% {
transform: rotate(0deg);
-ms-transform: rotate(0deg); /* IE 9 */
-webkit-transform: rotate(0deg); /* Safari and Chrome */
-o-transform: rotate(0deg); /* Opera */
-moz-transform: rotate(0deg); }
50% {
transform: rotate(180deg);
-ms-transform: rotate(180deg); /* IE 9 */
-webkit-transform: rotate(180deg); /* Safari and Chrome */
-o-transform: rotate(180deg); /* Opera */
-moz-transform: rotate(180deg); }
100% {
transform: rotate(360deg);
-ms-transform: rotate(360deg); /* IE 9 */
-webkit-transform: rotate(360deg); /* Safari and Chrome */
-o-transform: rotate(360deg); /* Opera */
-moz-transform: rotate(360deg); }
}
.piece1
{
animation: setRight 5s linear 1s infinite ;
/* Firefox: */
-moz-animation: setRight 5s linear 1s infinite ;
/* Safari 和 Chrome: */
-webkit-animation: setRight 5s linear 1s infinite ;
/* Opera: */
-o-animation: setRight 5s linear 1s infinite ;
}
.begin-rotate{
animation: beginRotate 2s linear 1s infinite ;
/* Firefox: */
-moz-animation: beginRotate 2s linear 1s infinite ;
/* Safari 和 Chrome: */
-webkit-animation: beginRotate 2s linear 1s infinite ;
/* Opera: */
-o-animation: beginRotate 2s linear 1s infinite ;
}

弹幕js

/**
* Created by cq on 2015/7/15.*
*/ $(function(){ for(var i=0;i<7;i++){
var marquee = $('<MARQUEE>')
var marqueePiece = $('<div>')
marqueePiece.addClass('marquee-piece')
marqueePiece.html(items[Math.floor(Math.random()*items.length)])
marquee.addClass('marquee')
marquee.attr('scrollAmount',parseInt(Math.random()*8)+1)
marquee.attr('scrollDelay',parseInt(Math.random()*80)+1)
marquee.css('top',i * 40)
$('.marquee-wrapper').append(marquee.append(marqueePiece))
} $('.piece').each(function(ind,ele){
$(ele).html(items[Math.floor(Math.random()*items.length)])
$(ele).css({'position':'absolute','right':'-252px','top':ind * 40 +5})
move(ele)
}) }) var move = function(ele){
$(ele).animate({right:'365px'},Math.random()*13000+2000,'linear',function(){
$(ele).html(items[Math.floor(Math.random()*items.length)])
$(ele).css('right','-252px')
move(ele)
})
} var items = [
"132****3333 我要买肾6",
"132****2759 我要接媳妇",
"135****7527 我要去旅游",
"155****8957 我要吃大餐",
"188****1525 我要玩游戏",
"187****5734 我要盖房子",
"139****4537 我要大别墅",
"131****4378 我要当大厨",
"132****4125 我要成为科学家",
"135****1678 我要躺一天"
]

页面分三个部分,

marquee-wrapper是marquee标签
第一个wrapper 是jquery的animate实现的弹幕
第二个wrapper 是css3的等待效果