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 相关文章推荐
设置iframe的document.designMode后仅Firefox中其body.innerHTML为br
Feb 27 Javascript
jquery设置控件位置的方法
Aug 21 Javascript
javascript中call和apply方法浅谈
Sep 27 Javascript
深入探讨JavaScript、JQuery屏蔽网页鼠标右键菜单及禁止选择复制
Jun 10 Javascript
一行命令搞定node.js 版本升级
Jul 20 Javascript
JavaScript代码生成PDF文件的方法
Feb 26 Javascript
实例讲解JavaScript中的this指向错误解决方法
Jun 13 Javascript
JavaScript和jQuery获取input框的绝对位置实现方法
Oct 13 Javascript
脚本div实现拖放功能(两种)
Feb 13 Javascript
200行HTML+JavaScript实现年会抽奖程序
Jan 22 Javascript
Vue作用域插槽实现方法及作用详解
Jul 08 Javascript
javascript中导出与导入实现模块化管理教程
Dec 03 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
php判断变量类型常用方法
2012/04/24 PHP
PHP随手笔记整理之PHP脚本和JAVA连接mysql数据库
2015/11/25 PHP
Add a Formatted Table to a Word Document
2007/06/15 Javascript
JavaScript CSS修改学习第二章 样式
2010/02/19 Javascript
基于jquery的大众点评,分类导航实现代码
2011/08/23 Javascript
javascript学习笔记(十) js对象 继承
2012/06/19 Javascript
jQuery把表单元素变为json对象
2013/11/06 Javascript
JavaScript的各种常见函数定义方法
2014/09/16 Javascript
JS+CSS实现的拖动分页效果实例
2015/05/11 Javascript
Vue.js实现一个自定义分页组件vue-paginaiton
2016/09/05 Javascript
jQuery图片切换动画特效
2016/11/02 Javascript
基于BootstrapValidator的Form表单验证(24)
2016/12/12 Javascript
简单实现JS计算器功能
2016/12/21 Javascript
BootStrap Fileinput的使用教程
2016/12/30 Javascript
详解使用webpack构建多页面应用
2017/12/21 Javascript
vue子传父关于.sync与$emit的实现
2019/11/05 Javascript
javascript实现图片轮换动作方法
2020/08/07 Javascript
微信小程序中data-key属性之数据传输(经验总结)
2020/08/22 Javascript
js实现菜单跳转效果
2020/12/11 Javascript
[03:17]2014DOTA2 国际邀请赛中国区预选赛 四强专访
2014/05/23 DOTA
详细解析Python中__init__()方法的高级应用
2015/05/11 Python
Python 判断是否为质数或素数的实例
2017/10/30 Python
使用matplotlib中scatter方法画散点图
2019/03/19 Python
python绘制已知点的坐标的直线实例
2019/07/04 Python
使用python将多个excel文件合并到同一个文件的方法
2019/07/09 Python
用python写PDF转换器的实现
2020/10/29 Python
商得四方公司面试题(gid+)
2014/04/30 面试题
大众服装店创业计划书范文
2014/01/01 职场文书
《雪地里的小画家》教学反思
2014/02/22 职场文书
创新型城市实施方案
2014/03/06 职场文书
珍惜资源的建议书
2014/08/26 职场文书
弘扬焦裕禄精神践行三严三实心得体会
2014/10/13 职场文书
晋江市委常委班子四风问题整改工作方案
2014/10/26 职场文书
2015年电话客服工作总结
2015/05/18 职场文书
暑期社会实践新闻稿
2015/07/17 职场文书
初中班主任教育随笔
2015/08/15 职场文书