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

效果出来了,但是多次点击后左移动就失效了,在火狐浏览器上点第二次就失效了!

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<script src="http://libs.baidu.com/jquery/1.9.0/jquery.js" type="text/javascript"></script>
 <style>
            .child{background:black;width:100px;height:100px;margin:0 auto;position:relative}
            button{margin:0 20px;}
            div{margin:0 auto;width:200px;height:200px;}
            button{margin-top:20px;}
        </style>
    </head>
    
    <body>
        <div class="child"></div>
        <div>
        <button id="left">左移</button>
        <button id="right">右移</button>
        </div>
    </body>
    <script>
        $(function () {
            $("#left").bind("click", function () {
                $(".child").animate({
                    right:"+=50px"
                },2000)
            });
            $("#right").bind("click", function () {
                $(".child").animate({
                    left:"+=50px"
                },2000)
            })
        })
    </script>
</html>


正在回答

2 回答

因为你是相对于body进行定位,假如你先点了左移,那么是有效的,但是你点右移,就会出错,它无法在保证距离左边的情况再实现右边。嗯应该是这么回事。解决方法就是只操作一个值,不要right和left都用。

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

心为形役 提问者

如果在“child”外围再加上一个div,能不能解决这个问题呢?
2016-06-01 回复 有任何疑惑可以回复我~
#2

传说中的小白龙 回复 心为形役 提问者

如果你将外围的div设置为absolute可以使用right和left。假如你先点击left再点right,他依然会冲突,该right值对应的不是child相当于外围div,而是div相对于它的父元素。所以,left和right依然会冲突。
2016-06-01 回复 有任何疑惑可以回复我~
#3

心为形役 提问者

非常感谢!
2016-06-01 回复 有任何疑惑可以回复我~
#4

心为形役 提问者 回复 传说中的小白龙

那有什么方案可以让两个按钮控制div自由移动吗?
2016-06-01 回复 有任何疑惑可以回复我~
查看1条回复

在chrome上点击多次并未失效。

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

举报

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

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

进入课程

效果出来了,但是多次点击后左移动就失效了,在火狐浏览器上点第二次就失效了!

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