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

資訊專欄INFORMATION COLUMN

002-DOM事件實(shí)例-實(shí)現(xiàn)一個(gè)可以拖拽的登陸窗口

Sanchi / 2580人閱讀

摘要:項(xiàng)目需求及基本的和相信大家都用過登陸框,它可以在頁(yè)面中任意的拖拽,然后點(diǎn)擊狀態(tài)可以切換各種狀態(tài)。

前言:這是跟著慕課網(wǎng)一個(gè)老師的視頻做的,這幾天在重新的梳理自己,寫完這個(gè)例子要系統(tǒng)的學(xué)一下jQuery,我司現(xiàn)在用的還是比較多,畢竟用了它不用考慮IE兼容性,可以讓開發(fā)更有效率。

1.項(xiàng)目需求及基本的HTMLCSS

相信大家都用過QQ登陸框,它可以在頁(yè)面中任意的拖拽,然后點(diǎn)擊狀態(tài)可以切換各種狀態(tài)。
首先做出HTML的結(jié)構(gòu)

    
帳 號(hào):
密 碼:
狀態(tài)
2.實(shí)現(xiàn)拖拽登錄框

CSS部分省略不寫

由于涉及到大量的操作class類名的操作,首先封裝一個(gè)可以兼容IE取class類名的函數(shù),因?yàn)镮E10以前是不支持document.getElementByClassName()

    /**
     * 
     * @clsName 要找的className的名字
     * @parent 可選參數(shù),傳入父元素就在父元素下找所有的className
     */
    function getByClass(clsName, parent) {
        //如果可以用getElementsByClassName
        if(document.getElementsByClassName){
            return document.getElementsByClassName(clsName);
        }
        //加入傳入的parent存在就用document.getElementById(parent)取父元素,減少判斷,否則oParent就等于document
        var oParent = parent ? document.getElementById(parent) : document,
            eles = [],  //定義一個(gè)空的數(shù)組
            elements = oParent.getElementsByTagName("*");   //取所有的標(biāo)簽
    
        for (var i = 0, l = elements.length; i < l; i++) {
            if (elements[i].className == clsName) {
                eles.push(elements[i]);
            }
        }
        return eles;
    }

在頁(yè)面加載完成后執(zhí)行一個(gè)函數(shù)

    window.onload = drag;

函數(shù)drag

    function drag(){
        //首選取出要點(diǎn)擊然后拖拽的區(qū)域
        var oTitle = getByClass("login_logo_webqq", "loginPanel")[0];
        //然后給這個(gè)元素綁定一個(gè)鼠標(biāo)按下時(shí)候的時(shí)間,鼠標(biāo)按下時(shí)執(zhí)行函數(shù)fnDown()
        oTitle.onmousedown = fnDown;
    }

函數(shù)fnDown()

    function fnDowm(event) {
        //兼容一下IE的事件
        event = event || window.event;
        //取到整個(gè)要拖拽的登陸框的id
        var oDrag = document.getElementById("loginPanel"),
            //光標(biāo)按下時(shí),光標(biāo)和面板之間的距離
            //event.clientX是光標(biāo)按下時(shí),光標(biāo)距離窗口水平方向的距離
            //event.clientY是光標(biāo)按下時(shí),光標(biāo)距離窗口垂直方向的距離
            //oDrag.offsetLeft面板距離窗口的水平距離
            disX = event.clientX - oDrag.offsetLeft,
            disY = event.clientY - oDrag.offsetTop;
        //因?yàn)楣鈽?biāo)是在整個(gè)窗口移動(dòng),所以為窗口綁定一個(gè)鼠標(biāo)移動(dòng)的事件
        document.onmousemove = function(event){
            event = event || window.event;
            fnMove(event,disX,disY);
        }
    }

函數(shù)fnMove()
只需要實(shí)現(xiàn)光標(biāo)按下時(shí),光標(biāo)移動(dòng)到某點(diǎn)時(shí),登錄框處的位置恰好等于光標(biāo)此時(shí)減去光標(biāo)到登陸框邊緣的距離

    //
    function fnMove(e,posX,posY){
        var oDrag = document.getElementById("loginPanel");
        l = e.clientX - posX,
        t = e.clientY - posY,
        //這是判斷輸入框不越界
        winW = document.documentElement.clientWidth || document.body.clientWidth,
        winH = document.documentElement.clientHeight || document.body.clientHeight,
        maxW = winW - oDrag.offsetWidth - 10,
        maxH = winH - oDrag.offsetHeight;
        if (l < 0) {
            l = 0;
        } else if (l > maxW) {
            l = maxW;
        }
        if (t < 0) {
            t = 10;
        } else if (t > maxH) {
            t = maxH;
        }
        
        //及時(shí)更新登錄框的style.left和right信息
        oDrag.style.left = l + "px";
        oDrag.style.top = t + "px";
    }
3.實(shí)現(xiàn)點(diǎn)擊按鈕關(guān)閉輸入框

//獲取到關(guān)閉標(biāo)簽元素

    var oClose = document.getElementById("ui_boxyClose");
    //為這個(gè)元素綁定一個(gè)click事件
    oClose.onclick = function () {
        //當(dāng)點(diǎn)擊這個(gè)按鈕時(shí),把這個(gè)按鈕的display設(shè)置為none
        document.getElementById("loginPanel").style.display = "none";
    }

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

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

相關(guān)文章

  • 002-DOM事件實(shí)例-實(shí)現(xiàn)一個(gè)可以拽的登陸窗口

    摘要:項(xiàng)目需求及基本的和相信大家都用過登陸框,它可以在頁(yè)面中任意的拖拽,然后點(diǎn)擊狀態(tài)可以切換各種狀態(tài)。 前言:這是跟著慕課網(wǎng)一個(gè)老師的視頻做的,這幾天在重新的梳理自己,寫完這個(gè)例子要系統(tǒng)的學(xué)一下jQuery,我司現(xiàn)在用的還是比較多,畢竟用了它不用考慮IE兼容性,可以讓開發(fā)更有效率。 1.項(xiàng)目需求及基本的HTML和CSS 相信大家都用過QQ登陸框,它可以在頁(yè)面中任意的拖拽,然后點(diǎn)擊狀態(tài)可以切...

    SimonMa 評(píng)論0 收藏0
  • 002-DOM事件實(shí)例-實(shí)現(xiàn)一個(gè)可以拽的登陸窗口

    摘要:項(xiàng)目需求及基本的和相信大家都用過登陸框,它可以在頁(yè)面中任意的拖拽,然后點(diǎn)擊狀態(tài)可以切換各種狀態(tài)。 前言:這是跟著慕課網(wǎng)一個(gè)老師的視頻做的,這幾天在重新的梳理自己,寫完這個(gè)例子要系統(tǒng)的學(xué)一下jQuery,我司現(xiàn)在用的還是比較多,畢竟用了它不用考慮IE兼容性,可以讓開發(fā)更有效率。 1.項(xiàng)目需求及基本的HTML和CSS 相信大家都用過QQ登陸框,它可以在頁(yè)面中任意的拖拽,然后點(diǎn)擊狀態(tài)可以切...

    young.li 評(píng)論0 收藏0
  • 瀏覽器常用事件解析

    摘要:之前寫過一篇瀏覽器事件的相關(guān)操作和事件運(yùn)行的原理瀏覽器事件解析。注意,頁(yè)面從瀏覽器緩存加載,并不會(huì)觸發(fā)事件。事件有一個(gè)屬性,返回一個(gè)布爾值。此外,不支持事件,可以使用事件代替。 之前寫過一篇瀏覽器事件的相關(guān)操作和事件運(yùn)行的原理——JavaScript瀏覽器事件解析。這一篇主要寫一些常用的事件及一些可能的坑。 表單事件 鍵盤事件 當(dāng) , 的值發(fā)生變化時(shí)觸發(fā)。此外,打開 contente...

    zhoutk 評(píng)論0 收藏0
  • 瀏覽器常用事件解析

    摘要:之前寫過一篇瀏覽器事件的相關(guān)操作和事件運(yùn)行的原理瀏覽器事件解析。注意,頁(yè)面從瀏覽器緩存加載,并不會(huì)觸發(fā)事件。事件有一個(gè)屬性,返回一個(gè)布爾值。此外,不支持事件,可以使用事件代替。 之前寫過一篇瀏覽器事件的相關(guān)操作和事件運(yùn)行的原理——JavaScript瀏覽器事件解析。這一篇主要寫一些常用的事件及一些可能的坑。 表單事件 鍵盤事件 當(dāng) , 的值發(fā)生變化時(shí)觸發(fā)。此外,打開 contente...

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

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

0條評(píng)論

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