如今,越来愈多的页面动效都依赖于动效插件,插件的封装和使用,大大减少了前端人员实现动效的时间和经历,提高了效率。如今,页面中使用到的大多都是常见的动效,有些动效,由于不常用,只有在特定的页面才会使用到,比如抽奖效果等。因此,在此和大家分享两个动效,第一个是向上的轮播,只是,这一个轮播和图片轮播不同,是类似公告栏的轮播。这样的轮播,当每一行的背景颜色相同时的实现很容易,但如果是隔行变色的布局,会由于视觉差的原因导致效果不能达到预想的效果,故而,为大家提供了两种js书写方式,第一种的可通用的,另一种是仅仅针对于同色的情况。另一个动效则是转盘抽奖动效。
纯css+marginTop仿通知向上滚动动画效果:
css:
js css">*js-rules">{
js-rule">js-attribute">padding:js-value">js-number">0;
js-rule">js-attribute">margin:js-value">js-number">0;
js-rule">}
js-tag">ul js-tag">lijs-rules">{
js-rule">js-attribute">list-style:js-value">none;
js-rule">}
js-class">.mainjs-rules">{
js-rule">js-attribute">width:js-value">js-number">500px;
js-rule">js-attribute">height:js-value">js-number">100px;
js-rule">js-attribute">border:js-value">js-number">1px solid blue;
js-rule">js-attribute">overflow:js-value">hidden;
js-rule">}
js-class">.main>js-tag">uljs-rules">{
js-rule">js-attribute">width:js-value">js-number">100%;
js-rule">js-attribute">height:js-value">auto;
js-rule">}
js-class">.main>js-tag">ul>js-tag">lijs-rules">{
js-rule">js-attribute">width:js-value">js-number">100%;
js-rule">js-attribute">height:js-value">js-number">30px;
js-rule">js-attribute">line-height:js-value">js-number">30px;
js-rule">js-attribute">background:js-value">yellow;
js-rule">}
js-class">.main>js-tag">ul>js-tag">lijs-pseudo">:nth-child(2n+1)js-rules">{
js-rule">js-attribute">background:js-value">skyblue;
js-rule">js-attribute">color:js-value">js-hexcolor">#fff;
js-rule">}
html:
js xml">js-tag"><js-title">div js-attribute">class=js-value">"main" js-attribute">id=js-value">"main">
js-tag"><js-title">ul>
js-tag"><js-title">li>js-tag"><js-title">p>1111111111111js-tag"></js-title">p>js-tag"><js-title">li>
js-tag"><js-title">li>js-tag"><js-title">p>2222222222222js-tag"></js-title">p>js-tag"><js-title">li>
js-tag"><js-title">li>js-tag"><js-title">p>3333333333333js-tag"></js-title">p>js-tag"><js-title">li>
js-tag"><js-title">li>js-tag"><js-title">p>4444444444444js-tag"></js-title">p>js-tag"><js-title">li>
js-tag"><js-title">li>js-tag"><js-title">p>5555555555555js-tag"></js-title">p>js-tag"><js-title">li>
js-tag"><js-title">li>js-tag"><js-title">p>6666666666666js-tag"></js-title">p>js-tag"><js-title">li>
js-tag"><js-title">li>js-tag"><js-title">p>7777777777777js-tag"></js-title">p>js-tag"><js-title">li>
js-tag"><js-title">li>js-tag"><js-title">p>8888888888888js-tag"></js-title">p>js-tag"><js-title">li>
js-tag"></js-title">ul>
js-tag"></js-title">div>
(隔行变色、同色通用)js:
js php"><script>
js-keyword">var js-variable">$this = $(js-string">"#main");
js-keyword">var scrollTimer;
js-variable">$this.hover(js-function">js-keyword">functionjs-params">() {
clearInterval(scrollTimer);
}, js-function">js-keyword">functionjs-params">() {
scrollTimer = setInterval(js-function">js-keyword">functionjs-params">() {
scrollNews(js-variable">$this);
}, js-number">2000);
}).trigger(js-string">"mouseleave");
js-function">js-keyword">function js-title">scrollNewsjs-params">(obj) {
js-keyword">var js-variable">$self = obj.find(js-string">"ul");
js-keyword">var lineHeight = js-variable">$self.find(js-string">"li:first").height();
js-variable">$self.animate({
js-string">"marginTop": (Number(js-variable">$self.css(js-string">'marginTop').split(js-string">'px')[js-number">0]) - lineHeight) + js-string">"px"
}, js-number">600, js-function">js-keyword">functionjs-params">() {
js-keyword">if( Math.abs(Number(js-variable">$self.css(js-string">'marginTop').split(js-string">'px')[js-number">0])) === lineHeight*js-number">2){
js-variable">$self.find(js-string">"li:first").appendTo(js-variable">$self)
js-variable">$self.find(js-string">"li:first").appendTo(js-variable">$self)
js-variable">$self.css({
marginTop: js-number">0
})
}
})
}
</script>
(仅同色)js:
js php"> js-keyword">var js-variable">$this = $(js-string">"#main");
js-keyword">var scrollTimer;
js-variable">$this.hover(js-function">js-keyword">functionjs-params">() {
clearInterval(scrollTimer);
}, js-function">js-keyword">functionjs-params">() {
scrollTimer = setInterval(js-function">js-keyword">functionjs-params">() {
scrollNews(js-variable">$this);
}, js-number">2000);
}).trigger(js-string">"mouseleave");
js-function">js-keyword">function js-title">scrollNewsjs-params">(obj) {
js-keyword">var js-variable">$self = obj.find(js-string">"ul");
js-keyword">var lineHeight = js-variable">$self.find(js-string">"li:first").height();
js-variable">$self.animate({
js-string">"marginTop": -lineHeight + js-string">"px"
}, js-number">600, js-function">js-keyword">functionjs-params">() {
js-variable">$self.css({
marginTop: js-number">0
}).find(js-string">"li:first").appendTo(js-variable">$self);
})
}
转盘抽奖:
css:
js css">*js-rules">{
js-rule">js-attribute">padding:js-value">js-number">0;
js-rule">js-attribute">margin:js-value">js-number">0;
js-rule">}
js-tag">ul js-tag">lijs-rules">{
js-rule">js-attribute">list-style:js-value">none;
js-rule">}
js-class">.mainjs-rules">{
js-rule">js-attribute">width:js-value">js-number">500px;
js-rule">js-attribute">height:js-value">js-number">500px;
js-rule">js-attribute">overflow:js-value">hidden;
js-rule">js-attribute">margin:js-value">js-number">100px auto;
js-rule">js-attribute">background:js-value">skyblue;
js-rule">}
js-class">.main>js-tag">uljs-rules">{
js-rule">js-attribute">width:js-value">js-number">340px;
js-rule">js-attribute">height:js-value">js-number">360px;
js-rule">js-attribute">margin:js-value">js-number">80px auto;
js-rule">}
js-class">.main>js-tag">ul>js-tag">lijs-rules">{
js-rule">js-attribute">width:js-value">js-number">100px;
js-rule">js-attribute">height:js-value">js-number">100px;
js-rule">js-attribute">float:js-value">left;
js-rule">js-attribute">border-radius:js-value">js-number">10px;
js-rule">js-attribute">background:js-value">js-hexcolor">#fff;
js-rule">js-attribute">margin-bottom:js-value">js-number">20px;
js-rule">}
js-class">.main>js-tag">ul>js-tag">lijs-class">.middle_lijs-rules">{
js-rule">js-attribute">margin:js-value">js-number">0 js-number">20px;
js-rule">}
js-class">.main>js-tag">ul>js-tag">li>js-tag">imgjs-rules">{
js-rule">js-attribute">width:js-value">js-number">100%;
js-rule">js-attribute">height:js-value">js-number">100%;
js-rule">}
js-class">.main>js-tag">ul>js-tag">lijs-class">.start_btnjs-rules">{
js-rule">js-attribute">background:js-value">transparent;
js-rule">}
js-class">.main>js-tag">ul>js-tag">lijs-class">.activejs-rules">{
js-rule">js-attribute">background:js-value">yellow;
js-rule">}
html:
js xml">js-tag"><js-title">div js-attribute">class=js-value">"main" js-attribute">id=js-value">"main">
js-tag"><js-title">ul js-attribute">id=js-value">"gif_ul">
js-tag"><js-title">li js-attribute">class=js-value">"gif_li gif_li_0">
js-tag"><js-title">img js-attribute">src=js-value">"1.png" js-attribute">alt=js-value">""/>
js-tag"></js-title">li>
js-tag"><js-title">li js-attribute">class=js-value">"gif_li gif_li_1 middle_li">
js-tag"><js-title">img js-attribute">src=js-value">"2.png" js-attribute">alt=js-value">""/>
js-tag"></js-title">li>
js-tag"><js-title">li js-attribute">class=js-value">"gif_li gif_li_2">
js-tag"><js-title">img js-attribute">src=js-value">"3.png" js-attribute">alt=js-value">""/>
js-tag"></js-title">li>
js-tag"><js-title">li js-attribute">class=js-value">"gif_li gif_li_7">
js-tag"><js-title">img js-attribute">src=js-value">"4.png" js-attribute">alt=js-value">""/>
js-tag"></js-title">li>
js-tag"><js-title">li js-attribute">class=js-value">"middle_li start_btn" js-attribute">id=js-value">"start">
js-tag"><js-title">img js-attribute">src=js-value">"start.png" js-attribute">alt=js-value">""/>
js-tag"></js-title">li>
js-tag"><js-title">li js-attribute">class=js-value">"gif_li gif_li_3">
js-tag"><js-title">img js-attribute">src=js-value">"6.png" js-attribute">alt=js-value">""/>
js-tag"></js-title">li>
js-tag"><js-title">li js-attribute">class=js-value">"gif_li gif_li_6">
js-tag"><js-title">img js-attribute">src=js-value">"7.png" js-attribute">alt=js-value">""/>
js-tag"></js-title">li>
js-tag"><js-title">li js-attribute">class=js-value">"gif_li gif_li_5 middle_li">
js-tag"><js-title">img js-attribute">src=js-value">"8.png" js-attribute">alt=js-value">""/>
js-tag"></js-title">li>
js-tag"><js-title">li js-attribute">class=js-value">"gif_li gif_li_4">
js-tag"><js-title">img js-attribute">src=js-value">"9.png" js-attribute">alt=js-value">""/>
js-tag"></js-title">li>
js-tag"></js-title">ul>
js-tag"></js-title">div>
js:
js javascript"> js-keyword">var lottery={
index:-js-number">1, js-comment">//当前转动到哪个位置,起点位置
count:js-number">0, js-comment">//总共有多少个位置
timer:js-number">0, js-comment">//setTimeout的ID,用clearTimeout清除
speed:js-number">100, js-comment">//初始转动速度
times:js-number">0, js-comment">//转动次数
cycle:js-number">50, js-comment">//转动基本次数:即至少需要转动多少次再进入抽奖环节
prize:-js-number">1, js-comment">//中奖位置
init:js-function">js-keyword">functionjs-params">(id){
js-keyword">if($(js-string">"#"+id).find(js-string">".gif_li").length>js-number">0){
$lottery = $(js-string">"#"+id);
$units = $lottery.find(js-string">".gif_li");
js-keyword">this.obj = $lottery;
js-keyword">this.count = $units.length+js-number">1;
$lottery.find(js-string">".gif_li_"+js-keyword">this.index).addClass(js-string">"active");
}
},
roll:js-function">js-keyword">functionjs-params">(){
js-keyword">var index=js-keyword">this.index;
js-keyword">var count = js-keyword">this.count;
js-keyword">var lottery = js-keyword">this.obj;
$(lottery).find(js-string">".gif_li_"+index).removeClass(js-string">"active");
index += js-number">1;
js-keyword">if (index>count-js-number">1) {
index = js-number">0;
};
$(lottery).find(js-string">".gif_li_"+index).addClass(js-string">"active");
js-keyword">this.index=index;
js-keyword">return js-literal">false;
},
stop:js-function">js-keyword">functionjs-params">(index){
js-keyword">this.prize=index;
js-keyword">return js-literal">false;
}
}
js-function">js-keyword">function js-title">rolljs-params">(){
lottery.times += js-number">1;
lottery.roll();js-comment">//转动过程调用的是lottery的roll方法,这里是第一次调用初始化
js-keyword">if (lottery.times > lottery.cycle+js-number">10 && lottery.prize==lottery.index) {
clearTimeout(lottery.timer);
lottery.prize=-js-number">1;
lottery.times=js-number">0;
click=js-literal">false;
}js-keyword">else{
js-keyword">if (lottery.times<lottery.cycle) {
lottery.speed -= js-number">10;
}js-keyword">else js-keyword">if(lottery.times==lottery.cycle) {
js-keyword">var index = js-built_in">Math.random()*(lottery.count)|js-number">0;js-comment">//中奖物品位置为随机数
lottery.prize = index;
}js-keyword">else{
js-keyword">if (lottery.times > lottery.cycle+js-number">10 && ((lottery.prize==js-number">0 && lottery.index==js-number">7) || lottery.prize==lottery.index+js-number">1)) {
lottery.speed += js-number">110;
}js-keyword">else{
lottery.speed += js-number">20;
}
}
js-keyword">if (lottery.speed<js-number">40) {
lottery.speed=js-number">40;
};
lottery.timer = setTimeout(roll,lottery.speed);js-comment">//循环调用
}
js-keyword">return js-literal">false;
}
js-keyword">var click=js-literal">false;
js-comment">//转盘开始
js-function">js-keyword">function js-title">startjs-params">(){
js-keyword">if (click) {js-comment">//click控制一次抽奖过程中不能重复点击抽奖按钮,后面的点击不响应
js-keyword">return js-literal">false;
}js-keyword">else{
lottery.speed=js-number">200;
roll(); js-comment">//转圈过程不响应click事件,会将click置为false
click=js-literal">true; js-comment">//一次抽奖完成后,设置click为true,可继续抽奖
js-keyword">return js-literal">false;
}
}
window.onload=js-function">js-keyword">functionjs-params">(){
lottery.init(js-string">'gif_ul');
$(js-string">"#start").unbind().bind(js-string">"click",js-function">js-keyword">functionjs-params">(){
start();
})
}