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 相关文章推荐
checkbox 多选框 联动实现代码
Oct 22 Javascript
一些常用的JS功能函数(2009-06-04更新)
Jun 04 Javascript
JsDom 编程小结
Aug 09 Javascript
表单验证的完整应用案例探讨
Mar 29 Javascript
js 页面元素的几个用法总结
Nov 18 Javascript
jQuery中:last选择器用法实例
Dec 30 Javascript
解决Window10系统下Node安装报错的问题分析
Dec 13 Javascript
js实现鼠标拖动功能
Mar 20 Javascript
2种简单的js倒计时方式
Oct 20 Javascript
vue.js单文件组件中非父子组件的传值实例
Sep 13 Javascript
简单易扩展可控性强的Jquery转盘抽奖程序
Mar 16 jQuery
Angular8 Http拦截器简单使用教程
Aug 20 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
帅气的琦玉老师
2020/03/02 日漫
纯PHP生成的一个树叶图片画图例子
2014/04/16 PHP
PHP实现将HTML5中Canvas图像保存到服务器的方法
2014/11/28 PHP
PHP脚本自动识别验证码查询汽车违章
2016/12/20 PHP
一键生成各种尺寸Icon的php脚本(实例)
2017/02/08 PHP
thinkPHP5框架分页样式类完整示例
2018/09/01 PHP
php反射学习之不用new方法实例化类操作示例
2019/06/14 PHP
JQuery 国际象棋棋盘 实现代码
2009/06/26 Javascript
JS刷新框架外页面七种实现代码
2013/02/18 Javascript
页面使用密码保护代码
2013/04/10 Javascript
基于jquery自定义的漂亮单选按钮RadioButton
2013/11/19 Javascript
兼容主流浏览器的jQuery+CSS 实现遮罩层的简单代码
2014/10/14 Javascript
javascript用函数实现对象的方法
2015/05/14 Javascript
浅谈jquery.fn.extend与jquery.extend区别
2015/07/13 Javascript
jQuery+html5+css3实现圆角无刷新表单带输入验证功能代码
2015/08/21 Javascript
jQuery Mobile开发中日期插件Mobiscroll使用说明
2016/03/02 Javascript
详细谈谈AngularJS的子级作用域问题
2016/09/05 Javascript
js判断是否为空和typeof的用法(详解)
2016/10/07 Javascript
JS实现课堂随机点名和顺序点名
2017/03/09 Javascript
详解vue组件基础
2018/05/04 Javascript
使用vue-infinite-scroll实现无限滚动效果
2018/06/22 Javascript
详解Vue.js iview实现树形权限表(可扩展表)
2018/09/30 Javascript
多个vue子路由文件自动化合并的方法
2019/09/03 Javascript
解决layer弹出层中表单不起作用的问题
2019/09/09 Javascript
vue2.x数组劫持原理的实现
2020/04/19 Javascript
[13:38]2015国际邀请赛中国战队出征仪式
2015/05/29 DOTA
[00:37]食人魔魔法师轮盘吉兆顺应全新至宝将拥有额外款式
2019/12/19 DOTA
python 正则式 概述及常用字符
2009/05/07 Python
Python3.2模拟实现webqq登录
2016/02/15 Python
Django视图和URL配置详解
2018/01/31 Python
python3.6.3安装图文教程 TensorFlow安装配置方法
2020/06/24 Python
Python骚操作之动态定义函数
2019/03/26 Python
Pytorch 数据加载与数据预处理方式
2019/12/31 Python
罗技英国官方网站:Logitech UK
2020/11/03 全球购物
高中化学教学反思
2014/01/13 职场文书
go语言中json数据的读取和写出操作
2021/04/28 Golang