项目需要用脚本跨浏览器的实现把一个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`属性是一个强大的工具,它允许开发者对网页元素进行二维或三维的变形操作,如旋转、平移、缩放和倾斜等。这个属性极大地扩展了Web设计的视觉表现力,同时也提高了用户体验。以下是对`transform...
在本实例中,CSS3的transform属性被用于实现3D立方体的旋转效果,通过设置rotateX、rotateY和rotateZ来控制立方体的各个轴向转动。 实现3D立方体旋转需要用到的关键CSS3属性有: 1. `perspective`:定义观察者与3D...
总的来说,通过JavaScript和CSS3的`rotate`与`transform`,我们可以创建一个既美观又实用的旋转时钟,并通过适当的兼容性处理确保在大部分浏览器上正常运行。这个过程不仅涉及技术细节,还涉及到用户体验和性能优化...
在现代网页设计中,CSS3已经成为了一种强大的工具,提供了许多新颖且丰富的功能,其中之一就是transform属性。"CSS3 transform图片飞入动画特效"是一种利用transform属性实现的动态视觉效果,它能让网页元素(比如...
以上代码仅在IE浏览器中加载`ie.css`文件,该文件通常包含针对IE的特定样式调整。 - **IE通用样式**: ```html <!--[if IE]> /* 针对IE的通用样式 */ <![endif]--> ``` - **特定IE版本样式**: ```...
在现代网页设计中,CSS3已经成为了不可或缺的一部分,它提供了许多强大的功能,让网页的样式和交互更加丰富和动态。本篇文章将详细讲解如何利用CSS3实现为图片添加旋转背景特效,以及涉及到的相关知识点。 首先,...
此外,CSS3还提供了许多其他特性,如过渡(transition)、变换(transform)和选择器(selectors)等,这些都可能在实现这个树动画特效中发挥作用。过渡可以用于单个状态改变时的平滑过渡,而变换不仅可以用于旋转和...
在PC版开发中由于IE原因,我们很少用到css3,但随着平板和智能手机进入我们的生活,以及现在越来越流行,在手机版和平板版开发中我们就可以大胆的使用了,下面我们探讨常用几个css3属性: 1.css3前缀使用介绍,我们...
在本文中,我们将深入探讨如何使用CSS3来创建15种不同的图片悬停效果,这些效果不仅实用,而且兼容主流的现代浏览器,如IE9、Chrome和Firefox。这些技巧可以帮助开发者提升网站的交互性和用户体验。 首先,让我们...
通过使用CSS3中的变换(Transform)功能,可以实现复杂的动画效果和动态交互,从而提升用户体验。 在介绍具体的CSS3变形效果之前,需要先了解两个核心属性:`transform`和`transform-origin`。 ### transform属性 ...
在现代网页设计中,CSS3的引入极大地丰富了网页的视觉表现力,其中`transform`属性是关键的一部分。本源码利用CSS3的`transform`属性实现了照片墙的动态缩放效果,为用户带来了一种新颖且吸引人的浏览体验。不过需要...
总的来说,这个组合为开发者提供了一套工具,能够在不支持CSS3的IE8浏览器中模拟出`transform: scale()`的效果,从而实现跨浏览器的兼容性。在实际项目中,这样的解决方案有助于确保用户无论使用哪种浏览器都能获得...
然而,IE9及以下版本不支持CSS3的`transform`,所以我们需要借助于jQuery的插件或额外的JavaScript代码来实现对这些旧版本浏览器的支持。 1. **jQuery Rotate插件**:jQuery Rotate是一个专门用于旋转元素的插件,...
在HTML5和CSS3的网页制作中,`transform`属性是一个至关重要的工具,它极大地丰富了网页动态效果的实现方式。在没有CSS3之前,要创建复杂的变形效果,通常需要依赖于图片、Flash动画或者JavaScript脚本。然而,随着...
它对于在支持 CSS 转换但不支持 CSS 转换(例如 IE9)的浏览器上为 CSS 转换属性设置动画特别有用。 它可以处理任何单值 2D/3D CSS 转换函数(IE9 不支持 3D 转换),即: 2D 变换: translateX 、 translateY 、 ...
在CSS3中,实现六边形边框的技巧主要依赖于层叠的多个矩形以及利用`transform`属性进行旋转。下面将详细解释这个过程。 首先,我们需要创建三个嵌套的`div`元素,分别命名为`boxF`、`boxS`和`boxT`。这些`div`元素...
在支持CSS3的现代浏览器中,这种方法性能优秀,动画流畅。例如: ```css .icon { transition: transform 0.5s; } .icon旋转 { transform: rotate(45deg); } ``` 然而,考虑到浏览器兼容性问题,不是所有用户都...
虽然大部分现代浏览器都支持这些CSS3特性,但老版本的IE浏览器可能不支持。这时,可以使用条件注释或者Modernizr等库来处理兼容性问题,确保在所有目标浏览器中都能正常显示。 在压缩包文件`texiao2042_1560681149`...
【纯CSS3实现的翻页效果源码】是一种利用现代浏览器对CSS3特性的支持,创建出动态且交互性强的页面翻页效果的技术。CSS3是层叠样式表的第三个版本,它引入了许多新的选择器、动画和转换功能,使得网页设计更为灵活和...
尽管大多数现代浏览器都支持CSS3的3D变换,但旧版本的IE浏览器可能不支持。此时,可以使用JavaScript库如Modernizr来检测浏览器特性,并为不支持CSS3的浏览器提供备选方案。 最后,`说明.htm`文件通常会包含关于这...