国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

原生javascript實(shí)現(xiàn)簡(jiǎn)單的全屏效果

aristark / 1496人閱讀

摘要:要實(shí)現(xiàn)全屏滾動(dòng)的效果,無(wú)非是讓每頁(yè)的內(nèi)容頁(yè)高度達(dá)到瀏覽器窗口的高度。通過(guò)判斷鼠標(biāo)滾動(dòng)事件來(lái)設(shè)置定時(shí)器運(yùn)動(dòng)方式。每頁(yè)高度在實(shí)現(xiàn)滾輪的時(shí)候存在兼容性的問(wèn)題,首先,對(duì)于鼠標(biāo)滾動(dòng)事件,有自己的解決方法,方法叫,鼠標(biāo)滾動(dòng)的時(shí)候觸發(fā)。

要實(shí)現(xiàn)全屏滾動(dòng)的效果,無(wú)非是讓每頁(yè)的內(nèi)容頁(yè)高度達(dá)到瀏覽器窗口的高度。通過(guò)判斷鼠標(biāo)滾動(dòng)事件來(lái)設(shè)置定時(shí)器運(yùn)動(dòng)方式。
基本的html結(jié)構(gòu):

CSS:

*{
    margin:0;
    padding:0;
 }
#wrap{
    overflow: hidden;
    width:100%;
}
#main{
    height:100%;
    top:0;
    position: relative;
}
.page{
    width:100%;
    margin:0;
}
#page1{
    background:#555;
}
#page2{
    background:#6CE26C;
}
#page3{
    background:#fcfc46;
}
#page4{
    background:#ff0000;
}

如上,需要設(shè)置每個(gè)page項(xiàng)的高度大小都為窗口高度大小,并且,最外層容器,也就是wrap的高度也是一樣,如果漏了設(shè)置wrap高度,每頁(yè)的高度也是正常的,但是最后滾動(dòng)的時(shí)候?qū)嶋H上會(huì)漏出其他頁(yè)的內(nèi)容。

var wrap = document.getElementById("wrap");
var main = document.getElementById("main");
var pages = main.getElementsByClassName("page");
var pageLen = pages.length;
var pageH = document.body.clientHeight||document.documentElement.clientHeight;
wrap.style.height = pageH + "px";
console.log("wrap:"+wrap.style.height);
for(var i=0;i

javascript在實(shí)現(xiàn)滾輪的時(shí)候存在兼容性的問(wèn)題,首先,對(duì)于鼠標(biāo)滾動(dòng)事件,firefox有自己的解決方法,方法叫DOMMouseScroll,鼠標(biāo)滾動(dòng)的時(shí)候觸發(fā)。其有關(guān)鼠標(biāo)滾輪的信息則保存在detail屬性中,當(dāng)向前滾動(dòng)滾輪時(shí),其值為-3的倍數(shù),當(dāng)向后滾動(dòng)滾輪時(shí),其值為3的倍數(shù)。
其他瀏覽器(包括煩人的IE6、7)有一個(gè)名叫“mousewheel”的事件,該事件可以在任何元素上觸發(fā),而且可以冒泡(前面那個(gè)DOMMouseScroll也可以),該事件有一個(gè)屬性叫“wheelDelta”,向上滾動(dòng)鼠標(biāo)滾輪時(shí),wheelDelta是120的倍數(shù);向下滾動(dòng)鼠標(biāo)滾輪時(shí),wheelDelta是-120的倍數(shù)。
為了兼容,可以通過(guò)下面的方式:

if ((navigator.userAgent.toLowerCase().indexOf("firefox")!=-1)){   
    document.addEventListener("DOMMouseScroll",scrollFun,false);        
}else if (document.addEventListener) {  
    document.addEventListener("mousewheel",scrollFun,false);  
}else if (document.attachEvent) {  
    document.attachEvent("onmousewheel",scrollFun);   
}else{  
    document.onmousewheel = scrollFun;  
} 

滾動(dòng)事件處理函數(shù)無(wú)非就是判斷wheelDelta和delta的值還有外部容器main.offsetTop的值,然后觸發(fā)動(dòng)畫(huà)效果,這里要注意,為了防止多次觸發(fā),比如用戶在短時(shí)間內(nèi)瘋狂滾滾輪,然而不想要瘋狂觸發(fā),那么需要在觸發(fā)動(dòng)畫(huà)前后通過(guò)定時(shí)器設(shè)定閥值。
具體的實(shí)現(xiàn)參考下面代碼,已經(jīng)有注釋了:

var wrap = document.getElementById("wrap");
var main = document.getElementById("main");
var pages = main.getElementsByClassName("page");
var pageLen = pages.length;
var pageH = document.body.clientHeight||document.documentElement.clientHeight;
wrap.style.height = pageH + "px";  //注意
console.log("wrap:"+wrap.style.height);
for(var i=0;i0 && parseInt(main.offsetTop) > -(pageH*(pageLen-1))){
            //向下滾動(dòng)
            now = now - pageH; //向下翻過(guò)一頁(yè)
            toPage(now,"down");
            console.log("wrap:"+wrap.style.height);
            //console.log("down.now:"+now);
            //console.log("main:"+main.offsetTop);
        } 
        if(delta<0 && parseInt(main.offsetTop) < 0){
            //向上滾動(dòng)
            now = now + pageH;
            toPage(now,"up");
        }
        endTime = new Date().getTime();  //重置時(shí)間
    }else{  
        event.preventDefault();    
    }    
}
var sliderTime = null;
function toPage(now,direction){    
    clearInterval(sliderTime);//執(zhí)行當(dāng)前動(dòng)畫(huà)同時(shí)清除之前的動(dòng)畫(huà)
    sliderTime = setInterval(function(){
        var speed = 0;
        if(direction == "down"){
            if(now<0 && now < main.offsetTop){
                speed = -10;
                main.style.top = main.offsetTop+speed + "px";
                if(main.style.top<=now){
                    main.style.top = now + "px";
                }
            }else{  //當(dāng)now的高度達(dá)到整個(gè)頁(yè)面高度,結(jié)束運(yùn)動(dòng)
                main.style.top = now + "px";
                speed = 0;
                clearInterval(sliderTime);
            }
        }else{
            if(now<=0 && now >= main.offsetTop){
                speed = 10;
                main.style.top = main.offsetTop+speed + "px";
                if(main.style.top>=now){                    
                    main.style.top = now + "px";
                }
            }else{
                main.style.top = now + "px";
                speed = 0;
                clearInterval(sliderTime);
            }
        }        
    },10);
}   

上面的toPage方法是帶緩沖的效果,粗暴的方法不帶緩沖:

function toPageNow(now){        
        // $("#main").animate({top:(now+"px")},1000);     //jquery實(shí)現(xiàn)動(dòng)畫(huà)效果
         setTimeout("main.style.top = now + "px"",1000);     //javascript 實(shí)現(xiàn)動(dòng)畫(huà)效果
    }   

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/88869.html

相關(guān)文章

  • WebView實(shí)現(xiàn)全屏播放的一種方法

    摘要:今天來(lái)介紹一種簡(jiǎn)單易行粗暴的方式來(lái)實(shí)現(xiàn)的視頻全屏播放。通過(guò)在一些主流視頻網(wǎng)站上的測(cè)試,在愛(ài)奇藝,土豆,芒果,等可正常全屏,在騰訊,樂(lè)視,等網(wǎng)站仍然無(wú)法全屏。經(jīng)測(cè)試,騰訊和沒(méi)有問(wèn)題了,樂(lè)視和仍然不可以全屏,即使已經(jīng)找到了全屏按鈕的標(biāo)識(shí)。   用過(guò)WebView的開(kāi)發(fā)者們肯定都知道這里面的坑數(shù)不勝數(shù),加載緩慢,內(nèi)存泄露,文件選擇......沒(méi)錯(cuò),全屏播放視頻,這又是一個(gè)大坑。一個(gè)沒(méi)有修飾過(guò)...

    baoxl 評(píng)論0 收藏0
  • WebView實(shí)現(xiàn)全屏播放的一種方法

    摘要:今天來(lái)介紹一種簡(jiǎn)單易行粗暴的方式來(lái)實(shí)現(xiàn)的視頻全屏播放。通過(guò)在一些主流視頻網(wǎng)站上的測(cè)試,在愛(ài)奇藝,土豆,芒果,等可正常全屏,在騰訊,樂(lè)視,等網(wǎng)站仍然無(wú)法全屏。經(jīng)測(cè)試,騰訊和沒(méi)有問(wèn)題了,樂(lè)視和仍然不可以全屏,即使已經(jīng)找到了全屏按鈕的標(biāo)識(shí)。   用過(guò)WebView的開(kāi)發(fā)者們肯定都知道這里面的坑數(shù)不勝數(shù),加載緩慢,內(nèi)存泄露,文件選擇......沒(méi)錯(cuò),全屏播放視頻,這又是一個(gè)大坑。一個(gè)沒(méi)有修飾過(guò)...

    red_bricks 評(píng)論0 收藏0
  • h5視頻播放踩坑記錄

    隨著抖音、快手這類的視頻類app的火爆,移動(dòng)端h5視頻類應(yīng)用也隨之興起,使用video播放的場(chǎng)景也越來(lái)越多,本篇文章主要例舉了移動(dòng)端視頻播放的一些場(chǎng)景和個(gè)人在開(kāi)發(fā)過(guò)程中遇到的一些問(wèn)題,希望在看過(guò)這篇文章后,能對(duì)開(kāi)發(fā)者在移動(dòng)端使用video播放時(shí)快速開(kāi)發(fā)減少踩坑 全屏播放 視頻的全屏播放是移動(dòng)端一個(gè)很常見(jiàn)的場(chǎng)景,因此我們需要對(duì)video設(shè)置全屏播放,全屏播放用到的方法是requestFullscre...

    wenshi11019 評(píng)論0 收藏0
  • h5視頻播放踩坑記錄

    隨著抖音、快手這類的視頻類app的火爆,移動(dòng)端h5視頻類應(yīng)用也隨之興起,使用video播放的場(chǎng)景也越來(lái)越多,本篇文章主要例舉了移動(dòng)端視頻播放的一些場(chǎng)景和個(gè)人在開(kāi)發(fā)過(guò)程中遇到的一些問(wèn)題,希望在看過(guò)這篇文章后,能對(duì)開(kāi)發(fā)者在移動(dòng)端使用video播放時(shí)快速開(kāi)發(fā)減少踩坑 全屏播放 視頻的全屏播放是移動(dòng)端一個(gè)很常見(jiàn)的場(chǎng)景,因此我們需要對(duì)video設(shè)置全屏播放,全屏播放用到的方法是requestFullscre...

    heartFollower 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<