js實現相冊翻頁,滾動,切換,輪播功能


我們在做web開發的時候,前台的效果要求是很高的,因為對於不懂程序的用戶來說,前台的視覺沖擊,無疑是對我們產品的第一印象。

在完成web圖片各種功能上,很多框架有很絢麗的效果,但今天我們來看看用原生的js如何簡單的實現這些功能。歡迎大家交流指正。

 

 1.相冊左右點擊翻頁功能

實現步驟

1.需要一個HTML標簽img,添加一張圖片。

2.然后需要添加一個js事件onmouseover,使每次鼠標移到圖片上指針都會隨左右發生變化。

3.最后需要添加一個點擊事件,根據鼠標的在左邊還是右邊,判斷是應該上一頁還是下一頁翻動相冊。

HTML代碼:

<body>
        <div>
            <img src="img/pic1.jpg" id = "bigimg" onmouseover="upNext(this)" width="300" height="300">
        </div>
    </body>

JS代碼:

<script type="text/javascript">

            var arr = new Array();
            arr[0] = "1.jpg";
            arr[1] = "2.jpg";
            arr[2] = "3.jpg";
            arr[3] = "4.jpg";
            arr[4] = "5.jpg";
            var index = 0;
            function upNext(bigimg) {
            var action;
            var width = bigimg.width;
            var height = bigimg.height;
            bigimg.onmousemove = function () {
                if (window.event.offsetX < width / 2) {
                    action = 'left'
                    bigimg.style.cursor = 'url(img/arr_left.cur),auto';//將鼠標指針更換成向左指向箭頭
                } 
                else {
                    bigimg.style.cursor = 'url(img/arr_right.cur),auto';
                    action = 'right';
                }
            }
            bigimg.onmouseup = function () {
                if (action == 'left') {
                   if(index==0)
                       return ;
                   else
                       index--;
                }
                else {
                  if(index == 4)
                    return;
                  else
                      index ++ ;
                }
                this.src = 'img/pic'+arr[index];
            }
        }
        </script>
        

 !!此處需要注意,有些瀏覽器並不兼容event事件。

 

2.自動切換功能

實現步驟:

1.首先還是需要一個img標簽,顯示一張圖片。

2.需要一個數組,記錄每張圖片的路徑,設置,跳轉間隔時間。

3.添加一個js方法,根據數組下標,更改圖片src。利用setInterval方法循環執行。

HTML:

<body>
        <img src="img/pic1.jpg" width="427" height="219" id="showpic" />
</body>

js:

<script language =javascript >
        var curIndex=0;
        //時間間隔 單位毫秒
        var timeInterval=3000;
        var arr=new Array();
        arr[0]="1.jpg";
        arr[1]="2.jpg";
        arr[2]="3.jpg";
        arr[3]="4.jpg";
        arr[4]="5.jpg";
        setInterval(changeImg,timeInterval);//每隔timeInterval時間,執行一次changeImg事件
        function changeImg()
        {
            var obj=document.getElementById("showpic");
            if (curIndex==arr.length-1)
            {
                curIndex=0;
            }
            else
            {
                curIndex+=1;
            }
            obj.src="img/pic"+arr[curIndex];
        }
    </script>

 

3.循環滾動功能(右移)

 實現步驟:

1.我們需要對html進行布局,將所有要顯示的圖片都放在一行以內。此處注意:行內所有圖片的寬度需大於外部容器的大小,否則不能達到預想效果。

2.設置滾動事件,寬度,滾動方向。此處注意,滾動速度,數字越大,滾動的越慢(每間隔一段時間執行,數字越大間隔時間越長,滾動速度越慢);滾動的方向其實就是if else中的

簡單的邏輯判斷以及自增自減實現的。

3.第三部分,我們需要添加js事件,讓鼠標放到滾動圖片上時,時滾動終止;鼠標離開時,繼續滾動。

HTML:

!!此處添加需要展示的所有圖片。布局不僅限於table標簽,多種html標簽都能實現。

<div id=demo style="overflow:hidden;width: 300px; height: 100px;">
            <table>
                <tr>
                    <td id=demo1 valign=top>
                        <table align=left cellpadding=0 cellspace=0 border=0>
                            <tr>
                                <td>
                                    <img src="img/jg.jpg">
                                </td>
                                <td>
                                    <img src="img/fxz.jpg">
                                </td>
                                <td>
                                    <img src="img/gh.jpg">
                                </td>
                                <td>
                                    <img src="img/yj.jpg">
                                </td>
                                <td>
                                    <img src="img/zzh.jpg">
                                </td>
                            </tr>
                        </table>
                    </td>
                    <td id=demo2 valign=top ><td>
                </tr>
            </table>
        </div>

js:

<script> 
            var speed=30 ;//設置滾動速度
            demo2.innerHTML=demo1.innerHTML ;
            demo.scrollLeft=demo.scrollWidth ;
            function Marquee(){ 
                if(demo.scrollLeft<=0) 
                demo.scrollLeft+=demo2.offsetWidth; 
                else{ 
                    demo.scrollLeft--; 
                } 
            } 
            var MyMar=setInterval(Marquee,speed) ;
            demo.onmouseover=function() {clearInterval(MyMar);} 
            demo.onmouseout=function() {MyMar=setInterval(Marquee,speed);} 
</script>

 

4.相冊簡單輪播實現

實現步驟:

1.首先對html進行圖片布局,使得上面一個有一個大的img標簽,下面排列若干個小的img標簽。

2.我們需要添加兩個js事件,分別在鼠標移到小img標簽和移出小img標簽時產生效果。

3.在鼠標移到小img標簽上時,使大的img圖片src變化,並且使小img標簽的border屬性值顏色發生改變,在鼠標移出時顏色改變回來。

!!此處注意,大家需要使用簡單的css進行頁面的排版與裝飾,也可以躲在css上下些功夫,使頁面更漂亮。

HTML:

<body>
        <div><img src="img/pic1.jpg" width="320" height="300" id="bigimg"></div>
        <div>
            <ul>
                <li><img src="img/pic1.jpg" width="60" height="60" onmouseover="rep(this);" onmouseout="recover(this)"></li>
                <li><img src="img/pic2.jpg" width="60" height="60" onmouseover="rep(this);" onmouseout="recover(this)"></li>
                <li><img src="img/pic3.jpg" width="60" height="60" onmouseover="rep(this);" onmouseout="recover(this)"></li>
                <li><img src="img/pic4.jpg" width="60" height="60" onmouseover="rep(this);" onmouseout="recover(this)"></li>
                <li><img src="img/pic5.jpg" width="60" height="60" onmouseover="rep(this);" onmouseout="recover(this)"></li>
            </ul>
        </div>
</body>

js:

<script type="text/javascript">
            function rep(obj){
                document.getElementById("bigimg").src = obj.src ;
                obj.style.border = "2px solid blue" ;
            }
            function recover(obj){
                obj.style.border = "2px solid black" ;
            }
</script>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM