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 相关文章推荐
在网页里看flash的trace数据的js类
Jan 10 Javascript
js trim函数 去空格函数与正则集锦
Nov 20 Javascript
js页面跳转的问题(跳转到父页面、最外层页面、本页面)
Aug 14 Javascript
jquery中获取id值方法小结
Sep 22 Javascript
jQuery中replaceAll()方法用法实例
Jan 16 Javascript
Vue.js第四天学习笔记
Dec 02 Javascript
JavaScript输入框字数实时统计更新
Jun 17 Javascript
Vue计算属性的使用
Aug 04 Javascript
Canvas放置反弹效果随机图形(实例)
Aug 17 Javascript
vue 实现axios拦截、页面跳转和token 验证
Jul 17 Javascript
layui前端框架之table表数据的刷新方法
Aug 17 Javascript
解决vue axios的封装 请求状态的错误提示问题
Sep 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 多行多列显示
2009/08/15 PHP
XAMPP安装与使用方法详细解析
2013/11/27 PHP
php操作mysql数据库的基本类代码
2014/02/25 PHP
zf框架的db类select查询器join链表使用示例(zend框架)
2014/03/14 PHP
php使用json_decode后数字对象转换成了科学计数法的解决方法
2017/02/20 PHP
PHP实现的多维数组去重操作示例
2018/07/21 PHP
PHP正则表达式函数preg_replace用法实例分析
2020/06/04 PHP
初窥JQuery-Jquery简介 入门了解篇
2010/11/25 Javascript
使用滤镜设置透明导致 IE 6/7/8/9 解析异常的解决方法
2011/04/07 Javascript
jquery mobile实现拨打电话功能的几种方法
2013/08/05 Javascript
js螺旋动画效果的具体实例
2013/11/15 Javascript
在页面加载完成后通过jquery给多个span赋值
2014/05/21 Javascript
jQuery选择器源码解读(四):tokenize方法的Expr.preFilter
2015/03/31 Javascript
JavaScript获取当前网页标题(title)的方法
2015/04/03 Javascript
基于Arcgis for javascript实现百度地图ABCD marker的效果
2015/09/12 Javascript
详解javascript跨浏览器事件处理程序
2016/03/27 Javascript
EasyUI Pagination 分页的两种做法小结
2016/07/09 Javascript
js运动事件函数详解
2016/10/21 Javascript
jQuery插件FusionWidgets实现的Bulb图效果示例【附demo源码下载】
2017/03/23 jQuery
利用JS实现简单的瀑布流加载图片效果
2017/04/22 Javascript
Bootstrap Table从零开始
2017/06/30 Javascript
Vue.js 的移动端组件库mint-ui实现无限滚动加载更多的方法
2017/12/23 Javascript
vue日历/日程提醒/html5本地缓存功能
2019/09/02 Javascript
ES6 class类链式继承,实例化及react super(props)原理详解
2020/02/15 Javascript
一篇文章看懂JavaScript中的回调
2021/01/05 Javascript
Python中使用Flask、MongoDB搭建简易图片服务器
2015/02/04 Python
python 获取图片分辨率的方法
2019/01/08 Python
Python SELENIUM上传文件或图片实现过程
2019/10/28 Python
python实现宿舍管理系统
2019/11/22 Python
pycharm-professional-2020.1下载与激活的教程
2020/09/21 Python
详解HTML5 Canvas绘制不规则图形时的非零环绕原则
2016/03/21 HTML / CSS
Cynthia Rowley官网:全球领先的生活方式品牌
2020/10/27 全球购物
写出二分查找算法的两种实现
2013/05/13 面试题
毕业生就业推荐表导师评语
2014/12/31 职场文书
给男朋友的道歉短信
2015/05/12 职场文书
Python连接Postgres/Mysql/Mongo数据库基本操作大全
2021/06/29 Python