`
ck_2036
  • 浏览: 78273 次
  • 性别: Icon_minigender_1
  • 来自: 常州
社区版块
存档分类
最新评论

现代浏览器中CSS3的transform:rotate在IE中的实现

阅读更多
项目需要用脚本跨浏览器的实现把一个DOM结点做任意角度的旋转
在现代浏览器中通过css3的transform属性可以轻松实现
但是在IE中却必须使用传说中大神级的Matrix Filter,
复杂的变换矩阵计算不说,而且通过线性变换实现的旋转只能是绕原点!
为了能让Matrix Filter也能像现代浏览器一样绕元素中心旋转,做了以下的计算:
// UA.core为浏览器核心,取值为trident,webkit,gecko,presto或undefined
// UA.ie为ie浏览器版本号,取值5,6,7,8,9...
// 如何判断浏览器本文不再描述,可以参考https://github.com/kissyteam/kissy/blob/master/src/ua/base.js
// 或者也可采用其他特征来区分浏览器
var rotate = (function() {
	switch (UA.core) {
	case 'trident' :
		return UA.ie < 9 ? return function(dom, angle) {
			var rad = angle * (Math.PI / 180),
			filter = dom.filters.item('DXImageTransform.Microsoft.Matrix');
			filter.Dx = (1 - Math.cos(Math.PI / 4 + rad) / Math.cos(Math.PI / 4)) * 0.5 * (dom.offsetWidth - 1);
			filter.Dy = (1 - Math.sin(Math.PI / 4 + rad) / Math.cos(Math.PI / 4)) * 0.5 * (dom.offsetHeight - 1);
			filter.M11 = Math.cos(rad);
			filter.M12 = -1 * Math.sin(rad);
			filter.M21 = Math.sin(rad);
			filter.M22 = filter.M11;
			filter.Enabled = true;
		} : return function(dom, angle) {
			dom.style.msTransform = 'rotate(' + angle + 'deg)';
		};
	case 'webkit' :
		return function(dom, angle) {
			dom.style.webkitTransform = 'rotate(' + angle + 'deg)';
		};
	case 'gecko' :
		return function(dom, angle) {
			dom.style.MozTransform = 'rotate(' + angle + 'deg)';
		};
	case 'presto' :
		return function(dom, angle) {
			dom.style.OTransform = 'rotate(' + angle + 'deg)';
		};
	default:
		return function(dom, angle) {
			dom.style.transform = 'rotate(' + angle + 'deg)';
		};
	}
})();

// 使用方法:
/**
 * 跨浏览器绕中心旋转
 * @param dom HTMLElement
 * @param angle 旋转的角度(顺时针方向)
 */
rotate(dom, angle);


更详细的说明请联系 ck0123456@gmail.com
分享到:
评论

相关推荐

    CSS3中transform属性的详解.docx

    在CSS3中,`transform`属性是一个强大的工具,它允许开发者对网页元素进行二维或三维的变形操作,如旋转、平移、缩放和倾斜等。这个属性极大地扩展了Web设计的视觉表现力,同时也提高了用户体验。以下是对`transform...

    HTML5+CSS3实例 :3D立方体旋转

    在本实例中,CSS3的transform属性被用于实现3D立方体的旋转效果,通过设置rotateX、rotateY和rotateZ来控制立方体的各个轴向转动。 实现3D立方体旋转需要用到的关键CSS3属性有: 1. `perspective`:定义观察者与3D...

    javascript 旋转时钟 使用rotate属性 transform 兼容版本

    总的来说,通过JavaScript和CSS3的`rotate`与`transform`,我们可以创建一个既美观又实用的旋转时钟,并通过适当的兼容性处理确保在大部分浏览器上正常运行。这个过程不仅涉及技术细节,还涉及到用户体验和性能优化...

    CSS3 transform图片飞入动画特效

    在现代网页设计中,CSS3已经成为了一种强大的工具,提供了许多新颖且丰富的功能,其中之一就是transform属性。"CSS3 transform图片飞入动画特效"是一种利用transform属性实现的动态视觉效果,它能让网页元素(比如...

    兼容所有浏览器的样式写法

    以上代码仅在IE浏览器中加载`ie.css`文件,该文件通常包含针对IE的特定样式调整。 - **IE通用样式**: ```html &lt;!--[if IE]&gt; /* 针对IE的通用样式 */ &lt;![endif]--&gt; ``` - **特定IE版本样式**: ```...

    CSS3实现的为图片添加旋转背景特效源码

    在现代网页设计中,CSS3已经成为了不可或缺的一部分,它提供了许多强大的功能,让网页的样式和交互更加丰富和动态。本篇文章将详细讲解如何利用CSS3实现为图片添加旋转背景特效,以及涉及到的相关知识点。 首先,...

    纯css3绘制带摇晃与旋转效果的树动画特效源码.zip

    此外,CSS3还提供了许多其他特性,如过渡(transition)、变换(transform)和选择器(selectors)等,这些都可能在实现这个树动画特效中发挥作用。过渡可以用于单个状态改变时的平滑过渡,而变换不仅可以用于旋转和...

    css3中新增的样式使用示例附效果图

    在PC版开发中由于IE原因,我们很少用到css3,但随着平板和智能手机进入我们的生活,以及现在越来越流行,在手机版和平板版开发中我们就可以大胆的使用了,下面我们探讨常用几个css3属性: 1.css3前缀使用介绍,我们...

    15种CSS3图片Hover悬停效果代码,超级实用,兼容IE9+、chrome、firefox浏览器.rar

    在本文中,我们将深入探讨如何使用CSS3来创建15种不同的图片悬停效果,这些效果不仅实用,而且兼容主流的现代浏览器,如IE9、Chrome和Firefox。这些技巧可以帮助开发者提升网站的交互性和用户体验。 首先,让我们...

    第24章 CSS3变形效果[上].pdf

    通过使用CSS3中的变换(Transform)功能,可以实现复杂的动画效果和动态交互,从而提升用户体验。 在介绍具体的CSS3变形效果之前,需要先了解两个核心属性:`transform`和`transform-origin`。 ### transform属性 ...

    基于CSS3实现的transform属性相册图片墙源码

    在现代网页设计中,CSS3的引入极大地丰富了网页的视觉表现力,其中`transform`属性是关键的一部分。本源码利用CSS3的`transform`属性实现了照片墙的动态缩放效果,为用户带来了一种新颖且吸引人的浏览体验。不过需要...

    IE8兼容scale的第三方js

    总的来说,这个组合为开发者提供了一套工具,能够在不支持CSS3的IE8浏览器中模拟出`transform: scale()`的效果,从而实现跨浏览器的兼容性。在实际项目中,这样的解决方案有助于确保用户无论使用哪种浏览器都能获得...

    jquery实现图片旋转(js实现)

    然而,IE9及以下版本不支持CSS3的`transform`,所以我们需要借助于jQuery的插件或额外的JavaScript代码来实现对这些旧版本浏览器的支持。 1. **jQuery Rotate插件**:jQuery Rotate是一个专门用于旋转元素的插件,...

    HTML5&CSS3网页制作:认识transform.pptx

    在HTML5和CSS3的网页制作中,`transform`属性是一个至关重要的工具,它极大地丰富了网页动态效果的实现方式。在没有CSS3之前,要创建复杂的变形效果,通常需要依赖于图片、Flash动画或者JavaScript脚本。然而,随着...

    jquery.css-transform:用于变换操作和动画支持的轻量级 jQuery 插件

    它对于在支持 CSS 转换但不支持 CSS 转换(例如 IE9)的浏览器上为 CSS 转换属性设置动画特别有用。 它可以处理任何单值 2D/3D CSS 转换函数(IE9 不支持 3D 转换),即: 2D 变换: translateX 、 translateY 、 ...

    css3实现六边形边框的实例代码

    在CSS3中,实现六边形边框的技巧主要依赖于层叠的多个矩形以及利用`transform`属性进行旋转。下面将详细解释这个过程。 首先,我们需要创建三个嵌套的`div`元素,分别命名为`boxF`、`boxS`和`boxT`。这些`div`元素...

    jQuery跨浏览器控制图标旋转代码.zip

    在支持CSS3的现代浏览器中,这种方法性能优秀,动画流畅。例如: ```css .icon { transition: transform 0.5s; } .icon旋转 { transform: rotate(45deg); } ``` 然而,考虑到浏览器兼容性问题,不是所有用户都...

    CSS3实现阴影角度可变的文字特效

    虽然大部分现代浏览器都支持这些CSS3特性,但老版本的IE浏览器可能不支持。这时,可以使用条件注释或者Modernizr等库来处理兼容性问题,确保在所有目标浏览器中都能正常显示。 在压缩包文件`texiao2042_1560681149`...

    纯CSS3实现的翻页效果源码

    【纯CSS3实现的翻页效果源码】是一种利用现代浏览器对CSS3特性的支持,创建出动态且交互性强的页面翻页效果的技术。CSS3是层叠样式表的第三个版本,它引入了许多新的选择器、动画和转换功能,使得网页设计更为灵活和...

    css3立体旋转菜单.zip

    尽管大多数现代浏览器都支持CSS3的3D变换,但旧版本的IE浏览器可能不支持。此时,可以使用JavaScript库如Modernizr来检测浏览器特性,并为不支持CSS3的浏览器提供备选方案。 最后,`说明.htm`文件通常会包含关于这...

Global site tag (gtag.js) - Google Analytics