如何使用 jQuery 旋转 div [关闭]

Posted

技术标签:

【中文标题】如何使用 jQuery 旋转 div [关闭]【英文标题】:How to rotate a div using jQuery [closed] 【发布时间】:2011-03-02 13:03:38 【问题描述】:

是否可以使用 jQuery 旋转 div?我可以旋转图像但不能旋转 div;有什么解决办法吗?

【问题讨论】:

Rotating a Div Element in jQuery 的可能重复项 @Sjoerd:请阅读常见问题解答:meta.stackexchange.com/questions/8724/… 我不明白结束问题的那些规则。人们正试图为他们的问题找到解决方案(不仅仅是提出问题的人)。我找到了这个,我知道有更好的解决方案,所以我一直在寻找。但是我不能回来在这里给出更好的答案,因为“他没有努力去寻找自己的解决方案”。这个网站的目的不是在尽可能短的时间内为 ppl 提供答案吗?当他不尝试自己“欺骗”自己时 - 他不会成为优秀的程序员,但这是他的战斗不是我们或你的。 @user1096901,不,这是一个问答网站,而不仅仅是一个 A 网站。问题措辞得当很重要。为了让人们提出可以回答的正确问题,我们付出了很多努力。您可以在help center 中找到更多信息。 现在是 2021 年,我用谷歌搜索了这个。这就是我一直在寻找的答案。 【参考方案1】:

编辑:为 jQuery 1.8 更新

从 jQuery 1.8 开始,浏览器特定的转换将被自动添加。 jsFiddle Demo

var rotation = 0;

jQuery.fn.rotate = function(degrees) 
    $(this).css('transform' : 'rotate('+ degrees +'deg)');
    return $(this);
;

$('.rotate').click(function() 
    rotation += 5;
    $(this).rotate(rotation);
);

编辑:添加代码使其成为 jQuery 函数。

对于那些不想进一步阅读的人,请看这里。有关更多详细信息和示例,请继续阅读。 jsFiddle Demo.

var rotation = 0;

jQuery.fn.rotate = function(degrees) 
    $(this).css('-webkit-transform' : 'rotate('+ degrees +'deg)',
                 '-moz-transform' : 'rotate('+ degrees +'deg)',
                 '-ms-transform' : 'rotate('+ degrees +'deg)',
                 'transform' : 'rotate('+ degrees +'deg)');
    return $(this);
;

$('.rotate').click(function() 
    rotation += 5;
    $(this).rotate(rotation);
);

编辑:这篇文章中的一位 cmets 提到了jQuery Multirotation。这个 jQuery 插件本质上是在支持 IE8 的情况下执行上述功能。如果您想要最大的兼容性或更多选项,它可能值得使用。但为了最小化开销,我建议使用上述功能。它适用于 IE9+、Chrome、Firefox、Opera 等。


Bobby... 这是为那些真正想在 javascript 中做这件事的人准备的。这可能是在 javascript 回调上轮换所必需的。

这是jsFiddle。

如果您想以自定义间隔旋转,您可以使用 jQuery 手动设置 css 而不是添加类。喜欢this!我在答案的底部包含了两个 jQuery 选项。

HTML

<div class="rotate">
    <h1>Rotatey text</h1>
</div>

CSS

/* Totally for style */
.rotate 
    background: #F02311;
    color: #FFF;
    width: 200px;
    height: 200px;
    text-align: center;
    font: normal 1em Arial;
    position: relative;
    top: 50px;
    left: 50px;


/* The real code */
.rotated 
    -webkit-transform: rotate(45deg);  /* Chrome, Safari 3.1+ */
    -moz-transform: rotate(45deg);  /* Firefox 3.5-15 */
    -ms-transform: rotate(45deg);  /* IE 9 */
    -o-transform: rotate(45deg);  /* Opera 10.50-12.00 */
    transform: rotate(45deg);  /* Firefox 16+, IE 10+, Opera 12.10+ */

jQuery

确保这些都包含在 $(document).ready 中

$('.rotate').click(function() 
    $(this).toggleClass('rotated');
);

自定义间隔

var rotation = 0;
$('.rotate').click(function() 
    rotation += 5;
    $(this).css('-webkit-transform' : 'rotate('+ rotation +'deg)',
                 '-moz-transform' : 'rotate('+ rotation +'deg)',
                 '-ms-transform' : 'rotate('+ rotation +'deg)',
                 'transform' : 'rotate('+ rotation +'deg)');
);

【讨论】:

轮换更好? css 或 jquery,plugins.jquery.com/multirotation。谢谢。 在有关此插件的答案中添加了信息。查看插件的源代码。它支持 IE8 和更多功能,但除此之外,它的功能与此完全相同。 简单而完美。感谢您将其设为 jQuery 函数。您可以将定义 jQuery.fn.rotate 替换为 $.fn.rotate - 做同样的事情但更简洁。 自 jQuey 1.8 起不再需要浏览器前缀,另见:***.com/a/17487728/2049986。 @JacobvanLingen 谢谢!我已经更新了答案。

以上是关于如何使用 jQuery 旋转 div [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 jquery 找到 div 的下一个跨度? [关闭]

jquery-如何关闭div

图像编辑无法使用 PHP 和 Javascript/Jquery [关闭]

如何使用 css 和 js/jQuery 创建 div 漂浮在图像上的效果? [关闭]

jQuery在拖动时使用右键单击旋转div

div旋转时jQuery可拖动跳跃