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 常用函数库详解
Oct 21 Javascript
jQuery find和children方法使用
Jan 31 Javascript
关于jquery性能最佳实践的讨论,与求教
Mar 30 Javascript
jQuery内置的AJAX功能和JSON的使用实例
Jul 27 Javascript
javascript实现控制浏览器全屏
Mar 30 Javascript
JavaScript中三种异步上传文件方式
Mar 06 Javascript
前端防止用户重复提交js实现代码示例
Sep 07 Javascript
在vue中解决提示警告 for循环报错的方法
Sep 28 Javascript
Vue路由对象属性 .meta $route.matched详解
Nov 04 Javascript
Vue axios与Go Frame后端框架的Options请求跨域问题详解
Mar 03 Javascript
文章或博客自动生成章节目录索引(支持三级)的实现代码
May 10 Javascript
uniapp引入支付宝原生扫码插件步骤详解
Jul 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
php判断变量类型常用方法
2012/04/24 PHP
php实现猴子选大王问题算法实例
2015/04/20 PHP
PHP简单实现图片格式转换(jpg转png,gif转png等)
2019/10/30 PHP
js数组转json并在后台对其解析具体实现
2013/11/20 Javascript
jQuery中dequeue()方法用法实例
2014/12/29 Javascript
Javascript基础教程之关键字和保留字汇总
2015/01/18 Javascript
jQuery判断指定id的对象是否存在的方法
2015/05/22 Javascript
浅谈Javascript数组的使用
2015/07/29 Javascript
JS特效实现图片自动播放并可控的效果
2015/07/31 Javascript
Node.js+jade+mongodb+mongoose实现爬虫分离入库与生成静态文件的方法
2017/09/20 Javascript
webpack+react+antd脚手架优化的方法
2018/04/02 Javascript
使用JS代码实现俄罗斯方块游戏
2018/08/03 Javascript
浅谈Javascript中的对象和继承
2019/04/19 Javascript
Vue computed 计算属性代码实例
2020/04/22 Javascript
[00:32]2016完美“圣”典风云人物:Maybe宣传片
2016/12/05 DOTA
Python下的Softmax回归函数的实现方法(推荐)
2017/01/26 Python
Python3.6 Schedule模块定时任务(实例讲解)
2017/11/09 Python
python使用adbapi实现MySQL数据库的异步存储
2019/03/19 Python
Python 学习教程之networkx
2019/04/15 Python
Python Tricks 使用 pywinrm 远程控制 Windows 主机的方法
2020/07/21 Python
python3.7调试的实例方法
2020/07/21 Python
python实现学生管理系统开发
2020/07/24 Python
python 获取剪切板内容的两种方法
2020/11/28 Python
CSS3 3D立方体效果示例-transform也不过如此
2016/12/05 HTML / CSS
微软马来西亚官方网站:Microsoft马来西亚
2019/11/22 全球购物
产品工艺师的岗位职责
2013/11/15 职场文书
便利店的创业计划书
2014/01/15 职场文书
中学教师请假制度
2014/02/03 职场文书
公司授权委托书
2014/04/04 职场文书
设立有限责任公司出资协议书
2014/11/01 职场文书
2014年保洁工作总结
2014/11/24 职场文书
采购员岗位职责范本
2015/04/07 职场文书
培训学校2015年度工作总结
2015/07/20 职场文书
2016年“5.12”护士节致辞
2015/07/31 职场文书
小学三年级数学教学反思
2016/02/16 职场文书
JavaScript中reduce()的用法
2022/05/11 Javascript