admin管理员组文章数量:1334342
I need to rotate an image dinamically by angle specified by the user.
I use the following code, but it only works for IE and not for any other browser.
<div id="frame1" style="overflow:hidden" width='300' height='300'>
<div id="frame2" width='200' height='200'>
<img src='1.jpeg'' id='im' src='1.jpeg' width='10' height='10'>
</div>
</div>
<script type="text/javascript">
rotate(frame2, 45);
function rotate (elem, deg)
{
if (navigator.appName=='Microsoft Internet Explorer')
{
rad = deg*Math.PI/180;
elem.style.filter="progid:DXImageTransform.Microsoft.Matrix(M11='1.0', sizingmethod='auto expand')";
elem.filters.item(0).M11 = Math.cos(rad);
elem.filters.item(0).M12 = -Math.sin(rad);
elem.filters.item(0).M21 = Math.sin(rad);
elem.filters.item(0).M22 = Math.cos(rad);
elem.style.marginLeft=((canvsize-elem.offsetWidth)/2)+'px'
elem.style.marginTop=((canvsize-elem.offsetHeight)/2)+'px'
}
else
{
elem.style.MozTransform = 'rotate(' + deg + ')';
elem.style.WebkitTransform = 'rotate(' + deg + ')';
elem.style.OTransform = 'rotate(' + deg + ')';
elem.style.MsTransform = 'rotate(' + deg + ')';
elem.style.transform = 'rotate(' + deg + ')';
}
}
</script>
Can you please help?
I need to rotate an image dinamically by angle specified by the user.
I use the following code, but it only works for IE and not for any other browser.
<div id="frame1" style="overflow:hidden" width='300' height='300'>
<div id="frame2" width='200' height='200'>
<img src='1.jpeg'' id='im' src='1.jpeg' width='10' height='10'>
</div>
</div>
<script type="text/javascript">
rotate(frame2, 45);
function rotate (elem, deg)
{
if (navigator.appName=='Microsoft Internet Explorer')
{
rad = deg*Math.PI/180;
elem.style.filter="progid:DXImageTransform.Microsoft.Matrix(M11='1.0', sizingmethod='auto expand')";
elem.filters.item(0).M11 = Math.cos(rad);
elem.filters.item(0).M12 = -Math.sin(rad);
elem.filters.item(0).M21 = Math.sin(rad);
elem.filters.item(0).M22 = Math.cos(rad);
elem.style.marginLeft=((canvsize-elem.offsetWidth)/2)+'px'
elem.style.marginTop=((canvsize-elem.offsetHeight)/2)+'px'
}
else
{
elem.style.MozTransform = 'rotate(' + deg + ')';
elem.style.WebkitTransform = 'rotate(' + deg + ')';
elem.style.OTransform = 'rotate(' + deg + ')';
elem.style.MsTransform = 'rotate(' + deg + ')';
elem.style.transform = 'rotate(' + deg + ')';
}
}
</script>
Can you please help?
Share Improve this question asked Dec 13, 2011 at 17:25 Andrey RubliovAndrey Rubliov 1,5973 gold badges19 silver badges25 bronze badges 1-
Just FYI, browser detection is evil. Your code won't work in IE10 because
navigator.appName
equals to'Microsoft Internet Explorer'
but support for filters was removed. Better check if some*transform
attribute is present inelem.style
and only if not, use filters fallback. – duri Commented Dec 13, 2011 at 18:06
3 Answers
Reset to default 7Look at a CSS example:
-webkit-transform: rotate(45deg);
As you can see you forgot to add deg
elem.style.mozTransform = 'rotate(' + deg + 'deg)';
elem.style.webkitTransform = 'rotate(' + deg + 'deg)';
elem.style.oTransform = 'rotate(' + deg + 'deg)';
elem.style.msTransform = 'rotate(' + deg + 'deg)';
elem.style.transform = 'rotate(' + deg + 'deg)';
It's actually easier in browsers that aren't IE. The MDN has good documentation on how to do it with CSS3. There's some here as well.
For Webkit browsers, this page should help.
You forgot to add deg
to the css property.
You should also add a transform origin
to the image to make it rotate around the center (assuming that's what you're trying to do).
This code should do it.
<!DOCTYPE html>
<html>
<head>
<title></title>
<style>
</style>
</head>
<body>
<div id="frame1" style="overflow:hidden" width='300' height='300'>
<div id="frame2" width='200' height='200'>
<img src='1.jpeg' id='im' src='1.jpeg' width='10' height='10'>
</div>
</div>
<script type="text/javascript">
rotate(frame2, 45);
function rotate (elem, deg)
{
if (navigator.appName=='Microsoft Internet Explorer')
{
rad = deg*Math.PI/180;
elem.style.filter="progid:DXImageTransform.Microsoft.Matrix(M11='1.0', sizingmethod='auto expand')";
elem.filters.item(0).M11 = Math.cos(rad);
elem.filters.item(0).M12 = -Math.sin(rad);
elem.filters.item(0).M21 = Math.sin(rad);
elem.filters.item(0).M22 = Math.cos(rad);
elem.style.marginLeft=((canvsize-elem.offsetWidth)/2)+'px'
elem.style.marginTop=((canvsize-elem.offsetHeight)/2)+'px'
}
else
{
elem.style.MozTransformOrigin = "5px 5px";
elem.style.WebkitTransformOrigin = "5px 5px";
elem.style.OTransformOrigin = "5px 5px";
elem.style.MsTransformOrigin = "5px 5px";
elem.style.transformOrigin = "5px 5px";
elem.style.MozTransform = 'rotate(' + deg + 'deg)';
elem.style.WebkitTransform = 'rotate(' + deg + 'deg)';
elem.style.OTransform = 'rotate(' + deg + 'deg)';
elem.style.MsTransform = 'rotate(' + deg + 'deg)';
elem.style.transform = 'rotate(' + deg + 'deg)';
}
}
</script>
</body>
</html>
本文标签: How to rotate imagediv in JavaScript in browsers other than IEStack Overflow
版权声明:本文标题:How to rotate imagediv in JavaScript in browsers other than IE - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1742367897a2461658.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论