前言css
前段时间在作一个专题的时候用到了opacity不透明度属性,由于设计图上是半透明背景,白色文字html
因此在IE用到了其支持的filter属性,据说这个属性还有不一样的效果,不仅仅就只有不透明度而已,因此抽个时间赶忙来充下电。css3
有时候咱们很习惯的用到不透明属性opacity来增长层次感或者增长用户体验,但因这个属性是css3属性,因此对于低级浏览器的兼容性来讲就达不到咱们预期的效果。通常而言,咱们都尽量少用一些浏览私有属性-webkit,-moz,-ms,-o,这也仅仅解决了市面上不少浏览器的问题,面对IE,特别是IE9-版本的,也是显得有气无力。所以假如要使得市面上的浏览器达到统一的近相似效果,那么是很是有必要写上IE私有属性,触发IE hasLayout 特性,好比这样:web
.opacity{ opacity:0.5; filter:progid:DXImageTransform.Microsoft.Alpha(opacity=50); /*IE6~IE8*/ }浏览器
OK,这样的代码能够基本兼容目前市面上的浏览器。今天咱们的重点是后面这个 filter 属性函数
filter历史测试
其实这个filter是CSS1的属性了,可是由于老版本的IE4.0~IE9对此支持不怎么感冒,对浏览器的支持也不稳定,所以这个属性只能当作实验性技术来观察。但,对于想要探究IE的filter是怎样模拟像css3工做原理的同行不妨能够充充电。动画
此属性我我的概况为css PS化,为何,由于它的不少属性或多或少是从PS衍伸进来的,如图spa
就连咱们用css3来写一个华丽丽的转场动画时,咱们也能够考虑让咱们的ie一样具备此功能,那么ie中的filter就体现出来了。。翻译
1、filter界面滤镜
在ie中 filter 分为静态滤镜(Visual Filters)和过渡转场(Transitions Reference),前者是的效果能够设置元素的不透明度、渐变、模糊、对比度、明度等这些,后者注重的ie的动画效果。
对于在使用ie filter属性时,必要的前缀是须要的,对此ie在filter规范以下:
.test {
filter:progid:DXImageTransform.Microsoft. /*.后面都是紧跟着各类滤镜和转场函数*/
}
/*如:模糊滤镜*/
.blur {
filter:progid:DXImageTransform.Microsoft.Blur() /*.函数的开头第一个字母必须大写,括号()里面的滤镜的各类值*/
}
对于为何要在开头写上progid:DXImageTransform.Microsoft 不是很清楚,估计是为了区分吧。有哪位知道麻烦贴个地址说一下哈。
1.AlphaImageLoader,这个属性是主要是针对png透明图片进行不透明度的处理,为何要这么说呢,由于IE6的png透明图片实际上是不透明的,显示会灰色背景。
语法:
filter:progid:DXImageTransform.Microsoft.AlphaImageLoader()
/*完整写法*/
filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled='true' , sizingMethod='' , src='mini.jpg')
其值包括2个可选值,一个必选值。
属性 |
特性 |
描述 |
enabled |
Enabled |
可选值,Boolean布尔值,默认值为ture,启用过滤器;false为不启用过滤器。全部的filter都有该属性值,下面不一一多说。 |
sizingMethod |
sizingMethod |
可选值,设置或检索的方式来显示一个图像在对象边界显示方式。有三个值:crop裁剪图像以适应对象的尺寸;image,默认值,扩大或减小对象的边界,以适应图像的尺寸;scale,伸展或收缩图像填充对象的边界; |
src |
src |
必须值,引入图片。 |
不妨用你的手中的IE6~8来预览一下官方demo→AlphaImageLoader
2.Gradient,渐变滤镜。
语法:
filter:progid:DXImageTransform.Microsoft.Gradient()
/*完整写法*/ filter:progid:DXImageTransform.Microsoft.Gradient(enabled='ture',GradientType='1',StartColorStr='#00000000',EndColorStr='#FFFF3300')
属性 |
特性 |
描述 |
enabled |
Enabled |
可选值,Boolean布尔值,默认值为ture,启用过滤器;false为不启用过滤器。 |
StartColorStr |
StartColor |
设置或者检索开始不透明度的梯度值,整数型Integer,指定一个整数型值,值的变化从0 (transparent[透明]) to 4294967295 ([白色不透明]). |
StartColorStr |
设置或者检索开始的颜色值,string类型字符串,值从#FF000000 到 #FFFFFFFF,默认值为:#FF000000,好比一个值为:#AARRGGBB ,那么AA表明透明度alpha,RR表示红色16进制值,GG表示绿色16进制值,BB表示黑色16进制值。 |
|
EndColor |
设置或者检索结束不透明度的梯度值,同上,不多用。 |
|
EndColorStr |
设置或者检索结束的颜色值,同上 |
|
GradientType |
设置渐变的方向。有两个值,1表明水平方向,0表明垂直方向渐变。 |
不妨用你的手中的IE6~8来预览一下官方demo→Gradient Filter
稍有留意咱们看了下面的style属性的时候其实就会发现,StartColorStr中的值跟咱们日常的用到的#ffffff是不同的,如图
2、filter静态滤镜
1.Alpha,调整对象内容的不透明度。
语法:
filter:progid:DXImageTransform.Microsoft.Alpha()
/*完整写法*/ filter:progid:DXImageTransform.Microsoft.Alpha(enabled='ture',GradientType='1',StartColorStr='#00000000',EndColorStr='#FFFF3300')
不妨用你的手中的IE6~8来预览一下官方demo→Alpha Filter
2.BasicImage,调整对象的内容的颜色处理、图像旋转或不透明度。
语法:
filter:progid:DXImageTransform.Microsoft.BasicImage()
/*完整写法*/
filter:progid:DXImageTransform.Microsoft.BasicImage(Grayscale='x', Xray='x', Mirror='x', Invert='x', Opcity='x', Rotation='x')
不妨用你的手中的IE6~8来预览一下官方demo→BasicImage Filter
3.Blur,设置对象的模糊值。
语法:
filter:progid:DXImageTransform.Microsoft.Blur()
/*完整写法*/
filter:progid:DXImageTransform.Microsoft.Blur(PixelRadius='x', MakeShadow='x', ShadowOpacity='x')
不妨用你的手中的IE6~8来预览一下官方demo→Blur Filter
**4.Chroma **,设置对象的色彩透明度
语法:
filter:progid:DXImageTransform.Microsoft.Chroma()
/*完整写法*/
filter:progid:DXImageTransform.Microsoft.Chroma(Color='x')
Color,设置颜色值。
不妨用你的手中的IE6~8来预览一下官方demo→Chroma Filter
**5.Compositor **,设置新对象内容的合成颜色,这个翻译有点拗口,大概的意思就是:2个对象,要显示哪一个或者隐藏哪一个,或者显示他们对比以后的新对象。
语法:
filter:progid:DXImageTransform.Microsoft.Compositor()
/*完整写法*/
filter:progid:DXImageTransform.Microsoft.Compositor(function='')
其中function值有18个值,不少不少。也不一一说了,有兴趣的的前往这里看demo→Compositor Filter
**6.DropShadow **,设置对象的投影效果。
语法:
filter:progid:DXImageTransform.Microsoft.DropShadow()
/*完整写法*/
filter:progid:DXImageTransform.Microsoft.DropShadow(OffX='x', OffY='x', Color='x', Positive='x')
以前有写过一篇关于css3的shadow文章,有时间的也能够点点。。。
不妨用你的手中的IE6~8来预览一下官方demo→Blur Filter
**7.Emboss **,设置对象的浮雕效果。
语法:
filter:progid:DXImageTransform.Microsoft.Emboss()
/*完整写法*/
filter:progid:DXImageTransform.Microsoft.Emboss(Bias='')
通常来讲Bias属性不须要设置,能够忽略,官方demo→Emboss Filter
**8.Engrave **,设置对象的雕刻效果。
语法:
filter:progid:DXImageTransform.Microsoft.Engrave()
/*完整写法*/
filter:progid:DXImageTransform.Microsoft.Engrave(Bias='')
通常来讲Bias属性不须要设置,能够忽略,官方demo→Engrave Filter
**9.Glow **,设置对象的光晕效果。
语法:
filter:progid:DXImageTransform.Microsoft.Glow()
/*完整写法*/
filter:progid:DXImageTransform.Microsoft.Glow(color='', Strength='')
官方demo→Glow Filter
**10.Light **,设置对象的亮度
语法:
filter:progid:DXImageTransform.Microsoft.Light()
官方demo→Light Filter
**11.ICMFilter **,设置对象颜色内容改变,使其显示像打印设备的颜色。
官方无demo,IE9时,这个滤镜仅仅应用于屏幕内容显示效果上,当内容是打印时,将不该用。
**12.MaskFilter **,设置对象内容透明或者非透明颜色。
语法:
filter:progid:DXImageTransform.Microsoft.MaskFilter()
/*完整写法*/
filter:progid:DXImageTransform.Microsoft.MaskFilter(Color='')
13.Matrix,调整大小、旋转或翻转使用矩阵的内容对象转换。
语法:
filter:progid:DXImageTransform.Microsoft.Matrix()
能够设置各类角度的旋转,官方demo→Matrix Filter
14.MotionBlur,设置对象模糊,测试完demo以后感受有点像线性模糊,就是月光投射下来不均匀的模糊效果。
语法:
filter:progid:DXImageTransform.Microsoft.MotionBlur()
/*完整写法*/
filter:progid:DXImageTransform.Microsoft.MotionBlur(Direction='',Strength='',Add='')
官方demo→MotionBlur Filter
15.Wave,设置对象为波浪纹滤镜效果
语法:
filter:progid:DXImageTransform.Microsoft.Wave()
/*完整写法*/
filter:progid:DXImageTransform.Microsoft.Wave(Add='', LightStrength='', Phase='', Strength='', Freq='')
官方demo→Wave Filter
16.Shadow,设置对象阴影效果。
语法:
filter:progid:DXImageTransform.Microsoft.Shadow()
/*完整写法*/
filter:progid:DXImageTransform.Microsoft.Shadow(color='', Direction='', Strength='')
官方demo→ Filter
官方参考资料:
http://msdn.microsoft.com/en-us/library/ms532853(v=vs.85).aspx