div旋转,点击按钮点击一下所有的div都移动一格,为什么我写的代码只能点击一次,再点击就没有效果了?

代码如下:$(function(){varxx=$(".div1").width()/2;varyy=$(".div1").height()/2;varradius=25... 代码如下:$(function(){ var xx=$(".div1").width()/2; var yy=$(".div1").height()/2; var radius=250; var start=0; var jiaodu=360/$(".img").length; var nn=1; var str=[]; var hudu=jiaodu*Math.PI/180; $(".img").each(function(i,ele){ $(this).css({ "left":Math.sin((hudu*i))*radius+xx, "top":Math.cos((hudu*i))*radius+yy }); }) $(".shang").click(function(){ $(".img").each(function(i,ele){ $(this).css({ "left":Math.sin((hudu*(i+1)))*radius+xx, "top":Math.cos((hudu*(i+1)))*radius+yy }); }) }) 展开
 我来答
络磊
2019-04-30 · 超过56用户采纳过TA的回答
知道小有建树答主
回答量:120
采纳率:95%
帮助的人:21.7万
展开全部

只有i是变量  其他设置的都是常量, 并且i每次循环只都是固定10个数, 所以算下来你给每个img修改的css都是一样的

那么假设一开始你的其中一个img的left为0, 你点击后赋值为10px, 那么你的img向右10px, 再点击赋值的还是10px, 但是你的img已经在10px的位置了  所以不动了,如果你赋值的是20px,即你当前img的left+10px,  那么他才会从10px的位置移动到20px的位置, 移动10个像素点

修改建议

红色箭头那相应加上当前img的对应的left和top

注: 当前img的对应的left和top的查询, 必须写在黄色箭头内, 这样每次点击都会重新查询, 写在外面就只会在页面加载的时候查询一次了

更多追问追答
追问
你好,您说的当前img的对应的left和top怎么获取呢?
我在想是不是我写的代码:
"left":Math.sin((hudu*(i+1)))*radius+xx,里面的(hudu*(i+1),是不是需要加个循环啊?因为我想做的是10个div组成的圆,没点击一次,这10个圆就转360/10度,二我写的里面只能点击一次,不能在点击,是不是缺个循环?
追答

不是的, 是因为每次你点击, 给每个div赋值的值是相同的

var a = 0;

你现在每次都是 a=10

让你加上当前left是为了

a+10 // 10

a+10 // 20

a+10 // 30

....

获取当前left:就是: $(this).css('left')

另外你的这个页面写的很复杂了

旋转10个div, 可以写在一个div里, 旋转这个大div 就行了, 不会布局可以直接截张大图, 用img标签引用, 旋转这个img一样的

另外用css3的旋转来做    transform: rotate(45deg); // 顺时针旋转45°的意思  不要计算left和top这种写 什么sin cos 太复杂了

请轻亲青草
2019-04-30 · TA获得超过633个赞
知道小有建树答主
回答量:1901
采纳率:85%
帮助的人:218万
展开全部
因为角度是一个定值,所以弧度是一个定值,所以left,top都是定值。
更多追问追答
追问
你好,能说的具体一点吗?
追答
你设置的角度是一个定值啊,没变,之后怎么让其他元素变
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
网海1书生
科技发烧友

2019-04-30 · 擅长软件设计、WEB应用开发、小程序
网海1书生
采纳数:12311 获赞数:26228

向TA提问 私信TA
展开全部
$(function(){
   var xx=$(".div1").width()/2;
   var yy=$(".div1").height()/2;
   var radius=250;
   var start=0;
   var jiaodu=360/$(".img").length;
   var nn=1;
   var str=[];
   var hudu=jiaodu*Math.PI/180;
   $(".img").each(function(i,ele){
      $(ele).css({
         "left":Math.sin(hudu*i)*radius+xx,
         "top":Math.cos(hudu*i)*radius+yy
      });
   });
   $(".shang").click(function(){
      $(".img").each(function(i,ele){
         $(ele).css({
            "left":Math.sin(hudu*(nn+i))*radius+xx,
            "top":Math.cos(hudu*(nn+i))*radius+yy
         });
      });
      nn=(nn+1)%$(".img").length;
   });
});
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式