原生js实现简单的焦点图效果实例
家电修理 2023-07-16 19:17www.caominkang.com电器维修
用到一些封装好的运动函数,主要是定时器
效果为图片和图片的描述定时自动更换。
ul, li, p, h3 { padding: 0; margin: 0; list-style: none; } img { border: none; vertical-align: ; } #bg_box { idth: 1000px; height: 590px; margin: 50px auto; position: relative; background: url(img/bg1.jpg) no-repeat; } .pic { idth: 440px; height: 274px; position: absolute; : 50px; left: 220px; overflo: hidden; } .li_box { idth: 1760px; height: 274px; position: absolute; left: 0; } .tags { idth: 440px; height: 80px; position: absolute; bottom: -80px; background-image: linear-gradient(0deg, rgba(0, 0, 0, 0.4) 0%, rgba(255, 255, 255, 0) 100%); color: hite; padding-left: 20px; padding-: 15px; box-sizing: border-box; } .tags:nth-of-type(1) { } .img { float: left; idth: 440px; height: 274px; } h3 { font: bold 20px/30px "微软雅黑"; } p { font: 16px/30px "微软雅黑"; }
下雨了~~~
这是一个适合在家睡觉的日子!!
包饺子~~~
一只会居家过日子的小狐狸!!
生气了~~~
吃掉好吃的就不生气了!!
出发了~~~
来一段说走就走的旅行!!
mom.js
function MTeen(obj,attr,end,duration,unit,ay,callBack){ if(obj.isAnim) return; //obj开始运动了 自定义属性 obj.isAnim = true; if(!ay){ //如果用户没有选择运动方式就默认匀速 ay = 'linear'; } if(!unit){ //如果用户没有选择运动方式就默认匀速 unit = ''; } var start = parseFloat(getStyle(obj,attr));//起始位置 // var end = 1000;//目标点 // var duration = 1000;//动画执行的总时间 单位是毫秒 var startTime = Date.no(); var s = end - start; //总路程 // var v = s/duration; //计算出来的速度 //每次20ms走一帧 clearInterval(timer); var timer = 0; timer = setInterval(function(){ var endTime = Date.no(); //计算出当前时间 var t = endTime-startTime; if(t>=duration){ t = duration; clearInterval(timer);//到达目标点要清除定时器 } // obj.style[attr] = ts/duration+start+'px'; // console.log(Teen[ay](t,start,s,duration)) obj.style[attr] = Teen[ay](t,start,s,duration)+unit; //透明度的兼容处理 if(attr=='opacity'){ obj.style.filter = 'Alpha(opacity='+Teen[ay](t,start,s,duration)100+')'; } if(t==duration){ obj.isAnim = false; //等到上一个动画完成 然后再调用 if(callBack){ callBack(); } } },20); }
teen.js
//Teen.linear(); var Teen = { linear: function (t, b, c, d){ //匀速 return ct/d + b; }, easeIn: function(t, b, c, d){ //加速曲线 return c(t/=d)t + b; }, easeOut: function(t, b, c, d){ //减速曲线 return -c (t/=d)(t-2) + b; }, easeBoth: function(t, b, c, d){ //加速减速曲线 if ((t/=d/2) < 1) { return c/2tt + b; } return -c/2 ((--t)(t-2) - 1) + b; }, easeInStrong: function(t, b, c, d){ //加加速曲线 return c(t/=d)ttt + b; }, easeOutStrong: function(t, b, c, d){ //减减速曲线 return -c ((t=t/d-1)ttt - 1) + b; }, easeBothStrong: function(t, b, c, d){ //加加速减减速曲线 if ((t/=d/2) < 1) { return c/2tttt + b; } return -c/2 ((t-=2)ttt - 2) + b; }, elasticIn: function(t, b, c, d, a, p){ //正弦衰减曲线(弹动渐入) if (t === 0) { return b; } if ( (t /= d) == 1 ) { return b+c; } if (!p) { p=d0.3; } if (!a || a < Math.abs(c)) { a = c; var s = p/4; } else { var s = p/(2Math.PI) Math.asin (c/a); } return -(aMath.po(2,10(t-=1)) Math.sin( (td-s)(2Math.PI)/p )) + b; }, elasticOut: function(t, b, c, d, a, p){ //正弦增强曲线(弹动渐出) if (t === 0) { return b; } if ( (t /= d) == 1 ) { return b+c; } if (!p) { p=d0.3; } if (!a || a < Math.abs(c)) { a = c; var s = p / 4; } else { var s = p/(2Math.PI) Math.asin (c/a); } return aMath.po(2,-10t) Math.sin( (td-s)(2Math.PI)/p ) + c + b; }, elasticBoth: function(t, b, c, d, a, p){ if (t === 0) { return b; } if ( (t /= d/2) == 2 ) { return b+c; } if (!p) { p = d(0.31.5); } if ( !a || a < Math.abs(c) ) { a = c; var s = p/4; } else { var s = p/(2Math.PI) Math.asin (c/a); } if (t < 1) { return - 0.5(aMath.po(2,10(t-=1)) Math.sin( (td-s)(2Math.PI)/p )) + b; } return aMath.po(2,-10(t-=1)) Math.sin( (td-s)(2Math.PI)/p )0.5 + c + b; }, backIn: function(t, b, c, d, s){ //回退加速(回退渐入) if (typeof s == 'undefined') { s = 1.70158; } return c(t/=d)t((s+1)t - s) + b; }, backOut: function(t, b, c, d, s){ if (typeof s == 'undefined') { s = 3.70158; //回缩的距离 } return c((t=t/d-1)t((s+1)t + s) + 1) + b; }, backBoth: function(t, b, c, d, s){ if (typeof s == 'undefined') { s = 1.70158; } if ((t /= d/2 ) < 1) { return c/2(tt(((s=(1.525))+1)t - s)) + b; } return c/2((t-=2)t(((s=(1.525))+1)t + s) + 2) + b; }, bounceIn: function(t, b, c, d){ //弹球减振(弹球渐出) return c - Teen['bounceOut'](d-t, 0, c, d) + b; }, bounceOut: function(t, b, c, d){// if ((t/=d) < (1/2.75)) { return c(7.5625tt) + b; } else if (t < (2/2.75)) { return c(7.5625(t-=(1.5/2.75))t + 0.75) + b; } else if (t < (2.5/2.75)) { return c(7.5625(t-=(2.25/2.75))t + 0.9375) + b; } return c(7.5625(t-=(2.625/2.75))t + 0.984375) + b; }, bounceBoth: function(t, b, c, d){ if (t < d/2) { return Teen['bounceIn'](t2, 0, c, d) 0.5 + b; } return Teen['bounceOut'](t2-d, 0, c, d) 0.5 + c0.5 + b; } }
以上这篇原生js实现简单的焦点图效果实例就是我分享给大家的全部内容了,电脑维修网希望能给大家一个参考,也电脑维修网希望大家多多支持考高分网。
空调维修
- 温岭冰箱全国统一服务热线-全国统一人工【7X2
- 荆州速热热水器维修(荆州热水器维修)
- 昆山热水器故障码5ER-昆山热水器故障码26
- 温岭洗衣机24小时服务电话—(7X24小时)登记报
- 统帅热水器售后维修服务电话—— (7X24小时)登
- 阳江中央空调统一电话热线-阳江空调官方售后电
- 乌鲁木齐阳春燃气灶厂家服务热线
- 珠海许昌集成灶售后服务电话-全国统一人工【
- 乌鲁木齐中央空调维修服务专线-乌鲁木齐中央空
- 新沂热水器故障电话码维修-新沂热水器常见故障
- 诸城壁挂炉24小时服务热线电话
- 靖江空调24小时服务电话-——售后维修中心电话
- 空调室外滴水管维修(空调室外排水管维修)
- 九江壁挂炉400全国服务电话-(7X24小时)登记报修
- 热水器故障码f.22怎么解决-热水器f0故障解决方法
- 营口热水器售后维修服务电话—— 全国统一人工