JS控制图片翻转示例代码(兼容firefox,ie,chrome)


Posted in Javascript onDecember 19, 2013
<!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>图片旋转效果</title> 
<meta http-equiv="content-type" content="text/html;charset=gb2312"> 
<!--把下面代码加到<head>与</head>之间--> 
<style type="text/css"> 
ul{padding:0 15px;} 
ul li{padding-bottom:15px;border-bottom:1px dashed #EEE;} 
.caption{padding:15px 0 5px;} 
.caption input{margin-right:10px;padding:0 10px;} 
</style> 
<script type="text/javascript"> 
/* 
* www.byzuo.com 
* ok!: MSIE 6, 7, 8, Firefox 3.6, chrome 4, Safari 4, Opera 10 
* o 旋转图片ID; 
* p 选择旋转方向,固定值为'left'或'right'; 
*/ 
function rotate(o,p){ 
    var img = document.getElementById(o); 
    if(!img || !p) return false; 
    var n = img.getAttribute('step'); 
    if(n== null) n=0; 
    if(p=='right'){ 
        (n==3)? n=0:n++; 
    }else if(p=='left'){ 
        (n==0)? n=3:n--; 
    } 
    img.setAttribute('step',n); 
    //MSIE 
    if(document.all) { 
        img.style.filter = 'progid:DXImageTransform.Microsoft.BasicImage(rotation='+ n +')'; 
        //HACK FOR MSIE 8 
        switch(n){ 
            case 0: 
                imgimg.parentNode.style.height = img.height; 
                break; 
            case 1: 
                imgimg.parentNode.style.height = img.width; 
                break; 
            case 2: 
                imgimg.parentNode.style.height = img.height; 
                break; 
            case 3: 
                imgimg.parentNode.style.height = img.width; 
                break; 
        } 
    //DOM 
    }else{ 
        var c = document.getElementById('canvas_'+o); 
        if(c== null){ 
            img.style.visibility = 'hidden'; 
            img.style.position = 'absolute'; 
            c = document.createElement('canvas'); 
            c.setAttribute("id",'canvas_'+o); 
            img.parentNode.appendChild(c); 
        } 
        var ccanvasContext = c.getContext('2d'); 
        switch(n) { 
            default : 
            case 0 : 
                c.setAttribute('width', img.width); 
                c.setAttribute('height', img.height); 
                canvasContext.rotate(0 * Math.PI / 180); 
                canvasContext.drawImage(img, 0, 0); 
                break; 
            case 1 : 
                c.setAttribute('width', img.height); 
                c.setAttribute('height', img.width); 
                canvasContext.rotate(90 * Math.PI / 180); 
                canvasContext.drawImage(img, 0, -img.height); 
                break; 
            case 2 : 
                c.setAttribute('width', img.width); 
                c.setAttribute('height', img.height); 
                canvasContext.rotate(180 * Math.PI / 180); 
                canvasContext.drawImage(img, -img.width, -img.height); 
                break; 
            case 3 : 
                c.setAttribute('width', img.height); 
                c.setAttribute('height', img.width); 
                canvasContext.rotate(270 * Math.PI / 180); 
                canvasContext.drawImage(img, -img.width, 0); 
                break; 
        } 
    } 
} 
</script> 
</head> 
<body> 
<!--把下面代码加到<body>与</body>之间--> 
<ul class="clearfix"> 
    <li> 
        <div class="caption"> 
            <input type="button" value="turn left" onclick="rotate('pic_1','left')"> 
            <input type="button" value="turn right" onclick="rotate('pic_1','right')"> 
        </div> 
        <div class="cont"> 
            <img  alt="javascript 图片旋转效果"  id="pic_1" src="1.gif" alt=""> 
        </div> 
    </li> 
</ul> 
</body> 
</html>
Javascript 相关文章推荐
如何确保JavaScript的执行顺序 之jQuery.html深度分析
Mar 03 Javascript
js格式化时间小结
Nov 03 Javascript
浅谈javascript 函数属性和方法
Jan 21 Javascript
JavaScript获取网页中第一个链接ID的方法
Apr 03 Javascript
JavaScript 事件绑定及深入
Apr 13 Javascript
js中字符串编码函数escape()、encodeURI()、encodeURIComponent()区别详解
Apr 01 Javascript
微信小程序 setData的使用方法详解
Apr 20 Javascript
JavaScript使用FileReader实现图片上传预览效果
Mar 27 Javascript
让你5分钟掌握9个JavaScript小技巧
Jun 09 Javascript
为jquery的ajax请求添加超时timeout时间的操作方法
Sep 04 jQuery
微信小程序时间标签和时间范围的联动效果
Feb 15 Javascript
Vue 实现点击空白处隐藏某节点的三种方式(指令、普通、遮罩)
Oct 23 Javascript
jquery dialog open后,服务器端控件失效的快速解决方法
Dec 19 #Javascript
同域jQuery(跨)iframe操作DOM(实例讲解)
Dec 19 #Javascript
jquery获取URL中参数解决中文乱码问题的两种方法
Dec 18 #Javascript
javascript中打印当前的时间实现思路及代码
Dec 18 #Javascript
js 限制input只能输入数字、字母和汉字等等
Dec 18 #Javascript
Javascript改变CSS样式(局部和全局)
Dec 18 #Javascript
jquery 提示信息显示后自动消失的具体实现
Dec 18 #Javascript
You might like
Thinkphp3.2.3整合phpqrcode生成带logo的二维码
2016/07/21 PHP
php根据年月获取当月天数及日期数组的方法
2016/11/30 PHP
PHP7新特性之抽象语法树(AST)带来的变化详解
2018/07/17 PHP
ThinkPHP框架实现定时执行任务的两种方法分析
2018/09/04 PHP
设定php简写功能的方法
2019/11/28 PHP
js event事件的传递与冒泡处理
2009/12/06 Javascript
js不完美解决click和dblclick事件冲突问题
2012/07/16 Javascript
jQuery动画效果-slideUp slideDown上下滑动示例代码
2013/08/28 Javascript
用javascript关闭本窗口技巧小结
2014/09/05 Javascript
Extjs grid panel自带滚动条失效的解决方法
2014/09/11 Javascript
AngularJS入门教程(零):引导程序
2014/12/06 Javascript
jQuery处理json数据返回数组和输出的方法
2015/03/11 Javascript
JQuery工具函数汇总
2015/06/15 Javascript
异步JavaScript编程中的Promise使用方法
2015/07/28 Javascript
在 Express 中使用模板引擎
2015/12/10 Javascript
基于JQuery实现图片上传预览与删除操作
2016/05/24 Javascript
jQuery ajax的功能实现方法详解
2017/01/06 Javascript
使用jQuery ajaxupload插件实现无刷新上传文件
2017/04/23 jQuery
ajax +NodeJS 实现图片上传实例
2017/06/06 NodeJs
vue+高德地图写地图选址组件的方法
2019/05/18 Javascript
微信小程序事件流原理解析
2019/11/27 Javascript
vue-cli设置publicPath小记
2020/04/14 Javascript
python通过zlib实现压缩与解压字符串的方法
2014/11/19 Python
python提取页面内url列表的方法
2015/05/25 Python
Python将json文件写入ES数据库的方法
2019/04/10 Python
Django给admin添加Action的步骤详解
2019/05/01 Python
python实现可下载音乐的音乐播放器
2020/02/25 Python
Pytorch使用PIL和Numpy将单张图片转为Pytorch张量方式
2020/05/25 Python
python字典key不能是可以是啥类型
2020/08/04 Python
史泰博(Staples)中国官方网站:办公用品一站式采购
2016/09/05 全球购物
美国户外运动商店:Sun & Ski
2018/08/23 全球购物
索尼巴西商店:Sony巴西
2019/06/21 全球购物
销售实习自我鉴定
2013/12/07 职场文书
如何书写你的职业生涯规划书?
2019/06/27 职场文书
Python实战之实现简易的学生选课系统
2021/05/25 Python
分享node.js实现简单登录注册的具体代码
2022/04/26 NodeJs