The*_*heQ 44 javascript jquery
我需要以90度的间隔使用javascript旋转图像.我尝试了一些像jQuery rotate和Raphaël这样的库,但它们有同样的问题 - 图像围绕它的中心旋转.我在图像的各个方面都有一堆内容,如果图像不是完全正方形的,那么它的一部分将最终位于该内容之上.我希望图像保持在其父div中,其中设置了max-with和max-height.
使用jQuery这样旋转(http://jsfiddle.net/s6zSn/1073/):
var angle = 0;
$('#button').on('click', function() {
angle += 90;
$("#image").rotate(angle);
});
Run Code Online (Sandbox Code Playgroud)
结果如下:
这是我想要的结果:
任何人都知道如何实现这一目标?
Nie*_*sol 64
你使用CSS的transform
组合(必要时带有供应商前缀)transform-origin
,像这样:( 也在jsFiddle上)
var angle = 0,
img = document.getElementById('container');
document.getElementById('button').onclick = function() {
angle = (angle + 90) % 360;
img.className = "rotate" + angle;
}
Run Code Online (Sandbox Code Playgroud)
#container {
width: 820px;
height: 100px;
overflow: hidden;
}
#container.rotate90,
#container.rotate270 {
width: 100px;
height: 820px
}
#image {
transform-origin: top left;
/* IE 10+, Firefox, etc. */
-webkit-transform-origin: top left;
/* Chrome */
-ms-transform-origin: top left;
/* IE 9 */
}
#container.rotate90 #image {
transform: rotate(90deg) translateY(-100%);
-webkit-transform: rotate(90deg) translateY(-100%);
-ms-transform: rotate(90deg) translateY(-100%);
}
#container.rotate180 #image {
transform: rotate(180deg) translate(-100%, -100%);
-webkit-transform: rotate(180deg) translate(-100%, -100%);
-ms-transform: rotate(180deg) translateX(-100%, -100%);
}
#container.rotate270 #image {
transform: rotate(270deg) translateX(-100%);
-webkit-transform: rotate(270deg) translateX(-100%);
-ms-transform: rotate(270deg) translateX(-100%);
}
Run Code Online (Sandbox Code Playgroud)
<button id="button">Click me!</button>
<div id="container">
<img src="http://i.stack.imgur.com/zbLrE.png" id="image" />
</div>
Run Code Online (Sandbox Code Playgroud)
var angle = 0;
$('#button').on('click', function() {
angle += 90;
$('#image').css('transform','rotate(' + angle + 'deg)');
});
Run Code Online (Sandbox Code Playgroud)
试试这个代码.
不再需要 jQuery 和大量 CSS(请注意,某些浏览器需要额外的 CSS)
类似于@Abinthaha 发布的内容,但是纯 JS,不需要 jQuery。
let rotateAngle = 90;
function rotate(image) {
image.setAttribute("style", "transform: rotate(" + rotateAngle + "deg)");
rotateAngle = rotateAngle + 90;
}
Run Code Online (Sandbox Code Playgroud)
#rotater {
transition: all 0.3s ease;
border: 0.0625em solid black;
border-radius: 3.75em;
}
Run Code Online (Sandbox Code Playgroud)
<img id="rotater" onclick="rotate(this)" src="https://upload.wikimedia.org/wikipedia/en/e/e0/Iron_Man_bleeding_edge.jpg"/>
Run Code Online (Sandbox Code Playgroud)