网页中图片旋转的几种实现方式

原文地址为: 网页中图片旋转的几种实现方式

网页图片旋转一般有下面三种常见的实现方式:

一、 ie 滤镜

IE的图形旋转滤镜,通过指定BasicImage滤镜的rotation值旋转元素,旋转方向为顺时针,旋转的中心点为元素的左上角。rotation可以有4个旋转值:0, 1, 2,和3分别表示将元素旋转0度、90度、180度、270度。

浏览器支持: IE5.5+

CSS代码: 

.rotate{ filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3); }  

JS代码:

element.style.filter = "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";  

IE滤镜旋转演示:

<!DOCTYPE html><html><head><meta charset="utf-8" /><title>ie-filter-rotate</title></head><body><div id="odiv" style="position:absolute; left:270px; top:45px;" ><a href="http://s.click.taobao.com/t_8?e=7HZ6jHSTbIWYKA1Nkch%2BmIw66j0vo3r3FmWt1QTQz2JsyA%3D%3D&p=mm_10844584_0_0"><img style="border:none" src='http://img1.gtimg.com/digi/pics/hv1/72/143/1111/72279312.jpg' /></a></div><p style="line-height:1.5em"> <button οnclick="rotate()"> rotate</button> <button οnclick="odiv.style.filter=''">clear filter</button> <a href="http://s.click.taobao.com/t_8?e=7HZ6jHSTbIWYKA1Nkch%2BmIw66j0vo3r3FmWt1QTQz2JsyA%3D%3D&p=mm_10844584_0_0">三星 galaxy note 10.1</a> <br /> <span id="info">rotation=0,旋转0度</span></p><br/><script>var i=0;function rotate(){ var oDiv = document.getElementById("odiv"); if( !document.body.filters ){ alert("这个浏览器不支持滤镜"); return; } i>=3 ? i=0 : i++; oDiv.style.filter='progid:DXImageTransform.Microsoft.BasicImage(rotation='+ (i) +')'; document.getElementById("info").innerHTML= "rotation="+ i + ",旋转"+ (i*90) + "度"}</script></body></html>

二、 CSS3 transform

css3 的transform属性允许我们旋转、缩放和移动元素。 可以通过给它传递一个 rotate(度数) 值来旋转一个元素,正值表示顺时针方向旋转,负值表示逆时针方向旋转,旋转的中心点为元素的中心

浏览器支持:Firefox 4+、Oprea 10+、Safari 3.1+、Chrome 8+、IE 9+

CSS代码:

.rotate{
-ms-transform:rotate(90deg); /* IE 9 */
-moz-transform:rotate(90deg); /* Firefox */
-webkit-transform:rotate(90deg); /* Safari and Chrome */
-o-transform:rotate(90deg); /* Opera */
}  

JS代码:

element.style.webkitTransform="rotate(-90deg)"
element.style.MozTransform="rotate(-90deg)"
element.style.msTransform="rotate(-90deg)"
element.style.OTransform="rotate(-90deg)"
element.style.transform="rotate(-90deg)";

css3 tranform rotate 旋转演示:

<!DOCTYPE html><html><head><meta charset="gb2312" /><title>css 3 transform rotate</title><style>a img{ border:none}</style></head><body><div id="rotate" style=" cursor:pointer; position:absolute; left:100px; top:100px"><a href="http://www.amazon.cn/gp/product/B006GYJ5LY/ref=as_li_qf_sp_asin_tl?ie=UTF8&camp=536&creative=3200&creativeASIN=B006GYJ5LY&linkCode=as2&tag=buyed-23"><img src="http://ec4.images-amazon.com/images/I/410Ve1e79CL._SL500_AA300_.jpg" /></a><img src="http://www.assoc-amazon.cn/e/ir?t=buyed-23&l=as2&o=28&a=B006GYJ5LY" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /></div><script>(function(){var element = document.getElementById("rotate");var r = 0;var i = 1;function rotate(){ r += i; if( Math.abs(r) >= 25 ) i*=-1 element.style.MozTransform = "rotate(" + r + "deg)"; element.style.webkitTransform ="rotate(" + r + "deg)"; element.style.msTransform = "rotate(" + r + "deg)"; element.style.OTransform = "rotate(" + r + "deg)"; element.style.transform = "rotate(" + r + "deg)";}var timer = setInterval(rotate,50);element.onmouseover = function(){ clearInterval(timer); timer = null;};element.onmouseout = function(){ if(timer)return; timer = setInterval(rotate,30);};}());</script></body></html>

三、 HTML5 canvas rotate

使用canvas 2d绘图上下文对象的context.rotate(angle)方法,通过指定需要旋转的弧度旋转坐标轴来实现图片的旋转,正值表示顺时针方向旋转,负值表示逆时针方向旋转,旋转的中心点时画布的左上角。角度转换弧度的公式为:弧度 = 角度 * Math.PI / 180。

 

浏览器支持:Chrome 1.0+、Firefox 1.5+、Opera 9.0+、Safari 1.3+ 、IE 9+

JS代码:

context = canvas.getContext("2d")
context.rotate(90 * Math.PI / 180);
context.drawImage(img, 0, -img.height);

 坐标旋转示意图:

HTML5 canvas rotate旋转演示:

<!DOCTYPE html><html><head><meta charset="gb2312" /><title>HTML5 canvas rotate</title></head><body><a href="http://www.amazon.cn/gp/product/B009DFCZAQ/ref=as_li_qf_sp_asin_tl?ie=UTF8&camp=536&creative=3200&creativeASIN=B009DFCZAQ&linkCode=as2&tag=buyed-23">HTML5秘籍/图灵程序设计丛书</a><img src="http://www.assoc-amazon.cn/e/ir?t=buyed-23&l=as2&o=28&a=B009DFCZAQ" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /><br><script>(function(){ var canvas = document.createElement("canvas"); canvas.style = "border:1px solid #ccc" var context = canvas.getContext("2d"); var img = new Image(); if(context == null){ return; } img.src="http://img1.douban.com/lpic/s11190661.jpg"; img.onload = function(){ var length = Math.sqrt(Math.pow(this.width, 2) + Math.pow(this.height, 2));//计算画布大小,取图形的对角线,否则旋转时可能隐藏掉部分内容 canvas.width = length; canvas.height = length; //context.strokeRect(0, 0, length, length); context.translate(canvas.width/2, canvas.height/2);//平移坐标原点到画布中心 //context.rotate(30 * Math.PI / 180); context.drawImage(this, (-this.width / 2), ( -this.height / 2 )); timer = setInterval(rotate, 50); } var r = 0; var i = 1; function rotate(){ r += i; if( Math.abs(r) >= 25 ) i*=-1;//左右摆动25度 context.save();//保存坐标抽状态 context.clearRect(-canvas.width/2, -canvas.height/2, canvas.width, canvas.height); context.rotate(r * Math.PI / 180); context.drawImage(img, (-img.width / 2), ( -img.height / 2 )); //把图片填充到画布中心 context.restore() //还原坐标抽状态 }; //绑定事件 canvas.onmouseover = function(){ clearInterval(timer); timer = null; }; canvas.onclick = function(){ location.href= "http://www.amazon.cn/gp/product/B009DFCZAQ/ref=as_li_qf_sp_asin_tl?ie=UTF8&camp=536&creative=3200&creativeASIN=B009DFCZAQ&linkCode=as2&tag=buyed-23"; }; canvas.onmouseout = function(){ if(timer)return; timer = setInterval(rotate,50); }; document.body.appendChild(canvas);}());</script></body></html>

 

DEMO:

点击这里查看微博中图片放大、缩小、旋转的演示

 参考:

<<HTML5与CSS3权威指南 >> 1、第97页 5.4.1 节坐标变换; 2、第18章 CSS3中的变形处理

 


转载请注明本文地址: 网页中图片旋转的几种实现方式
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: HTML网页特效源代码是一组用于实现网页特效的HTML代码。这些源代码可以包括CSS样式和JavaScript脚本,用于创建各种各样的动画、过渡和交互效果,使网页更具吸引力和互动性。 其,CSS样式用于定义元素的外观和排版效果。通过为元素添加不同的CSS类和属性,可以改变元素的背景颜色、字体样式、边框等,从而实现网页特效要求的各种效果。 JavaScript脚本则用于实现更复杂的交互和动画效果。通过使用JavaScript库和框架,例如jQuery和React等,开发人员可以通过编写代码来控制元素的动态行为和效果。例如,通过操纵元素的位置、大小、透明度和旋转等属性,可以实现元素的平滑滚动、淡入淡出效果以及鼠标悬停时的交互反应。 根据具体需求,html网页特效源代码可以包括各种各样的特效,例如图片轮播、折叠菜单、模态框、视差滚动和动画效果等。这些特效源代码可以从网络上的开源代码库或开发者社区获取,也可以根据需求自行编写。 总之,HTML网页特效源代码是用于实现网页各种特效的一组HTML、CSS和JavaScript代码。通过运用这些源代码,开发人员可以为网页添加丰富多样的特效效果,提升用户体验。 ### 回答2: HTML网页特效源代码指的是在HTML网页添加一些动态、交互和视觉效果的代码,以提升网页的用户体验和吸引力。下面是一个简单的例子-点击按钮弹出提示框的HTML源代码: ```html <!DOCTYPE html> <html> <head> <title>网页特效示例</title> <style> .button { padding: 10px 20px; background-color: #4CAF50; color: white; border-radius: 4px; cursor: pointer; } </style> <script> function showAlert() { alert("Hello, World!"); } </script> </head> <body> <h1>点击按钮弹出提示框</h1> <button class="button" onclick="showAlert()">点击我</button> </body> </html> ``` 在这个例子,我们首先定义了一个样式类`.button`,用于设置按钮的样式。接着定义了一个JavaScript函数`showAlert()`,当按钮被点击时将调用此函数。最后,在按钮的`onclick`属性绑定了`showAlert()`函数,表示点击按钮时执行该函数。 当用户在浏览器打开这个HTML文件时,会看到一个标题为"点击按钮弹出提示框"的网页。当用户点击按钮时,将弹出一个提示框,其显示的内容是"Hello, World!"。点击提示框上的“确定”按钮,提示框将关闭。 这只是HTML网页特效源代码的一个简单例子,实际上可以实现更多复杂的效果。通过结合HTML、CSS和JavaScript,我们可以为网页添加各种各样的动态效果、过渡效果、悬停效果、轮播效果等,以增强用户对网页的互动和视觉体验。 ### 回答3: HTML网页特效是指通过在网页添加特定的HTML代码或者引入外部的CSS、JavaScript文件,使网页具有一些特殊的效果, 提升用户体验和页面的吸引力。 常见的HTML网页特效包括但不限于以下几种: 1. 图片轮播:通过CSS和JavaScript实现实现图片的自动轮播或者手动切换的效果,使网页更加生动有趣。 2. 鼠标交互效果:通过CSS设置鼠标悬停或点击元素时的特殊效果,例如改变背景颜色、放大缩小、旋转等,增加用户和页面的交互性。 3. 页面滚动效果:通过JavaScript实现页面滚动时的特效,如导航栏随着滚动固定在页面顶部、滚动到指定位置时出现特效等,让页面更加流畅和有层次感。 4. 下拉菜单:通过HTML和CSS实现,当鼠标悬停或点击菜单时,展示隐藏的子菜单选项,提升网页的可用性和导航效果。 5. 表单验证效果:通过JavaScript实现对用户输入内容的验证,例如输入框的输入格式、必填项的验证等,提醒用户输入内容是否合法。 6. 动画效果:通过CSS3实现各种动画效果,如旋转、淡入淡出、弹跳等,使页面更加生动有趣。 7. 响应式布局:通过CSS媒体查询和弹性布局实现自适应不同屏幕大小的特效,保证在不同设备上都能呈现良好的页面效果。 以上只是一小部分HTML网页特效,实际上还有很多种类和方式。在实现这些特效时,开发者可以借助已有的开源代码、框架或者自己编写CSS和JavaScript代码。请注意,在使用特效时要保证页面的加载速度和兼容性,避免特效影响用户体验或者在部分设备和浏览器上无法正常显示。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值