CSS3中zoom或Matrix矩阵滤镜中心点变换如何兼容IE

兼容性地矩阵变换效果

IE9+支持CSS3 transform变换,IE9需要-ms-私有前缀,但是IE6-IE8怎么办呢?

在“IE矩阵滤镜Matrix旋转与缩放及结合transform的拓展”一文中曾提到一个CSS3 transform转换成IE矩阵滤镜工具:IE’s CSS3 Transforms Translator,于是我们可以在web上实现各种兼容性的transform变换效果。

然而,IE的Matrix矩阵变换,或者zoom缩放会改变元素原本占据的展示尺寸,位置等,与CSS3优雅的transform完全不一样,导致,我们需要对IE做额外的偏移。上面提到的工具就自动计算出了应有的margin偏移大小

但是,我们大多数人的数学都是体育老师交的,计算偏移值什么的,想想就大头娘娘了,难道,就不能跟CSS3 transform一样,就规规矩矩居中放大吗?

童鞋,略施小计,还是有办法滴。

基于中心点的IE zoom缩放或矩阵变换

原理如下
内嵌一个巨大的海洋般宽广的大容器,然后,让里面的元素在这个海洋般宽广的容器中水平且垂直定位即可。

代码示意

 代码如下 复制代码
.outer {
    /* 外部可视区域容器 */
    width: 100px; height: 100px;
    position: relative;
    overflow: hidden;
}
.container {
    /* 里面宽广的海洋 */
    width: 1000px; height: 1000px;
    position: absolute; left: 50%; top: 50%;
    margin: -500px 0 0 -500px;
}

实例-元素hover放大效果
要实现效果如下:

 

demo页面有上下两个示意,上面一个为普通的定位实现,下面为使用“广阔海洋”技术的实现,在IE9以上浏览器下,由于是使用纯正的CSS3 transform实现,因此,是看不出差异的。

但是,在IE8之流浏览器下,你会看到前后差异了,例如,传统定位实现,hover图片放大,则不是中心点放大,而是左上角,不是我们想要的效果:

但是,下面这张图片,hover时候图片就是以中心点放大,是我们想要的效果,棒棒哒!



实现的关键

实现的关键是海洋内部需要变换元素的水平垂直居中效果,要兼容IE7,我所知道的办法就是inline-block化,水平居中让容器text-align, 垂直居中实现是再造一个高度100%, vertical-align: middle的隐形元素。

时间: 2024-09-24 19:29:36

CSS3中zoom或Matrix矩阵滤镜中心点变换如何兼容IE的相关文章

理解CSS3 transform中的Matrix(矩阵)

一.哥,我被你吓住了 打架的时候会被块头大的吓住,学习的时候会被奇怪名字吓住(如"拉普拉斯不等式").这与情感化设计本质一致:界面设计好会让人觉得这个软件好用! 所以,当看到上面"Matrix(矩阵)"的时候,难免会心生畏惧(即使你已经学过),正常心理.实际上,这玩意确实有点复杂. 然而,这却是屌丝逆袭的一个好机会. CSS同行间:你是不是有这样的感觉:哎呀呀,每天就是对着设计图切页面,貌似技术没有得到实质性地提升啊,或者觉得日后高度有限! 我们应该都知道二八法则(

CSS3中2D tansform各函数的使用技巧

文章简介:CSS3 2D变换让Web设计师有了更多的自由来装饰和变形HTML组件.同时让设计师有更多的功能装饰文本和更多动画选项来装饰Div元素.在CSS3 2D变形中主要包含的一些基本功能如下. 在一个二维或三维空间,元素可以被扭曲.移位或旋转.只不过2D变形工作在X轴和Y轴,也就是大家常说的水平轴和垂直轴:而3D变形工作在X轴和Y轴之外,还有一个Z轴.这些3D变换不仅可以定义元素的长度和宽度,还有深度.我们将首先讨论元素在2D平面如何变换,然后我们在进入3D变换的讨论. CSS3 2D变换让

css3中变形与动画(一)

css3制作动画的几个属性:变形(transform),过渡(transition)和动画(animation). 首先介绍transform变形. transform英文意思:改变,变形. css3中transform注意包括以下几种:旋转(rotate),扭曲(skew),缩放(scale).移动(translate)和矩阵变形matrix. 语法: transform : none | <transform-function> [ <transform-function> ]

css3中opacity属性学习与实践

css3中opacity属性是如何使用的呢:<length> inherit length:由浮点数字和单位标识符组成的长度值0到1.不可为负值.默认值为:1 . 此标签的作用是声明一个元素的透明度,opacity取值为1的元素是完全不透明的,反之,取值为0是完全透明的,看不见的.1到0之间的任何值都表示该元素的透明程度. 兼容:Firefox 3.0.10 .Chrome 2.0.x.Opera 9.64..Safari 4.Firefox 3.5 目前较老的Firefox版本,我们需要使用

实现CSS3中的border-radius(边框圆角)示例代码

详细介绍下如何实现CSS3中的border-radius(圆角),具体代码如下,感兴趣的朋友可以参考下哈,希望对大家有所帮助   实现边框圆角 -moz-border-radius: 32px; -webkit-border-radius: 32px; border-radius: 32px; behavior: url(border-radius.htc);   复制代码 代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict/

[转]ColorMatrixFilter--颜色矩阵滤镜

转自: http://blog.sina.com.cn/s/blog_49b35d540100aks4.html       ColorMatrixFilter--颜色矩阵滤镜(flash.filters.ColorMatrixFilter) 在颗粒等级上提供给你更好的控制方法.ColorMatrixFilter为 4行5列的多维矩阵(20个元素的数组).图1是与ColorMatrixFilter等同的矩阵: 图1. 与ColorMatrixFilter等同的矩阵     红,绿,蓝通道的值由如

[Android] 使用Matrix矩阵类对图像进行缩放、旋转、对比度、亮度处理

    前一篇文章讲述了Android拍照.截图.保存并显示在ImageView控件中,该篇文章继续讲述Android图像处理技术,主要操作包括:通过打开相册里的图片,使用Matrix对图像进行缩放.旋转.移动.对比度.亮度.饱和度操作,希望对大家有所帮助. 一. 显示打开图片     首先,设置activity_main.xml布局如下所示: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android

css3中变形与动画(三)

transform可以实现矩阵变换,transition实现属性的平滑过渡,animation意思是动画,动漫,这个属性才和真正意义的一帧一帧的动画相关.本文就介绍animation属性. animation属性通过一些关键帧中元素属性的改变来实现动画效果.当然也可以控制动画持续时间,动画迭代次数等. 一.例子 在介绍transition时开篇有一个例子就是实现鼠标放上去,div宽度从100px缓慢增大到200px. 用transition实现方法如下 div:hover{ width: 200

解析CSS3中的Box-Sizing属性

在重构移动端页面的时候,我们经常会遇到两个框架并排的情况,并且需要宽度自适应.等宽,有边框这样的情况,我平时的方法就是用定位来处理,然后用负值定位来解决,但是后来发现可以用CSS3中的Box-Sizing属性来搞定.好吧,立马推荐出来给大伙. 语法: box-sizing: content-boxborder-boxinherit; 定义: box-sizing 属性允许您以特定的方式定义匹配某个区域的特定元素. 例如,假如您需要并排放置两个带边框的框,可通过将 box-sizing 设置为 "