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

怎么只能左一次右一次,再往左动不了了呢?但是可以一直往右。

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <script src="http://libs.baidu.com/jquery/1.9.0/jquery.js" type="text/javascript"></script>
        <title>jQuery动画特效</title>
        <style type="text/css">
        div{
            position:absolute;
            width:80px;
            height:80px;
            border-style:solid;
            color:red;
            margin:100px;
            }
            
        </style>
    </head>
    
    <body>
        <input id="btnLeft" type="button" value="左移" />
        <input id="btnRight" type="button" value="右移" />
        <div></div>
        <script>
            $(function(){
                $("#btnLeft").bind("click",function(){
                   $("div").animate({
                       right:"+=50px"
                   },3000); 
                });
                $("#btnRight").bind("click",function(){
                   $("div").animate({
                       left:"+=50px"
                   },3000); 
                });
                
            });
            
        </script>
        
    </body>
</html>


正在回答

3 回答

lz有没有发现,你的程序运行之后第一次点击左移的时候,div框会跳到最右边,之后再左移,同样你再右移,它又会跑到最左边之后再右移。这是因为你两次操作操作了left和right两个不同的属性。

当我们一次左移一次右移之后,你的div的css发生了这样的变化:

http://img1.sycdn.imooc.com//5625a5f10001cd7b04280148.jpg

同时有了left和right属性。

举个栗子:一个100*100的div,其中有一个60*60的子div,然后我们给这个子div设置margin-left:40px;margin-right:40px;你觉得子div会以哪个css属性为准呢?这个时候就会发生其中一个失效的情况(这里是margin-right失效)。

总结:个人理解,做这样的效果,尽量操作同一个css属性,使动画过度平滑,且不会出错。

以下是解决办法:

5625a4b60001ff9d05000303.jpg

5625a4b60001db6e05000310.jpg


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

qq_浮若无所依_0 提问者

非常感谢!
2015-12-16 回复 有任何疑惑可以回复我~

把第一个right 改为left就可以了。

 $(function(){

                $("#btnLeft").bind("click",function(){

                   $("div").animate({

                       left:"-=50px"

                   },3000); 

                });

                $("#btnRight").bind("click",function(){

                   $("div").animate({

                       left:"+=50px"

                   },3000); 

                });


1 回复 有任何疑惑可以回复我~
$("#btnRight").bind("click",function(){
                   $("div").animate({
                       left:"-=50px"
                   },3000); 
                });


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

举报

0/150
提交
取消
jQuery基础课程
  • 参与学习       154768    人
  • 解答问题       7184    个

加入课程学习,有效提高前端开发速度

进入课程

怎么只能左一次右一次,再往左动不了了呢?但是可以一直往右。

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