مشکل با scrolltop

arashasadi

New Member
سلام دوستان در کد زیر مقدار scrolltop همیشه برابر 0 هست و لی وقتی خط اول رو حذف می کنم مشکل حل میشه لطفا کمک کنید من باید این کد رو تو یه سایت که همون خط اولو داره استفاده کنم و نمی تونم تو سایت اون خط رو حذف کنم

HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Untitled Page</title>
<script type="text/javascript" language="javascript">
YOffset = 1;
XOffset = 0;
staticYOffset = 0;
lastY = 0;
window.onscroll = function () {
winY = document.body.scrollTop;
if (winY != lastY && winY > YOffset - staticYOffset) {
smooth = .2 * (winY - lastY - YOffset + staticYOffset);
} else if (YOffset - staticYOffset + lastY > YOffset - staticYOffset) {
smooth = .2 * (winY - lastY - (YOffset - (YOffset - winY)));
} else {
smooth = 0
}
if (smooth > 0)
smooth = Math.ceil(smooth);
else
smooth = Math.floor(smooth);
var x = document.all("basessm").style.pixelTop + smooth;
document.all("basessm").style.pixelTop += smooth;
document.getElementById('basessm').style.top = x + 'px';
lastY = lastY + smooth;
} 
</script>
</head>
<body onload="">
<div id="basessm" style="position:absolute; left:40%; top:250px; z-index:20; width:20%; background-color:Blue;">salam</div>
<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
<div id='000' style="width: 187px">&nbsp;vv</div>
</body>
</html>
 
آخرین ویرایش:

eAmin

Well-Known Member
سلام
کد شما استاندارد نیست، و همچنین قدیمی هست بهتره از این کدها استفاده کنید.
البته اگر مخاطبهای شما ie8 به بالا و مرورگرهای استاندارد دیگه هستند، با استفاده position:fixed در css میتونید اینکار رو انجام بدید و نیازی به این کدها نیست.
کد:
/* Script by: www.jtricks.com 
 * Version: 20071127 
 * Latest version: 
 * www.jtricks.com/javascript/navigation/fixed_menu.html 
 */  
fixedMenuId = 'fixeddiv';  
  
var fixedMenu =   
{  
    hasInner: typeof(window.innerWidth) == 'number',  
    hasElement: document.documentElement != null  
       && document.documentElement.clientWidth,  
  
    menu: document.getElementById  
        ? document.getElementById(fixedMenuId)  
        : document.all  
          ? document.all[fixedMenuId]  
          : document.layers[fixedMenuId]  
};  
  
fixedMenu.computeShifts = function()  
{  
    fixedMenu.shiftX = fixedMenu.hasInner  
        ? pageXOffset  
        : fixedMenu.hasElement  
          ? document.documentElement.scrollLeft  
          : document.body.scrollLeft;  
    if (fixedMenu.targetLeft > 0)  
        fixedMenu.shiftX += fixedMenu.targetLeft;  
    else  
    {  
        fixedMenu.shiftX +=   
            (fixedMenu.hasElement  
              ? document.documentElement.clientWidth  
              : fixedMenu.hasInner  
                ? window.innerWidth - 20  
                : document.body.clientWidth)  
            - fixedMenu.targetRight  
            - fixedMenu.menu.offsetWidth;  
    }  
  
    fixedMenu.shiftY = fixedMenu.hasInner  
        ? pageYOffset  
        : fixedMenu.hasElement  
          ? document.documentElement.scrollTop  
          : document.body.scrollTop;  
    if (fixedMenu.targetTop > 0)  
        fixedMenu.shiftY += fixedMenu.targetTop;  
    else  
    {  
        fixedMenu.shiftY +=   
            (fixedMenu.hasElement  
            ? document.documentElement.clientHeight  
            : fixedMenu.hasInner  
              ? window.innerHeight - 20  
              : document.body.clientHeight)  
            - fixedMenu.targetBottom  
            - fixedMenu.menu.offsetHeight;  
    }  
};  
  
fixedMenu.moveMenu = function()  
{  
    fixedMenu.computeShifts();  
  
    if (fixedMenu.currentX != fixedMenu.shiftX  
        || fixedMenu.currentY != fixedMenu.shiftY)  
    {  
        fixedMenu.currentX = fixedMenu.shiftX;  
        fixedMenu.currentY = fixedMenu.shiftY;  
  
        if (document.layers)  
        {  
            fixedMenu.menu.left = fixedMenu.currentX;  
            fixedMenu.menu.top = fixedMenu.currentY;  
        }  
        else  
        {  
            fixedMenu.menu.style.left = fixedMenu.currentX + 'px';  
            fixedMenu.menu.style.top = fixedMenu.currentY + 'px';  
        }  
    }  
  
    fixedMenu.menu.style.right = '';  
    fixedMenu.menu.style.bottom = '';  
};  
  
fixedMenu.floatMenu = function()  
{  
    fixedMenu.moveMenu();  
    setTimeout('fixedMenu.floatMenu()', 20);  
};  
  
// addEvent designed by Aaron Moore  
fixedMenu.addEvent = function(element, listener, handler)  
{  
    if(typeof element
[listener] != 'function' ||   
       typeof element
[listener + '_num'] == 'undefined')  
    {  
        element
[listener + '_num'] = 0;  
        if (typeof element
[listener] == 'function')  
        {  
            element
[listener + 0] = element
[listener];  
            element
[listener + '_num']++;  
        }  
        element
[listener] = function(e)  
        {  
            var r = true;  
            e = (e) ? e : window.event;  
            for(var i = 0; i < element
[listener + '_num']; i++)  
                if(element
[listener + i](e) === false)  
                    r = false;  
            return r;  
        }  
    }  
  
    //if handler is not already stored, assign it  
    for(var i = 0; i < element
[listener + '_num']; i++)  
        if(element
[listener + i] == handler)  
            return;  
    element
[listener + element
[listener + '_num']] = handler;  
    element
[listener + '_num']++;  
};  
  
fixedMenu.supportsFixed = function()  
{  
    var testDiv = document.createElement("div");  
    testDiv.id = "testingPositionFixed";  
    testDiv.style.position = "fixed";  
    testDiv.style.top = "0px";  
    testDiv.style.right = "0px";  
    document.body.appendChild(testDiv);  
    var offset = 1;  
    if (typeof testDiv.offsetTop == "number"  
        && testDiv.offsetTop != null   
        && testDiv.offsetTop != "undefined")  
    {  
        offset = parseInt(testDiv.offsetTop);  
    }  
    if (offset == 0)  
    {  
        return true;  
    }  
  
    return false;  
};  
  
fixedMenu.init = function()  
{  
    if (fixedMenu.supportsFixed())  
        fixedMenu.menu.style.position = "fixed";  
    else  
    {  
        var ob =   
            document.layers   
            ? fixedMenu.menu   
            : fixedMenu.menu.style;  
  
        fixedMenu.targetLeft = parseInt(ob.left);  
        fixedMenu.targetTop = parseInt(ob.top);  
        fixedMenu.targetRight = parseInt(ob.right);  
        fixedMenu.targetBottom = parseInt(ob.bottom);  
  
        if (document.layers)  
        {  
            menu.left = 0;  
            menu.top = 0;  
        }  
        fixedMenu.addEvent(window, 'onscroll', fixedMenu.moveMenu);  
        fixedMenu.floatMenu();  
    }  
};  
  
fixedMenu.addEvent(window, 'onload', fixedMenu.init);
و برای استفاده از این کد، id تگ خودتون رو به fixeddiv تغییر بدید:
کد:
<div id="fixeddiv" style="
    position:absolute;
    width:200px;height:50px;right:10px;top:10px;
    padding:16px;background:#FFFFFF;
    border:2px solid #2266AA">
This is a (Javascript/CSS) Fixed menu.
</div>

منبع
 

جدیدترین ارسال ها

بالا