为了账号安全,请及时绑定邮箱和手机立即绑定

Javascirpt想实现渐变变长的运动效果!

        var navmenu = document.getElementById("header-sidebar");

        if(navmenu.style.width=="")

        {

              var width = (width=0;width<50;width++)

        navmenu.style.width= width + 'px';

        }else{

              var width = (width=50;width>0;width--)

        navmenu.style.width = width + 'px';

        }

麻烦大神帮忙解决,这个怎么实现侧边栏收展的渐变动画效果?

demo:http://www.wusichao.com/demo/admin_template/

http://img1.sycdn.imooc.com//568513a000013d1911901020.jpg

正在回答

5 回答

这个做的时候主要的麻烦应该就是作用域的问题,刚刚做了下,按照你的描述应该是要这种效果吧

<!--动画操作对象-->
<div style="width: 100px;" id="header">
    <p>这里的内容一出之后就隐藏了</p>
</div>
<input id="btn" type="button" value="变换"/><!--动画触发按钮-->
<style>
    /*做一些必要的样式*/
    #header {
        height: 100px;
        overflow: hidden;
        border: 1px solid #f00;
    }
    #header p{
        width: 100px;
    }
</style>
//变量初始化
var btn = document.getElementById('btn');
var navmenu = document.getElementById("header");
var wid = navmenu.style.width;
var timer;
var speed = 0;
wid = parseInt(wid);

//按钮点击触发事件:
btn.onclick = function () {
    //判断点击之前宽度为100时:
    if (wid >= 100) {
        speed = -5;
        timer = setInterval(animation, 50);//以speed=-5执行动画函数
    }
    //判断点击之前的宽度为30时
    if (wid <= 30) {
        speed = 5;
        timer = setInterval(animation, 50);//以speed=5执行动画函数
    }
};
//动画函数:
function animation() {
    wid = wid + speed;
    navmenu.style.width = wid + 'px';
    //宽度增加或减少到一定程度时清除定时器,使宽度不再变化
    if (wid >= 100 || wid <= 30) {
        clearInterval(timer);
    }
}


0 回复 有任何疑惑可以回复我~

正是我需要的实现方法,我用JS写给你看看

        var navmenu = document.getElementById("header-sidebar");

        timer = null;

        if(navmenu.style.width=="")

        {

            for(width=0;width>50;width--)

            timer = setInterval(function() {

                navmenu.style.width= width + 'px';   

             }, 50);  

        }else{

            for(width=50;width<160;width++)

            timer = setInterval(function() {

                navmenu.style.width= width + 'px';   

             }, 50); 

        }


0 回复 有任何疑惑可以回复我~

貌似你上面的代码就是想这样做的?

0 回复 有任何疑惑可以回复我~
如果用js写的话,你试试设定一个定时器,给一个时间,让侧边栏的宽度每次(增加 1px),到一定宽度的时候清除定时器;
同样的方法,再次点击时,侧边栏宽度每次(减少 1px);
设置侧边栏溢出隐藏就行了;


可以试试


0 回复 有任何疑惑可以回复我~
#1

吴思超0 提问者

看看下面的新评论
2015-12-31 回复 有任何疑惑可以回复我~

你直接把它的源码抄过来就好了啊

http://img1.sycdn.imooc.com//5685275a0001556309000906.jpg

0 回复 有任何疑惑可以回复我~
#1

吴思超0 提问者

不是,那是我的作品。。。
2015-12-31 回复 有任何疑惑可以回复我~
#2

吴思超0 提问者 回复 吴思超0 提问者

想实现渐变变长的运动效果!
2015-12-31 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

Javascirpt想实现渐变变长的运动效果!

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信