想js代码在页面窗口右侧弹出一个侧边栏div,但是不知道问题出在哪

#div1{width:100px;height:200px;background:red;top:300px;right:-100px;position:absolut... #div1 {width:100px; height:200px; background:red; top:300px; right:-100px; position:absolute;}#div1 span{ width:20px; height:60px; line-height:20px; top:70px; right:100px; background:yellow; text-align:center; position:absolute;}这是div的设置
startmove2这句忽略已改为startmove
展开
 我来答
jiaozhuangfei
2016-12-13 · TA获得超过698个赞
知道小有建树答主
回答量:316
采纳率:100%
帮助的人:268万
展开全部
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>222</title>
    <style>
        html, body{width: 100%; height: 100%; overflow: hidden;}
        #div1 {width:100px; height:200px; background:red; top:300px; right:-100px; position:absolute;}
        #div1 span{width:20px; height:60px; line-height:20px; top:70px; right:100px; background:yellow; text-align:center; position:absolute;}
    </style>
</head>
<body>
<div id="div1"><span>111</span></div>
<script>
    window.onload = function () {
        var oDiv = document.getElementById('div1');
        oDiv.style.right = '-100px';
        oDiv.onmouseover = function () {
            startMove(1);
        };
        oDiv.onmouseout = function () {
            startMove(0);
        }
    };
    var timer = null;
    function startMove(iTarget) {
        var oDiv = document.getElementById('div1');
        var speed = 1;
        clearInterval(timer);
        timer = setInterval(function () {
            if(iTarget){
                oDiv.style.right = parseFloat(oDiv.style.right) + speed + 'px';
                if(parseFloat(oDiv.style.right) >= 0){
                    oDiv.style.right = '0';
                    window.clearInterval(timer);
                }
            }else {
                oDiv.style.right = parseFloat(oDiv.style.right) - speed + 'px';
                if(parseFloat(oDiv.style.right) <= -100){
                    oDiv.style.right = '-100px';
                    window.clearInterval(timer);
                }
            }
        }, 10);
    }
</script>
</body>
</html>

我感觉你的逻辑有点太复杂了,既然都已经定位了,为何不直接用right值来调整呢,上面代码是用改变right值来实现的,并且这种效果通过css的transition更容易实现,可能是你为了专门练习JS吧。

追问
确实是在练习运动框架,我试着right取赋值的时候会出现水平滚动条,这个怎么处理为好
追答
那个是由于div把页面撑开了,你把整个页面overflow:hidden,溢出隐藏就可以了。建议你在练习的时候尽量用一些兼容性上没问题但是逻辑更为简单的好点,这样对于性能上有很大帮助,否则在大点的项目中逻辑太复杂会导致性能下降,影响体验的。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式