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 相关文章推荐
Prototype 学习 工具函数学习($w,$F方法)
Jul 12 Javascript
JQuery Tips(2) 关于$()包装集你不知道的
Dec 14 Javascript
jQuery事件 delegate()使用方法介绍
Oct 30 Javascript
javascript中如何处理引号编码&amp;#034;
Aug 15 Javascript
flash遮住div问题的正确解决方法
Feb 27 Javascript
利用Angularjs实现幻灯片效果
Sep 07 Javascript
微信小程序 跳转传参数与传对象详解及实例代码
Mar 14 Javascript
javascript编程实现栈的方法详解【经典数据结构】
Apr 11 Javascript
jsonp跨域获取数据的基础教程
Jul 01 Javascript
Vue唯一可以更改vuex实例中state数据状态的属性对象Mutation的讲解
Jan 18 Javascript
全面了解JavaScript的作用域链
Apr 03 Javascript
详解vite2.0配置学习(typescript版本)
Feb 25 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下统计用户在线时间的一种尝试
2010/08/26 PHP
php自定义加密与解密程序实例
2014/12/31 PHP
JS 判断undefined的实现代码
2009/11/26 Javascript
javascript获取元素偏移量的方法有哪些
2014/06/24 Javascript
一个小例子解释如何来阻止Jquery事件冒泡
2014/07/17 Javascript
基于jquery ui的alert,confirm方案(支持换肤)
2015/04/03 Javascript
Angular Js文件上传之form-data
2015/08/28 Javascript
12个超实用的JQuery代码片段
2015/11/02 Javascript
Jquery promise实现一张一张加载图片
2015/11/13 Javascript
jQuery实现一个简单的验证码功能
2017/06/26 jQuery
vue.js与后台数据交互的实例讲解
2018/08/08 Javascript
layui原生表单验证的实例
2019/09/09 Javascript
JavaScript设计模式--简单工厂模式实例分析【XHR工厂案例】
2020/05/23 Javascript
[01:50]《我与DAC》之玩家:iG夺冠时的那面红旗
2018/03/29 DOTA
简单介绍Python中的JSON模块
2015/04/08 Python
Windows下Anaconda的安装和简单使用方法
2018/01/04 Python
python+matplotlib实现动态绘制图片实例代码(交互式绘图)
2018/01/20 Python
Python cookbook(数据结构与算法)从字典中提取子集的方法示例
2018/03/22 Python
解决DataFrame排序sort的问题
2018/06/07 Python
Django migrations 默认目录修改的方法教程
2018/09/28 Python
python多线程同步实例教程
2019/08/11 Python
对python中的*args与**kwgs的含义与作用详解
2019/08/28 Python
利用python实现PSO算法优化二元函数
2019/11/13 Python
python-视频分帧&amp;多帧合成视频实例
2019/12/10 Python
澳大利亚电子产品购物网站:Dick Smith
2017/02/02 全球购物
英国运动服、设备及配件网站:DW Sports
2019/12/04 全球购物
中学生获奖感言
2014/02/04 职场文书
安卓程序员求职信
2014/02/28 职场文书
给学校的建议书
2014/03/12 职场文书
广告创意求职信
2014/03/17 职场文书
反邪教宣传工作方案
2014/05/07 职场文书
专项法律服务方案
2014/06/11 职场文书
幼儿园辞职书
2015/02/26 职场文书
医院病假条范文
2015/08/17 职场文书
SQL模糊查询报:ORA-00909:参数个数无效问题的解决
2021/06/21 Oracle
最新动漫情报:2022年7月新番定档超过30部, OVERLORD骨王第四季也在其中噢
2022/05/04 日漫