JavaScript图片旋转一周效果
作者:admin 日期:2012-04-14
使图片进行360度旋转一周。能够兼容所有浏览器。IE使:matirx滤镜 webkit: webkitTransform Opera: OTransform firefox:MozTransform。
很眩的一个JavaScript效果,其中对浏览器兼容性的处理可能经常用到,值得借鉴!
XML/HTML代码
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <title> ImageRotation </title>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
- <style type="text/css">
- #demo { cursor:pointer; position:absolute;filter:progid:DXImageTransform.Microsoft.Matrix(sizingmethod="auto expand");}
- </style>
- </head>
- <body>
- <div id="container" style="width:500px;height:350px;position:relative;margin:0 auto">
- <div id="demo">
- <img src="http://img.baidu.com/img/logo-zhidao.gif" />
- </div>
- </div>
- <script>
- var Img = function() {
- var T$ = function(id) { return document.getElementById(id); }
- var ua = navigator.userAgent,
- isIE = /msie/i.test(ua) && !window.opera;
- var i = 0, sinDeg = 0, cosDeg = 0, timer = null ;
- var rotate = function(target, degree) {
- target = T$(target);
- var orginW = target.clientWidth, orginH = target.clientHeight;
- clearInterval(timer);
- function run(angle) {
- if (isIE) { // IE
- cosDeg = Math.cos(angle * Math.PI / 180);
- sinDeg = Math.sin(angle * Math.PI / 180);
- with(target.filters.item(0)) {
- M11 = M22 = cosDeg; M12 = -(M21 = sinDeg);
- }
- target.style.top = (orginH - target.offsetHeight) / 2 + 'px';
- target.style.left = (orginW - target.offsetWidth) / 2 + 'px';
- } else if (target.style.MozTransform !== undefined) { // Mozilla
- target.style.MozTransform = 'rotate(' + angle + 'deg)';
- } else if (target.style.OTransform !== undefined) { // Opera
- target.style.OTransform = 'rotate(' + angle + 'deg)';
- } else if (target.style.webkitTransform !== undefined) { // Chrome Safari
- target.style.webkitTransform = 'rotate(' + angle + 'deg)';
- } else {
- target.style.transform = "rotate(" + angle + "deg)";
- }
- }
- timer = setInterval(function() {
- i += 10;
- run(i);
- if (i > degree - 1) {
- i = 0;
- clearInterval(timer);
- }
- }, 10);
- }
- return {rotate: rotate}
- }();
- window.onload = function() {
- Img.rotate('demo', 360);
- document.getElementById('demo').onclick = function() {
- Img.rotate('demo', 360);
- }
- }
- </script>
- </body>
- </html>
上一篇: Javascript兼容 IE Firefox 的键盘控制事件
下一篇: Javascript图片预加载技术
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags: javascript
相关日志:
下一篇: Javascript图片预加载技术
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags: javascript
相关日志:
评论: 0 | 引用: 0 | 查看次数: 2133
发表评论
广告位