国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

原生js實現簡單的焦點圖效果實例

2019-11-19 14:44:09
字體:
來源:轉載
供稿:網友

用到一些封裝好的運動函數,主要是定時器

效果為圖片和圖片的描述定時自動更換。

<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title></title> <style type="text/css">  ul,  li,  p,  h3 {  padding: 0;  margin: 0;  list-style: none;  }    img {  border: none;  vertical-align: top;  }    #bg_box {  width: 1000px;  height: 590px;  margin: 50px auto;  position: relative;  background: url(img/bg1.jpg) no-repeat;  }    .pic {  width: 440px;  height: 274px;  position: absolute;  top: 50px;  left: 220px;  overflow: hidden;  }    .li_box {  width: 1760px;  height: 274px;  position: absolute;  left: 0;  }    .tags {  width: 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: white;  padding-left: 20px;  padding-top: 15px;  box-sizing: border-box;  }    .tags:nth-of-type(1) {  /*bottom: 0;*/  }    .img {  float: left;  width: 440px;  height: 274px;  }    h3 {  font: bold 20px/30px "微軟雅黑";  }    p {  font: 16px/30px "微軟雅黑";  } </style> <script src="tween.js"></script> <script src="commom.js"></script> <script type="text/javascript">  window.onload = function() {  //獲取元素  var liBbox = $('ul')[0];  var li = $('li');  var tags = $('.tags')  var num = 0; //設置初始位置  Change()  function Change() {   var M = tags[num];   MTween(M, 'bottom', 0, 500, 'px', 'linear', function() { //先讓描述內容出現   num++   if(num > li.length - 1) { //邊界設置。    return;   }   setTimeout(function() {    MTween(M, 'bottom', -80, 500, 'px', 'linear', function() { //讓描述內容不顯示    MTween(liBbox, 'left', -num * 440, 800, 'px', 'linear', function() {     Change();    }); //切換圖片    });   }, 1000)   });  }  } </script> </head> <body> <section id="bg_box">  <div class="pic">  <ul class="li_box">   <li>   <img class="img" src="img/a5.gif">   </li>   <li>   <img class="img" src="img/a6.gif">   </li>   <li>   <img class="img" src="img/a7.gif">   </li>   <li>   <img class="img" src="img/a8.gif">   </li>  </ul>  <div class="tags">   <h3 class="title">下雨了~~~</h3>   <p class="tag">這是一個適合在家睡覺的日子!!</p>  </div>  <div class="tags">   <h3 class="title">包餃子~~~</h3>   <p class="tag">一只會居家過日子的小狐貍!!</p>  </div>  <div class="tags">   <h3 class="title">生氣了~~~</h3>   <p class="tag">吃掉好吃的就不生氣了!!</p>  </div>  <div class="tags">   <h3 class="title">出發了~~~</h3>   <p class="tag">來一段說走就走的旅行!!</p>  </div>  </div> </section> </body></html>

commom.js

function MTween(obj,attr,end,duration,unit,way,callBack){ if(obj.isAnim) return; //obj開始運動了 自定義屬性 obj.isAnim = true; if(!way){ //如果用戶沒有選擇運動方式就默認勻速 way = 'linear'; } if(!unit){ //如果用戶沒有選擇運動方式就默認勻速 unit = ''; } var start = parseFloat(getStyle(obj,attr));//起始位置// var end = 1000;//目標點// var duration = 1000;//動畫執行的總時間 單位是毫秒 var startTime = Date.now(); var s = end - start; //總路程// var v = s/duration; //計算出來的速度 //每次20ms走一幀 clearInterval(timer); var timer = 0; timer = setInterval(function(){ var endTime = Date.now(); //計算出當前時間 var t = endTime-startTime; if(t>=duration){  t = duration;  clearInterval(timer);//到達目標點要清除定時器 }//  obj.style[attr] = t*s/duration+start+'px';// console.log(Tween[way](t,start,s,duration)) obj.style[attr] = Tween[way](t,start,s,duration)+unit;   //透明度的兼容處理  if(attr=='opacity'){  obj.style.filter = 'Alpha(opacity='+Tween[way](t,start,s,duration)*100+')';  } if(t==duration){  obj.isAnim = false;  //等到上一個動畫完成 然后再調用  if(callBack){  callBack();  } } },20);}

tween.js

/** t : time 已過時間 當前時間-初始時間* b : begin 起始值* c : count 總的運動值 總路程* d : duration 持續時間 總時間** s = vt; => c = t*c/d 這里只計算總共要運動的路程 ,不包括起始位置** attrVal = t*c/d + b;** 曲線方程** *///Tween.linear();var Tween = { linear: function (t, b, c, d){ //勻速 return c*t/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/2*t*t + b; } return -c/2 * ((--t)*(t-2) - 1) + b; }, easeInStrong: function(t, b, c, d){ //加加速曲線 return c*(t/=d)*t*t*t + b; }, easeOutStrong: function(t, b, c, d){ //減減速曲線 return -c * ((t=t/d-1)*t*t*t - 1) + b; }, easeBothStrong: function(t, b, c, d){ //加加速減減速曲線 if ((t/=d/2) < 1) {  return c/2*t*t*t*t + b; } return -c/2 * ((t-=2)*t*t*t - 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=d*0.3;  } if (!a || a < Math.abs(c)) {  a = c;   var s = p/4; } else {  var s = p/(2*Math.PI) * Math.asin (c/a); } return -(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.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=d*0.3; } if (!a || a < Math.abs(c)) {  a = c;  var s = p / 4; } else {  var s = p/(2*Math.PI) * Math.asin (c/a); } return a*Math.pow(2,-10*t) * Math.sin( (t*d-s)*(2*Math.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.3*1.5); } if ( !a || a < Math.abs(c) ) {  a = c;   var s = p/4; } else {  var s = p/(2*Math.PI) * Math.asin (c/a); } if (t < 1) {  return - 0.5*(a*Math.pow(2,10*(t-=1)) *    Math.sin( (t*d-s)*(2*Math.PI)/p )) + b; } return a*Math.pow(2,-10*(t-=1)) *   Math.sin( (t*d-s)*(2*Math.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*(t*t*(((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 - Tween['bounceOut'](d-t, 0, c, d) + b; },  bounceOut: function(t, b, c, d){//* if ((t/=d) < (1/2.75)) {  return c*(7.5625*t*t) + 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 Tween['bounceIn'](t*2, 0, c, d) * 0.5 + b; } return Tween['bounceOut'](t*2-d, 0, c, d) * 0.5 + c*0.5 + b; }}

以上這篇原生js實現簡單的焦點圖效果實例就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 上林县| 九寨沟县| 铜梁县| 夏邑县| 罗城| 宜昌市| 女性| 德兴市| 锡林浩特市| 山西省| 化州市| 迭部县| 贵南县| 临洮县| 旺苍县| 济南市| 象山县| 德惠市| 宜兰县| 祁阳县| 巴林右旗| 尼玛县| 彰武县| 广饶县| 鹤壁市| 眉山市| 拉孜县| 苍梧县| 天柱县| 梁河县| 惠来县| 黎城县| 循化| 福清市| 岢岚县| 南充市| 桑植县| 桂平市| 宁国市| 甘南县| 东安县|