web前端滾動效果

這次寫的是滾動字體,首先我的附上代碼:

offsetWidth:width+padding+border的值。
offsetLeft:獲取當前對象與父元素之間的距離.
scrollLeft:是該對象實現的內容與實際內容的距離,即當前滾動的距離。

if(scroll_end.offsetWidth-scroll_div.scrollLeft<=0)
  scroll_div.scrollLeft-=scroll_begin.offsetWidth;

如果字體已經滾出的長度大於scroll_end的原長度,就要使其減掉scroll_begin的長度,即復原。(因爲這三者的長度都一樣).

MyMar = setInterval(Marquee,speed);
即每過speed毫秒,實行一次這個函數。

clearInterval(MyMar);
即清除這個設置的timeout。

HTML代碼:

<div  id="scroll_div" class="scroll_div">
<div id="scroll_begin">
<span id="welcome">
歡迎光臨本網站,你想要的這裏都有哦!
</span>
</div>
<div id="scroll_end">
</div>
</div >


js代碼:

function ScrollImgLeft(){
  var speed=50;
  var MyMar = null;
 var scroll_begin = document.getElementById("scroll_begin");
 var scroll_end = document.getElementById("scroll_end");
 var scroll_div = document.getElementById("scroll_div");
 scroll_end.innerHTML=scroll_begin.innerHTML;
 function Marquee(){
  if(scroll_end.offsetWidth-scroll_div.scrollLeft<=0)
   scroll_div.scrollLeft-=scroll_begin.offsetWidth;
  else
   scroll_div.scrollLeft++;
  }
 var MyMar=setInterval(Marquee,speed);
  scroll_div.onmouseover = function(){
       clearInterval(MyMar);
     }
  scroll_div.onmouseout = function(){
       MyMar = setInterval(Marquee,speed);     
     }  
}

function ScrollImgLeft(){
  var speed=50;
  var MyMar = null;
 var scroll_begin = document.getElementById("scroll_begin");
 var scroll_end = document.getElementById("scroll_end");
 var scroll_div = document.getElementById("scroll_div");
 scroll_end.innerHTML=scroll_begin.innerHTML;
 function Marquee(){
  if(scroll_end.offsetWidth-scroll_div.scrollLeft<=0)
   scroll_div.scrollLeft-=scroll_begin.offsetWidth;
  else
   scroll_div.scrollLeft++;
  }
 var MyMar=setInterval(Marquee,speed);
  scroll_div.onmouseover = function(){
       clearInterval(MyMar);
     }
  scroll_div.onmouseout = function(){
       MyMar = setInterval(Marquee,speed);     
     }  

}


圖片滾動:圖片滾動跟上面差不多,特別的是如果是循環無縫滾動的話,要將ul的innerHTML設置爲原來的兩倍,這樣在最後的出現時,第一個可以無縫銜接在最後一個後面。參考網址:http://www.jb51.net/article/78342.htm

var oDiv = document.getElementById('scroll');
      var oUl = document.getElementById('ul1');
      var speed = -1300;
      var oLi= document.getElementsByTagName('li');
       oUl.style.width = oLi.length*1300+'px';
       
       function move(){
        if(oUl.offsetLeft<=-(oUl.offsetWidth*3/4)){
           oUl.style.left = 0;
        }
        else{
 
        oUl.style.left = oUl.offsetLeft + speed + 'px';
          }
      }
 
      var timer = setInterval(move,3000);//全局變量 ,保存返回的定時器
 
      oDiv.addEventListener('mouseout', function () {
        timer = setInterval(move,3000);
      },false);
      oDiv.addEventListener('mousemove', function () {
        clearInterval(timer);//鼠標移入清除定時器

      },false);


右擊出現自定義菜單:

代碼:

e.clientX:被觸發時鼠標指針向對於瀏覽器頁面(或客戶區)的水平座標。 客戶區指的是當前窗口。

function click_right(){
  var wrap = document.getElementById('wrapper');  
  wrap.style.display = 'none';  
 
 document.getElementById("form1").oncontextmenu = function(event){
   var e = event || window.event;
   wrap.style.display = "block";
   wrap.style.left = e.clientX+'px';
   wrap.style.top = e.clientY +'px';
    return false;//取消右鍵點擊的默認事件
 }
   document.getElementById("form1").οnclick= function(e){
       if(e.button==2)
       {
     wrap.style.display = 'block';
       }
       if(e.button==0)
       {
            wrap.style.display = 'none';
       }
  }

}

特別要注意的是,要讓出現的菜單漂浮在div上,要將該div的position設置爲relative,菜單的position設置爲absolute。

最後就是實現點擊上、下一張圖片相應的變化,懸浮在響應的數字上圖片也變化,鼠標移開,圖片自動滾動,首先附上參考網址:https://blog.csdn.net/q908555281/article/details/70314080

附上我的代碼:

html代碼:
<div id="wrapper">
          <div id="imgs">
               <ul>
                    <li><a href=""><img src="./image/coin.jpg" alt=""></a></li>
                    <li><a href=""><img src="./image/coin1.jpg" alt=""></a></li>
                    <li><a href=""><img src="./image/coin2.jpg" alt=""></a></li>
                    <li><a href=""><img src="./image/coin3.png" alt=""></a></li>
               </ul>
          </div>
          <div id="nav">
               <ul>
                    <li><a class="current">1</a></li>
                    <li><a>2</a></li>
                    <li><a>3</a></li>
                    <li><a>4</a></li>
               </ul>
          </div>
          <div id="previous"><</div>
          <div id="next">></div>

</div>


js代碼:
function scroll(){
       var imgs_div=document.getElementById("imgs");
     var nav_div=document.getElementById("nav");  
     //獲取到圖片輪播的ul對象數組  
     var imgsUl=imgs_div.getElementsByTagName("ul")[0];
     imgsUl.style.left="0";
     //獲取到遠點的ul對象數組  
     var nav=nav_div.getElementsByTagName("ul")[0];  
     //上一個  
     var previous=document.getElementById("previous");  
     //下一個  
     var next =document.getElementById("next");
        var index=1;
     function btnShow(cur_index){
     var list=nav.children;  
     for(var i=0;i<nav.children.length;i++){  
          nav.children[i].children[0].className="hidden";  
     }  
     nav.children[cur_index-1].children[0].className="current";  
    }  
      var animTimer;  
     previous.οnclick=function(){  
            index-=1;  
            if(index<1){  
                 index=4;  
            }  
            animate(1280);  
            btnShow(index);  

       } 


       next.οnclick=function(){
            index+=1;  
            if(index>4){  
                 index=1;  
            }  
            animate(-1280);  
            btnShow(index);  
       }  
      
       function animate(offset){
            var newLeft=parseInt(imgsUl.offsetLeft)+offset;
            if(newLeft>0){          //如果圖片已經右滾到第一張,讓它回到倒數第一張
                 show(-3840);      
            }else if(newLeft<-3840){  //如果圖片已經左滾到最後一張,讓它回到第一張
                 show(0);      
            }else{
                 show(newLeft);  
            }  
      
       }  
       function show(offset)
       {
          imgsUl.style.left=offset+"px";
       }
    var timer;  
    function play(){
         timer=setInterval(function(){  
          next.onclick();  
         },2000)  
    }  
      function initImgs(cur_index){    //點擊上下或數字,不需要自動播放
      clearInterval(timer);  
      clearInterval(animTimer);  
      var off=cur_index*1280;  
      imgsUl.style.left=-off+"px";  
    }  
     
       for(var i=0;i<nav.children.length;i++){  
         nav.children[i].index=i;  
         var sd=nav.children[i].index;  
         nav.children[i].οnmοuseοver=function(){
              var now_index=this.index;  
              //這裏很重要,要讓當前的圖片的index的值等於鼠標選中的圖片   
              index=this.index+1;  
              initImgs(this.index);  
              btnShow(this.index+1);  
         }  
          nav.children[i].οnmοuseοut=function(){  
               play();  
          }  
       }

  }

好了,就是這些了,我也不知道最後會不會被採取。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章