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 相关文章推荐
js cookies实现简单统计访问次数
Nov 24 Javascript
jquery操作复选框(checkbox)的12个小技巧总结
Feb 04 Javascript
使用JavaScript实现网页版Pongo设计思路及源代码分享
Jun 16 Javascript
JS中获取函数调用链所有参数的方法
May 07 Javascript
js实现的二级横向菜单条实例
Aug 22 Javascript
javascript动画之磁性吸附效果篇
Dec 09 Javascript
Vue Promise的axios请求封装详解
Aug 13 Javascript
对angular 实时更新模板视图的方法$apply详解
Oct 09 Javascript
详解如何在vue项目中使用layui框架及采坑
May 05 Javascript
JavaScript中BOM对象原理与用法分析
Jul 09 Javascript
解决echarts echarts数据动态更新和dataZoom被重置问题
Jul 20 Javascript
vue登录页实现使用cookie记住7天密码功能的方法
Feb 18 Vue.js
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
mysql 的 like 问题,超强毕杀记!!!
2007/01/18 PHP
PHP下使用CURL方式POST数据至API接口的代码
2013/02/14 PHP
PHP 前加at符合@的作用解析
2015/07/31 PHP
PHP读取大文件的几种方法介绍
2016/10/27 PHP
php的常量和变量实例详解
2017/06/27 PHP
PHP实现的最大正向匹配算法示例
2017/12/19 PHP
JavaScript Event学习第十一章 按键的检测
2010/02/10 Javascript
GitHub上一些实用的JavaScript的文件压缩解压缩库推荐
2016/03/13 Javascript
Javascript 5种方法实现过滤删除前后所有空格
2016/06/22 Javascript
node koa2实现上传图片并且同步上传到七牛云存储
2017/07/31 Javascript
jQuery模拟爆炸倒计时功能实例代码
2017/08/21 jQuery
javaScript中的空值和假值
2017/12/18 Javascript
基于Vue的延迟加载插件vue-view-lazy
2018/05/21 Javascript
vue-router 手势滑动触发返回功能
2018/09/30 Javascript
深入理解nodejs搭建静态服务器(实现命令行)
2019/02/05 NodeJs
Vue 刷新当前路由的实现代码
2019/09/26 Javascript
vue data变量相互赋值后被实时同步的解决步骤
2020/08/05 Javascript
Python中MYSQLdb出现乱码的解决方法
2014/10/11 Python
Eclipse和PyDev搭建完美Python开发环境教程(Windows篇)
2016/11/16 Python
Python实现动态加载模块、类、函数的方法分析
2017/07/18 Python
python中lambda()的用法
2017/11/16 Python
Python BS4库的安装与使用详解
2018/08/08 Python
python 队列基本定义与使用方法【初始化、赋值、判断等】
2019/10/24 Python
python dict如何定义
2020/09/02 Python
CSS3中新增的对文本和字体的设置
2020/02/03 HTML / CSS
canvas简单连线动画的实现代码
2020/02/04 HTML / CSS
Ever New加拿大官网:彰显女性美
2018/10/05 全球购物
回馈慈善的设计师太阳镜:DIFF eyewear
2019/10/17 全球购物
建筑专业自荐信范文
2014/01/05 职场文书
前处理组长岗位职责
2014/03/01 职场文书
化工实习心得体会
2014/09/09 职场文书
法人委托书范本
2014/09/15 职场文书
竞聘报告优秀范文
2014/11/06 职场文书
2014年档案室工作总结
2014/12/01 职场文书
展览会邀请函
2015/02/02 职场文书
会计出纳岗位职责
2015/03/31 职场文书