关于jquery:左右旋转不按预期工作 | 珊瑚贝

Rotate Left and Right Not Working as Expected


我有一个 div,我添加了两个 span 和一个按钮,这些 span 用于将 div 向左旋转和向右旋转。
右侧跨度称为向右旋转,左侧跨度称为向左旋转,它们是名为 table 的父 div 的子级。

1
2
3
    <span class=”fa fa-edit editdiv”></span>
    <span class=”fa fa-rotate-left rotateleft”></span>
    <span class=”fa fa-rotate-right rotateright”></span>

这会产生以下 div。

enter

这也是表格的 CSS,以防表格的 css 与我的 Transform 语句发生冲突。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
.square4 {
  cursor: move;
  width: 133px;
  height: 133px;
  position: absolute !important;
  background-image: url(parts/table4.png);
  background-repeat: no-repeat;
  background-position: center center;
  font-size: 17px;
  font-weight: bold;
  color: #00f;
  border: 1px solid #ccc;
  border-radius: 6%;
  -moz-border-radius: 6%;
  -webkit-border-radius: 6%;
  left: 741px;
  top: -141px;
}

当用户单击左或右时,父 div 应该旋转 15 度,但是当我单击右旋转时没有任何反应,当我单击左旋转时,它会将度数设置为旋转 0,这是第一个值而不是我需要的价值。我将我的值设置为从 0 到 360 度的数组,每次单击右旋转时它们会上升 15 度,如果单击左旋转则返回 15 度。

使用 JQuery UI 将 div 附加到名为 mainarea 的可放置元素,这就是我使用 .on click 的原因。检测到点击,它只是我遇到问题的转换。

我检查了 Array 和按钮单击以确保它们正常工作,我使用 console.log 检查 angle[current] 并返回了正确的值,我相信这与我的 transform 语句和我是如何设置它的,我尝试了不同的方法但没有运气。

我正在使用 Elementor,所以我的 document.ready 与通常的方式有点不同,但这是因为 Elementor 的工作方式,如果您想对其进行测试,您可以将其更改为文档就绪语句,但是我想显示我的确切代码。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
document.addEventListener(“DOMContentLoaded”, function(event)
{
    var angle = [0, 15, 30, 45, 60, 75, 90, 105, 120, 135, 150, 165, 180, 195, 210, 225, 240, 255, 270, 285, 300, 315 , 330, 345, 360];
    var current = 0;

   jQuery(document).on(‘click’,’.table > .rotateright’,function(event)
    {
       current++;

        if(current == 25)
        {
            current = 0;
        }

       var r = jQuery(this).parents(‘.table’).attr(‘id’);

       var rotating = ‘#’.concat(r);

       console.log(angle[current]);

       jQuery(rotating).css({
          ‘-webkit-transform’ : ‘rotate(‘ + angle[current] + ‘)’,
          ‘-moz-transform’    : ‘rotate(‘ + angle[current] + ‘)’,

          ‘-ms-transform’     : ‘rotate(‘ + angle[current] + ‘)’,

          ‘-o-transform’      : ‘rotate(‘ + angle[current] + ‘)’,
          ‘transform’         : ‘rotate(‘ + angle[current] + ‘)’
        });
   });

    jQuery(document).on(‘click’,’.table > .rotateleft’,function(event)
    {
        current–;

        if(current == -1)
        {
            current = 24;
        }

       var r = jQuery(this).parents(‘.table’).attr(‘id’);

       var rotating = ‘#’.concat(r);

        console.log(angle[current]);

       jQuery(rotating).css({
          ‘-webkit-transform’ : ‘rotate(‘ + angle[current] + ‘)’,
          ‘-moz-transform’    : ‘rotate(‘ + angle[current] + ‘)’,
          ‘-ms-transform’     : ‘rotate(‘ + angle[current] + ‘)’,
          ‘-o-transform’      : ‘rotate(‘ + angle[current] + ‘)’,
          ‘transform’         : ‘rotate(‘ + angle[current] + ‘)’
        });
    });
});

  • 你能提供一个工作演示片段,不能用上面的代码重现片段吗
  • jsfiddle.net/53rajoky/1
  • 我的字面意思是一个工作小提琴,而不是复制粘贴代码:)
  • 它不工作所以我怎么能做一个工作小提琴?如果它对我不起作用并且我正在寻求帮助,我所能做的就是将代码放入我已经放在这里的代码中。
  • 即使小提琴没有运行,什么也看不到,我们为您执行此操作,或为您修复错误??
  • 奇怪的是,我检查了小提琴,我不需要你为我做这件事,我只是需要一些帮助来找出我们的错误。
  • 稍后我会看看小提琴并发送带有错误的工作小提琴,对不起,我试图在我的手机上做。


您在分配新的旋转 CSS 时缺少 CSS 中的”度”(“angular[当前]”度)

我只修改了右旋转的代码(我没有改变左的代码,可以像右一样改变),这里见 jsfiddle

小片段如下

1
2
3
4
5
6
7
 $(‘#table1’).css({
               ‘ -webkit-transform’: ‘rotate(‘+ angle[current]+’ deg)’,
                ‘-moz-transform’: ‘rotate(‘+ angle[current]+’ deg)’,
                ‘-o-transform’: ‘rotate(‘+ angle[current]+’deg)’,
                 ‘-ms-transform’: ‘rotate(‘+ angle[current]+’deg)’,
                  ‘transform’: ‘rotate(‘+ angle[current]+’deg)’}
    );

并且正确的跨度将其保持在目标 div 之外,因为它将随着主 div 旋转而旋转

  • 天哪,就是这样,我怎么没注意到,一旦我把 deg 声明放进去,声明就很好了。
  • 我已经为你的答案投票了,非常感谢,这就是你在午夜编码时会发生的事情哈哈
  • @JayDJohno 哈哈,欢迎你也可以接受这个答案,快乐编码


来源:https://www.codenong.com/60445663/

微信公众号
手机浏览(小程序)

Warning: get_headers(): SSL operation failed with code 1. OpenSSL Error messages: error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57

Warning: get_headers(): Failed to enable crypto in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57

Warning: get_headers(https://static.shanhubei.com/qrcode/qrcode_viewid_8801.jpg): failed to open stream: operation failed in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57
0
分享到:
没有账号? 忘记密码?