首先,为什么我会提出这样的方式来进行操作呢?原因还是需求导致:

  在做项目中,有这样一个需求,在进行网页中图片查看的时候,需要对图片的操作有支持旋转和缩放这些操作,看似这样的网上插件有很多,对!但是对于IE8 的支持都不行啊~~~因为虽然很多 插件可以在 IE8进行图片旋转,比如jquery的rotate.js 插件很好用,但是在IE8 下面进行旋转之后,就不能在进行缩放了,因为它会自动生成一个固定大小的object 元素,我们就不能操作这个元素了!要不就是使用canvas, 但是我的需求是在旋转了图片之后,我还能对原生的 img 图片进行大小变化等操作,以上的这些旋转后,都不是原生的对象了.......

  在进行了各种思想斗争之后,没有放弃,继续寻找方法~在网上看到了 IE filter 滤镜的方式来处理旋转,我尝试了一下,发现这样旋转之后,可以保留原生对象,很好~就打算用这样的方式来处理IE8的兼容性问题了~

  1. <div id="play" style="width:99%;height:99%;">
  2.   <img id="img" src="data:images/bg.jpg" alt="Alternate Text" />
  3. </div>
  1. //********************** 关于IE8 兼容性的处理,使用 IE滤镜与图片旋转 START **********************
  2. function UseIE8()
  3. {
  4. var browser = navigator.appName
  5. var b_version = navigator.appVersion
  6. var version = b_version.split(";");
  7. var trim_Version = version[1].replace(/[ ]/g, "");
  8. if (browser == "Microsoft Internet Explorer" && trim_Version == "MSIE6.0") {
  9. return true;
  10. }
  11. else if (browser == "Microsoft Internet Explorer" && trim_Version == "MSIE7.0") {
  12. return true;
  13. }
  14. else if (browser == "Microsoft Internet Explorer" && trim_Version == "MSIE8.0") {
  15. return true;
  16. }
  17. return false;
  18. }
  19. function ro0() {
  20. $('#img').css({ filter: 'progid:DXImageTransform.Microsoft.BasicImage(rotation=0)' });
  21. }
  22. //90度
  23. function ro1() {
  24. $('#img').css({ filter: 'progid:DXImageTransform.Microsoft.BasicImage(rotation=1)' });
  25. }
  26. //180度
  27. function ro2() {
  28. $('#img').css({ filter: 'progid:DXImageTransform.Microsoft.BasicImage(rotation=2)' });
  29. }
  30. //270度
  31. function ro3() {
  32. $('#img').css({ filter: 'progid:DXImageTransform.Microsoft.BasicImage(rotation=3)' });
  33. }
  34. //IE8 旋转参数
  35. var rotate_IE8 = 0;
  36. //********************** 关于IE8 兼容性的处理,使用 IE滤镜与图片旋转 END **********************
  37.  
  38. var imgWidth = "auto";
  39. var imgHeight = "auto";
  40. var rotate = 0;
  41. var index = 0;
  42. var imgArry;
  43. //照片旋转
  44. function rotateImg(size) {
  45. //如果使用的是 IE8
  46. if (UseIE8()) {
  47. var res;
  48. if (size > 0) {
  49. rotate_IE8++;
  50. } else {
  51. rotate_IE8--;
  52. }
  53. res = rotate_IE8 % 4;//因为旋转参数都是 0,1,2,3 的值,所以需要%
  54. if (res < 0)
  55. {
  56. res += 4;
  57. }
  58. switch (res) {
  59. case 0:
  60. ro0();
  61. break;
  62. case 1:
  63. ro1();
  64. break;
  65. case 2:
  66. ro2();
  67. break;
  68. case 3:
  69. ro3();
  70. break;
  71. }
  72. } else {//其他浏览器正常使用 rotate.js 进行处理
  73. rotate += size;
  74. var img = $("#img");
  75. img.rotate(rotate);
  76. }
  77. //还原大小
  78. $("#img").width(imgWidth);
  79. $("#img").height(imgHeight);
  80. }
  1. //放大缩小图片
  2. function imgToSize(size) {
  3. var img = $("#img");
  4. var oWidth = img.width(); //取得当前图片的实际宽度
  5. var oHeight = img.height(); //取得当前图片的实际高度
  6. if (size < && (oWidth <= || oHeight <= )) {
  7. return;
  8. }
  9. //IE8 特殊处理
  10. if (UseIE8()) {
  11. if (rotate_IE8 % % == ) {
  12. //对于IE8 ,旋转次数奇数的时候 宽高互换
  13. var t = oWidth;
  14. oWidth = oHeight;
  15. oHeight = oWidth;
  16. }
  17. }
  18. img.width(oWidth + size);
  19. img.height(oHeight + size / oWidth * oHeight);
  20. }

  

IE8 下面通过滤镜的方式进行图片旋转的更多相关文章

  1. 兼容ie8 rgba()用法 滤镜filter的用法

    原文  http://blog.csdn.net/westernranger/article/details/40836861 今天遇到了一个问题,要在一个页面中设置一个半透明的白色div.这个貌似不 ...

  2. Android:通过滤镜实现点击图片变暗效果

    实现点击图片(ImageView)变暗效果,有一个较简单的方法,就是讲目标图片设置为背景图片(setBackground),再创建一个selector.xml文件,里面放置一张普通状态时的透明图片,一 ...

  3. 极验反爬虫防护分析之slide验证方式下图片的处理及滑动轨迹的生成思路

    本文要分享的内容是去年为了抢鞋而分析 极验(GeeTest)反爬虫防护的笔记,由于篇幅较长(为了多混点CB)我会按照我的分析顺序,分成如下四个主题与大家分享: 极验反爬虫防护分析之交互流程分析 极验反 ...

  4. 基于Emgucv,C#的图片旋转方式

    /// <summary> /// 图片旋转 --百度 旋转仿射 /// </summary> /// <param name="modelImage" ...

  5. PHPThumb处理图片,生成缩略图,图片尺寸调整,图片截取,图片加水印,图片旋转

    [强烈推荐]下载地址(github.com/masterexploder/PHPThumb). 注意这个类库有一个重名的叫phpThumb,只是大小写的差别,所以查找文档的时候千万注意. 在网站建设过 ...

  6. js无刷新上传图片,服务端有生成缩略图,剪切图片,iphone图片旋转判断功能

    html: <form action="<{:AppLink('circle/uploadimg')}>" id="imageform" me ...

  7. 【js】js 让图片旋转

     转http://www.cnblogs.com/ustcyc/p/3760116.html 核心: canvas.style.filter = "progid:DXImageTransfo ...

  8. flex 图片旋转(解决公转和自转问题)

    在Flex中图片的旋转是既有公转和自转的.这样在图片旋转的时候就有一定小麻烦: 为了更好地说明问题,先引入两个概念:“自转”和“公转”.想象一下,地球在绕着太阳公转的同时,它自己也在自转.Flash应 ...

  9. js实现图片旋转

    1.以下代码适用ie9版本 js代码如下: function rotate(o,p){ var img = document.getElementById(o); if(!img || !p) ret ...

随机推荐

  1. C语言使用hiredis访问redis

    Hiredis 是Redis数据库的简约C客户端库.它是简约的,因为它只是增加了对协议的最小支持,但是同时它使用了一个高级别的 printf-like API,所以对于习惯了 printf 风格的C编 ...

  2. [Python 从入门到放弃] 5. 文件与异常(一)

    1.文件操作: 文件操作包含读/写 从文件中读取数据 向文件写入数据 Python中内置了open()方法用于文件操作 (更多关于open()BIF介绍 阅读此篇) 基本模板: 1.获取文件对象 2. ...

  3. Jetty学习四:部署到Jetty

    转自:http://www.tuicool.com/articles/NrENjq Web应用的框架 标准Jetty发布版本能部署标准servlet Spec Web应用和Jetty内部Context ...

  4. 【一个小功能】点击图标/链接发起QQ临时会话

    有时候,我们需要实现在网页上点击一个QQ图标来实现QQ临时会话,这样不用添加好友,也能满足及时沟通的需求. 实现方案比较简单,只是为a标签修改href属性,代码如下 <a href=" ...

  5. 小程序获取地址授权的修改 wx.openSetting需点击

    开发者可以通过 wx.openSetting 接口来打开小程序设置界面并返回用户的设置结果.在原来的 wx.openSetting 接口中,我们允许开发者直接调用此接口,但目前我们发现有不少开发者滥用 ...

  6. java权限控制以及变量的初始化

    知识是靠积累的,不断的温习会帮你让你遇到许多问题,解决完这些问题之后,会收获许多,233333333333333. 1.java访问控制符 2.java变量初始化问题 默认构造方法的名字与类名相同,它 ...

  7. Docker实战-为镜像添加SSH服务

    1.基于docker commit命令创建 Docker提供了docker commit命令,支持用户提交自己对定制容器的修改,并生成新的镜像. 命令格式为:docker commit CONTAIN ...

  8. JavaScript 日期多加一天 方法

    今天查看项目发现有出bug,由于未了符合sql语句的要求,前台网页显示的时候传到后台的时候要+1天, 网上查看了别人写的,发现多多少少有点漏洞,经过我自己总结,写出了达到了我要求的 var str = ...

  9. 解决代码报红:Cannot resolve symbol 'xxx'

    直接复制别人的代码,maven依赖到自己的IDEA中,个别代码报红,说是不能加载这个东西,检查代码没错,依赖没错,引入jar包也没错 最后网上找到了解决方法,参考文章 如上图所示,一般建议点击Inva ...

  10. 胜利大逃亡(杭电hdu1253)bfs简单题

    胜利大逃亡 Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Subm ...