自定義的垂直滾動條

<html>
<head>
    <title>網頁特效|http://www.jscode.cn|---用圖片替代滾動條的方法</title>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    <style type="text/css">
        #scrollerContent {POSITION: absolute}
        body {font-size:9pt;color:#660000;text-decoration: none}
    </style>
<script>
var upH = 13;//向上的箭頭的高度
var upW = 9; //向上的箭頭的寬度
var downH = 13;//向下的箭頭的高度
var downW = 9;//向下的箭頭的寬度
var dragH = 26; //滾動條的高度
var dragW = 9; //滾動條的寬度
var scrollH =68; //滾動體的高度
var speed =9; //滾動的速度
var dom = document.getElementById ? true:false;
var nn4 = document.layers ? true:false;
var ie4 = document.all ? true:false;
var mouseY;
var mouseX;
var clickUp = false;
var clickDown = false;
var clickDrag = false;
var clickAbove = false;
var clickBelow = false;
var timer = setTimeout("",500);
var upL;
var upT;
var downL;
var downT;
var dragL;
var dragT;
var rulerL;
var rulerT;
var contentT;
var contentH;
var contentClipH;
var scrollLength;
var startY;
function down(e)
{
    //單擊左健時處理
    if((document.layers && e.which!=1) || (document.all && event.button!=1))
         return true;
    getMouse(e);
    startY = (mouseY - dragT);
    if(mouseX >= upL && (mouseX <= (upL + upW)) && mouseY >= upT && (mouseY <= (upT + upH)))   //單擊向上的箭頭
    {
        clickUp = true;
        return scrollUp();
    }
    else
        if(mouseX >= downL && (mouseX <= (downL + downW)) && mouseY >= downT && (mouseY <= (downT + downH)))    //單擊向下的箭頭
        {
            clickDown = true;
            return scrollDown();
        }
    else
        if(mouseX >= dragL && (mouseX <= (dragL + dragW)) && mouseY >= dragT && (mouseY <= (dragT + dragH)))    //滾動條內不做操作
        {
            clickDrag = true;
            return false;
        }
    else
        if(mouseX >= dragL && (mouseX <= (dragL + dragW)) && mouseY >= rulerT && (mouseY <= (rulerT + scrollH)))    //滾動體內
        {
            if(mouseY < dragT)      //向上滾
            {
                clickAbove = true;
                clickUp = true;
                return scrollUp();
            }
            else                    //向下滾
            {
                clickBelow = true;
                clickDown = true;
                return scrollDown();
            }
        }
        else
        {
            return true;
        }
}

function move(e)
{
    if(clickDrag && contentH > contentClipH)        //有滾動條時執行
    {
        getMouse(e);
        dragT = (mouseY - startY);
        if(dragT < (rulerT))
            dragT = rulerT;
        if(dragT > (rulerT + scrollH - dragH))
            dragT = (rulerT + scrollH - dragH);
        contentT = ((dragT - rulerT)*(1/scrollLength));
        contentT = eval('-' + contentT);
        moveTo();
        if(ie4)
            return false;
    }
}

//停止滾動
function up()
{
    clearTimeout(timer);
    clickUp = false;
    clickDown = false;
    clickDrag = false;
    clickAbove = false;
    clickBelow = false;
    return true;
}

function getT()
{
    if(ie4)
        contentT = document.all.scrollerContent.style.pixelTop;
    else
        if(nn4)
            contentT = document.scrollerContentClip.document.scrollerContent.top;
        else
            if(dom)
                contentT = parseInt(document.getElementById("scrollerContent").style.top);
}

function getMouse(e)
{
    if(ie4)
    {
        mouseY = event.clientY + document.body.scrollTop;
        mouseX = event.clientX + document.body.scrollLeft;
    }
    else if(nn4 || dom)
    {
        mouseY = e.pageY;
        mouseX = e.pageX;
    }
}

//移動內容
function moveTo()
{
    if(ie4)
    {
        document.all.scrollerContent.style.top = contentT;
        document.all.ruler.style.top = dragT;
        document.all.drag.style.top = dragT;
    }
    else
    if(nn4)
    {
        document.scrollerContentClip.document.scrollerContent.top = contentT;
        document.ruler.top = dragT;
        document.drag.top = dragT;
    }
    else
        if(dom)
        {
            document.getElementById("scrollerContent").style.top = contentT + "px";
            document.getElementById("drag").style.top = dragT + "px";
            document.getElementById("ruler").style.top = dragT + "px";
        }
}

function scrollUp()
{
    getT();
    if(clickAbove)
    {
        if(dragT <= (mouseY-(dragH/2)))     //移到指定的位置退出
            return up();
    }
    if(clickUp)
    {
        if(contentT < 0)
        {
            dragT = dragT - (speed*scrollLength);
            if(dragT < (rulerT))
                dragT = rulerT;
            contentT = contentT + speed;
            if(contentT > 0)
                contentT = 0;
            moveTo();       //移動一個滾動距離
            timer = setTimeout("scrollUp()",25);
        }
    }
    return false;
}

function scrollDown()
{
    getT();
    if(clickBelow)
    {
        if(dragT >= (mouseY-(dragH/2)))
        return up();
    }
    if(clickDown)
    {
        if(contentT > -(contentH - contentClipH))
        {
            dragT = dragT + (speed*scrollLength);
            if(dragT > (rulerT + scrollH - dragH))
            dragT = (rulerT + scrollH - dragH);
            contentT = contentT - speed;
            if(contentT < -(contentH - contentClipH))
            contentT = -(contentH - contentClipH);
            moveTo();
            timer = setTimeout("scrollDown()",25);
        }
    }
    return false;
}

function reloadPage()
{
    location.reload();
}

function eventLoader()
{
    if(ie4)
    {
        upL = document.all.up.style.pixelLeft;
        upT = document.all.up.style.pixelTop;
        downL = document.all.down.style.pixelLeft;
        downT = document.all.down.style.pixelTop;
        dragL = document.all.drag.style.pixelLeft;
        dragT = document.all.drag.style.pixelTop;
        rulerT = document.all.ruler.style.pixelTop;
        contentH = parseInt(document.all.scrollerContent.scrollHeight);
        contentClipH = parseInt(document.all.scrollerContentClip.style.height);
    }
    else
        if(nn4)
        {
            upL = document.up.left;
            upT = document.up.top;
            downL = document.down.left;
            downT = document.down.top;
            dragL = document.drag.left;
            dragT = document.drag.top;
            rulerT = document.ruler.top;
            contentH = document.scrollerContentClip.document.scrollerContent.clip.bottom;
            contentClipH = document.scrollerContentClip.clip.bottom;
        }
        else
            if(dom)
            {
                upL = parseInt(document.getElementById("up").style.left);
                upT = parseInt(document.getElementById("up").style.top);
                downL = parseInt(document.getElementById("down").style.left);
                downT = parseInt(document.getElementById("down").style.top);
                dragL = parseInt(document.getElementById("drag").style.left);
                dragT = parseInt(document.getElementById("drag").style.top);
                rulerT = parseInt(document.getElementById("ruler").style.top);
                contentH = parseInt(document.getElementById("scrollerContent").offsetHeight);
                contentClipH = parseInt(document.getElementById("scrollerContentClip").offsetHeight);
                document.getElementById("scrollerContent").style.top = 0 + "px";
            }
    scrollLength = ((scrollH-dragH)/(contentH-contentClipH));
    if(nn4)
    {
        document.captureEvents(Event.MOUSEDOWN | Event.MOUSEMOVE | Event.MOUSEUP);
        window.onresize = reloadPage;
    }
    document.onmousedown = down;
    document.onmousemove = move;
    document.onmouseup = up;
}

</script>

</head>
<body οnlοad="eventLoader()">
    <span id="drag" style="left: 203px; position: absolute; top: 116px">
        <img height="26" src="slider.gif" width="9" border="1">
    </span>
    <span id="ruler" style="top: 116px">
          <img height="26" src="slider.gif" width="9" border="1">
    </span>
    <span id="up" style="left: 203px;position: absolute; top: 100px">
          <img height="13" alt="" src="scrollup.gif" width="9" border="1">
    </span>
    <span id="down" style="left: 203px; position: absolute; top: 186px">
        <img height="13" alt="" src="scrolldown.gif" width="9" border="1">
    </span>
    <span id="scrollerContentClip" style="left: 100; visibility: visible; overflow: hidden; width: 100; clip: rect(0px 140px 194px 0px);position: absolute; top: 100; height: 100; border: #CC6600 1px solid">
        <span id="scrollerContent" style="width: 100; height: 100">
            <p></p>
            <p></p>
            <p>呵呵呵呵</p>
            <p>呵呵呵呵</p>
            <p>呵呵</p>
            <p>呵呵</p>
            <p>呵呵呵呵</p>
            <p>呵呵呵呵</p>
            <p>呵呵呵</p>
            <p>呵呵呵呵</p>
            <p>呵呵</p>
        </span>
     </span>
</body>
</html>
 

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