亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

JavaScript實(shí)現(xiàn)旋轉(zhuǎn)輪播圖

 更新時(shí)間:2020年08月18日 11:39:46   作者:番茄醬炒梨子  
這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)旋轉(zhuǎn)輪播圖,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

最近一直在學(xué)習(xí)JavaScript,然后看到旋轉(zhuǎn)輪播圖的案例,就嘗試著用js做了一個(gè)簡(jiǎn)單的輪播圖,因?yàn)闊o(wú)法顯示動(dòng)態(tài)效果,所以就放個(gè)截圖:

這個(gè)效果是這樣的:一共有7張圖片,它們會(huì)自動(dòng)地向左滑動(dòng),然后左右箭頭也可以控制輪播圖的左滑和右滑,同時(shí),如果鼠標(biāo)停在圖片上,那么輪播圖會(huì)停止自動(dòng)滑動(dòng),當(dāng)鼠標(biāo)移開(kāi)時(shí),將會(huì)繼續(xù)向左輪播。
首先,我這里封裝了兩個(gè)函數(shù)(因?yàn)闀呵疫€沒(méi)有學(xué)jQuery,所以用了封裝函數(shù)的方法來(lái)實(shí)現(xiàn)),第一個(gè)函數(shù)是$函數(shù),調(diào)用可以獲取html中的元素,代碼如下:

`function $(select){
 if (typeof select != 'string') {
  console.log('傳入的參數(shù)有誤');  
  return null;
 }
 var firstChar = select.charAt(0);
 switch(firstChar){
  case '#':
  return document.getElementById(select.substr(1));
  break;
  case '.':
  if (document.getElementsByClassName){
   return document.getElementsByClassName(select.substr(1));
  } else {
   var result = [];
   var allElemnts = document.getElementsByTagName('*');
   console.log(allElemnts);
   for (var i = 0; i < allElemnts.length; i++){
   var e = allElemnts[i];
   var className = e.className;
   var classArr = className.split(' ');
   for (var j = 0; j < classArr.length; j++){
    var c = classArr[j];
    if (c == select.substr(1)) {
    result.push(e);
    break;
    }
   }
   }
   return result;
  }
  break;
  default :
  return document.getElementsByTagName(select);
 }
 }`

第二個(gè)函數(shù)是一個(gè)動(dòng)畫函數(shù),用json實(shí)現(xiàn)多條樣式的動(dòng)態(tài)改變,從而達(dá)到一個(gè)動(dòng)畫效果,代碼如下: `

function animate(element, json, fun) {
 clearInterval(element.timer);
 function getStyle(element, styleName){
 if(element.currentStyle){
  //ie瀏覽器下 直接通過(guò)currentstyle來(lái)獲取
  //return element.currentStyle.heigh;
  return element.currentStyle[styleName];
 }else{
  var computedStyle = window.getComputedStyle(element,null);
  return computedStyle[styleName];
 }
 }
 var isStop = false;
 element.timer = setInterval(function () {
 isStop = true;
 for (var key in json){
  var target = json[key];
  var current;
  if (key == 'opacity') {
  //當(dāng)動(dòng)畫的類型為透明度時(shí) 獲取的值應(yīng)該是浮點(diǎn)類型
  current = parseFloat(getStyle(element, key)) || 1;
  } else {
  //其他情況 用整數(shù)類型
  current = parseInt(getStyle(element, key)) || 0;
  }  
  var step = (target - current) / 10;
  if (key != 'opacity') {
  step = step > 0 ? Math.ceil(step) : Math.floor(step);
  }
  current += step;
  if (key == 'opacity') {
  if (Math.abs(target - current) > 0.01) {
   isStop = false;
  } else {
   current = target;
  }
  element.style.opacity = current + '';
  } else {
  if (Math.abs(target-current) > Math.abs(step)) {
   isStop = false;
  } else {
   current = target;
  }
  if (key == 'zIndex'){
   element.style.zIndex = Math.round(current);
  } else {
   element.style[key] = current + 'px';
  }  
  }  
 }
 if (isStop) {
  clearInterval(element.timer);
  console.log('動(dòng)畫完成');
  if (typeof fun == 'function') {
  fun();
  }
 }
 }, 30);
}`

接下來(lái)就要寫html的部分了,因?yàn)橹挥袔讖垐D片,所以html的部分很簡(jiǎn)單:

<body>
 <div class="box">
 <div class="content">
  <ul>
  <li><a href="#"><img src="./images/1.jpg"></a></li>
  <li><a href="#"><img src="./images/2.jpg"></a></li>
  <li><a href="#"><img src="./images/3.jpg"></a></li>
  <li><a href="#"><img src="./images/4.jpg" class="current"></a></li>
  <li><a href="#"><img src="./images/5.jpg"></a></li>
  <li><a href="#"><img src="./images/6.jpg"></a></li>
  <li><a href="#"><img src="./images/7.jpg"></a></li>
  </ul>
 </div>
 <div class="control">
  <a href="javascript:;" id="prev"></a>
  <a href="javascript:;" id="next"></a>
 </div>
 </div>
</body>

css樣式的部分也不多做敘述。

下面就是JS是部分啦,代碼也很簡(jiǎn)單,理清楚就好

 window.onload = function(){
 //定位,并給圖片設(shè)置大小透明度
 var json = [{
 width: 630,
 top: 23,
 left: 0,
 zIndex: 2,
 opacity: 0
 },{
 width: 630,
 top: 23,
 left: 0,
 zIndex: 3,
 opacity: 0
 },{
 width: 630,
 top: 23,
 left: 0,
 zIndex: 4,
 opacity: 0.6
 },{
 width: 730,
 top: 0,
 left: 125,
 zIndex: 5,
 opacity: 1
 },{
 width: 630,
 top: 23,
 left: 350,
 zIndex: 4,
 opacity: 0.6
 },{
 width: 630,
 top: 23,
 left: 350,
 zIndex: 3,
 opacity: 0
 },{
 width: 630,
 top: 23,
 left: 350,
 zIndex: 2,
 opacity: 0
 }];
function refreshImageLocatin(index){
 //默認(rèn)情況下 第i張圖對(duì)應(yīng)第i個(gè)位置
 //index=1時(shí) 第i個(gè)圖對(duì)應(yīng)i-1個(gè)位置
 //也就是第i個(gè)圖對(duì)應(yīng)i-index的位置
 var liArr = $('li');
 for(var i = 0; i < liArr.length; i++){
  var li = liArr[i];
  var locationIndex = i - index;
  console.log('i='+i);
  console.log('index='+index);
  console.log('locationIndex='+locationIndex);
  if(locationIndex < 0){
  locationIndex += 7;
  }
  var locationData = json[locationIndex];
  animate(li, locationData, null);
 }
 }

 refreshImageLocatin(0);

 var index = 0;
 $('#next').onclick = function(){
 index++;
 if(index == 7){
  index = 0;
 }
 refreshImageLocatin(index);
 }
 $('#prev').onclick = function(){
 index--;
 if(index < 0){
  index = 6;
 }
 refreshImageLocatin(index);
 }

 var nextImage = $('#next').onclick;
 var contentBox = $('.content')[0];
 //自動(dòng)播放
 var timer = setInterval(nextImage, 3000);
 //當(dāng)鼠標(biāo)移動(dòng)到圖片上,停止播放
 contentBox.onmouseover = function(){
 clearInterval(timer);
 }
 contentBox.onmouseout = function(){
 timer = setInterval(nextImage ,3000)
 }
}

以上就是旋轉(zhuǎn)輪播圖的全部?jī)?nèi)容了,給自己的學(xué)習(xí)過(guò)程做個(gè)簡(jiǎn)單的記錄,也順便鞏固一下。

相關(guān)文章

最新評(píng)論