• CSS滤镜属性详解


    摘自:http://tech.163.com/05/0329/15/1G18AIVD0009158P.html

    1、CSS滤镜:Mask属性

        Mask属性为对象建立一个覆盖于表面的膜。它的表达式也很简单:

        Filter:Mask(Color=颜色

    只有一个Color参数,用来指定使用什么颜色作为掩膜。

          同样,我们来看一下一幅图片在加上mask属性前后的效果(见下图):

        clip_image001[4]

    Mask属性效果图

        加上MASK属性的效果就好象是在用有色眼镜看物体一样。上面的效果的代码如下:

       1:  <html>
       2:      <head> 
       3:      <title> mask filter </title> 
       4:      <style>//*设置CSS样式开始*// 
       5:      <!-- 
       6:      div{position:absolute;top:20;left:40;
       7:      filter:mask(color:#666699);} 
       8:      //*定义DIV区域的样式,绝对定位,mask属性的color参数值指定用什么颜色遮
       9:      住对象*// 
      10:      p{font-family:bailey;font-size:72pt;
      11:       font-weight:bold;color:#FF9900;} 
      12:      //*定义P区域内的样式,字体名称、大小、粗细、前景色*// 
      13:      --> 
      14:      </style> 
      15:      </head> 
      16:      <body> 
      17:      <div> 
      18:      <p> wenyleaf </p> 
      19:      </div> 
      20:      </body> 
      21:    </html>
      

         其实,您就算在代码中去掉对字体前景色的定义,得到的效果还是一样的。因为有了Mask属性的定义,它遮罩下的字体颜色的设置就已经失去了意义。
    还有一点需要您注意的地方,mask属性对图片文件的支持还是不够,不能达到应该有的效果。

     

    2、CSS滤镜:blur属性 假如您用手在一幅还没干透的油画上迅速划过,画面就会变得模糊。CSS下的blur属性就会达到这种模糊的效果

    先来看一下blur属性的表达式:

    filter:blur(add=add,direction,strength=strength)

    我们看到blur属性有三个参数:add、direction、strength。
    Add参数有两个参数值:true和false。意思是指定图片是否被改变成模糊效果。Direction参数用来设置模糊的方向。模糊效果是按照顺时针方向进行的。其中0度代表垂直向上,每45度一个单位,默认值是向左的270度。角度方向的对应关系见下表:

    Strength参数值只能使用整数来指定,它代表有多少像素的宽度将受到模糊影响。默认值是5像素。
    还是看一个例子吧。

       1:  <html>
       2:    <head>
       3:       <title>blur css</title>
       4:       <script>
       5:          function handlechange(obj)
       6:          {
       7:            with(obj.filters(0))
       8:            {
       9:              if (strength<255)
      10:              {
      11:               strength +=2;
      12:               direction +=45;
      13:              }
      14:            }
      15:          }
      16:       </script>
      17:   </head>
      18:   
      19:   <body>
      20:      <p><img id ="img1" src="jsimg/1.jpg" style="filter:blur(strength=1)"
      21:           onfilterchange="handlechange(this)">
      22:      </p>
      23:   </body>
      24:  </html>

         

          看起来是不是有些像万花筒,在这个例子中加入了一些JavaScript的语句,代码如下:

       1:  <html> 
       2:     <head> 
       3:     <title>blur css</title> 
       4:     <script> 
       5:     function handlechange(obj) 
       6:     //*设置一个循环函数handlechange,对象是obj*// 
       7:     { with(obj.filters(0))//*Obj的filter属性*// 
       8:      { if (strength<255)//*设置循环条件*// 
       9:       { strength +=1;direction +=45;}
      10:      //*每循环一次strength就加1,direction加45度*//         
      11:      } 
      12:     } 
      13:     </script> 
      14:     </head> 
      15:     <body> 
      16:     <p><img id =“img1src=“ss01087.jpgstyle=“filterblur(strength=1)” onfilterchange=“handlechange(this)”> 
      17:     //*导入一幅图片,初始blur属性strength等于1,同时调用onfilterchange函数*// 
      18:     </p> 
      19:      </body> 
      20:    </html> 

    注:在javascript中blur属性是这样定义的:[oBlurfilter=] object.Filters.blur

    这个例子是Blur属性的一个比较复杂的例子,通过blur属性还可以设置页面中的字体。如果把字体的blur属性add参数值定义为1,得出来的字体效果是这样的(如下图):

    clip_image001[6]

    怎么样,是不是有些印象派的意思,这种效果的实现代码如下:

       1:  <html>
       2:     <head> 
       3:     <title>filter blur</title> 
       4:     <style>//*CSS样式定义开始*// 
       5:     <!-- 
       6:     div{width:200; 
       7:     filter:blur(add=true,direction=90,strength=25);} 
       8:     //*设置DIV样式,滤镜blur属性*// 
       9:      --> 
      10:     </style> 
      11:     </head> 
      12:     <body> 
      13:     <div style=“702height: 288> 
      14:     <p style=“font-family:lucida handwirting italic
      15:      font-size:72font-style:boldcolor:rgb(55,72,145);” >
      16:      LEAF</p> 
      17:     //*定义字体名称、大小、样式、前景色*// 
      18:     </div> 
      19:     </body> 
      20:    </html> 

         

          我们看到strength设置为25,如果把其值再改大一些,就会达到非常夸张的效果,同时把Direction参数值为180,显示效果如下图:

    clip_image001[8]

          用blur属性设置字体可以达到很多效果,把direction和strength再做修改,还能达到多种效果,您可以自己修改试一试。

    3、CSS滤镜:Chroma属性 Chroma属性可以设置一个对象中指定的颜色为透明色,它的表达式如下:

          Filter:Chroma(color=color)

    这个属性的表达式是不是很简单,它只有一个参数。只需把您想要指定透明的颜色用Color参数设置出来就可以了。比如下面这幅图:

    clip_image001[10]

          图中显示两种字体,两种颜色,我们现在对“leaves”字体添加chroma属性,使其透明。代码如下:

       1:  <html>
       2:     <head> 
       3:     <title>chroma filter</title> 
       4:     <style> 
       5:     <!-- 
       6:      div{position:absolute;top:70;width:200;
       7:        filter:chroma(color=green)} 
       8:     //*定义DIV范围内绿色为透明色,另外设置DIV的位置*// 
       9:     p{font-family:bailey;font-size:48;font-weight:bold;
      10:     color:green} //*设置P的字体名称、大小、粗细、颜色*// 
      11:     em{font-family:lucida handwriting italic;font-size:48; 
      12:     font-weight:bold;color:rgb(255,51,153)} 
      13:     //*设置EM的字体名称、大小、粗细、颜色*// 
      14:     --> 
      15:     </style> 
      16:     </head> 
      17:     <body> 
      18:     <div> 
      19:     <p>LEAVES <em>LOVE</em></p> 
      20:     </div> 
      21:     </body> 
      22:    </html>

         

          通过上面代码中对chroma的属性设置,使绿色透明。显示效果如下图:

    clip_image001[12]

          我们看到绿色的leaves字体不见了,实际上它是透明了,在IE下点击它所在的区域,它还是会显示出来(见下图):

    clip_image001[1]

          另外,需要注意的是,chroma属性对于图片文件不是很适合。因为很多图片是经过了减色和压缩处理(比如JPG、GIF等格式),所以它们很少有固定的位置可以设置为透明。

    4、CSS滤镜:DropShadow属性

          DropShadow属性是为了添加对象的阴影效果的。它实现的效果看上去就像使原来的对象离开页面,然后在页面上显示出该对象的投影。看一看它的表达式:

          Filter:DropShadow(Color=color,Offx=Offx,Offy=offy,Positive=positive)

    该属性一共有四个参数: Color代表投射阴影的颜色。 Offx和offy分别X方向和Y方向阴影的偏移量。偏移量必须用整数值来设置。如果设置为正整数,代表X轴的右方向和Y轴的向下方向。设置为负整数则相反。
    Positive参数有两个值:True为任何非透明像素建立可见的投影,False为透明的像素部分建立可见的投影。
    同样,我们先来看一个例子(见下图):

    clip_image001[3]

          看,图中的文字就像是从页面上飞出来一样,并且留下了一层淡淡的影子。
    实际上在这里应用的就是CSS的DropShadow属性,我们来看一下它的代码:

       1:  <html>
       2:     <head> 
       3:     <title>dropshadow </title> 
       4:     <style>//*定义CSS样式*// 
       5:     <!-- 
       6:     div {position:absolute;top:20;300;
       7:     filter:dropshadow(color=#FFCCFF,offx=15,offy=10,positive=1);} 
       8:      --> 
       9:     //*定义DIV范围内的样式,绝对定位,投影的颜色为#FFCCFF, 
      10:      投影坐标为向右偏移15个像素,向下偏移10个像素*// 
      11:     </style> 
      12:     </head> 
      13:     <body> 
      14:     <div> 
      15:     <p style=“font-familymatisse itcfont-size64
      16:          font-weightboldcolor:#CC00CC;”> 
      17:     //*定义字体名称、大小、粗细、颜色*// 
      18:     Love Leaf </p> 
      19:     </div> 
      20:     </body> 
      21:     </html>

         

          和chroma属性一样,Dropshadow属性对图象的支持不好,我指的是JPEG、GIF格式的图象文件。
    不能支持的原因与Chroma一样,因为这种图象的颜色很丰富,很难找到一个投射阴影的位置。

    5、CSS滤镜:FlipH、FlipV属性

          Flip是CSS滤镜的翻转属性,FlipH代表水平翻转,FlipV代表垂直翻转。它们的表达式很简单,分别是:

          Filter:FlipH

          Filter:FlipV

    我们先来看一幅图:

    clip_image001[5]

          下面我们分别对它实现水平翻转和垂直翻转,并且在图片上方的一段文字,也发生翻转。代码如下:

       1:  <html> 
       2:     <head> 
       3:     <title>flip css</title> 
       4:     <style>//*设置CSS样式开始*// 
       5:     <!-- 
       6:     div{position:absolute;top:20;width:300;
       7:       filter:fliph(flipv);} 
       8:     //*定义DIV范围内的样式,绝对定位,翻转为水平翻转或垂直翻转。 
       9:      注意:在这里fliph和flipv只取其中的一个*// 
      10:     img{position:absolute;top:70;left:40;
      11:       filter:fliph(flipv);} 
      12:     //*定义图片的样式,绝对定位,翻转属性和DIV一样。*// 
      13:      --> 
      14:     </style> 
      15:     </head> 
      16:     <body> 
      17:     <div> 
      18:     <p style=“font-familybaileyfont-size36pt
      19:           font-weightboldcolorrgb(10,128,156);”> 
      20:      Leaf Village </p>
      21:     //*定义字体名称、大小、粗细、颜色*// 
      22:     </div> 
      23:     <p><img src=“ss05058.jpg></p> 
      24:     //*导入一张图片*// 
      25:     </body> 
      26:    </html>

         

          代码产生的两个效果分别如下图:

    clip_image001[7]                                  clip_image001[9]

    水平翻转                                           垂直翻转

    6、CSS滤镜:Glow属性

          当对一个对象使用“Glow”属性后,这个对象的边缘就会产生类似发光的效果。它的表达式如下:

          Filter:Glow(Color=color,Strength=strength)

          Glow属性的参数只有两个:Color是指定发光的颜色,Strength指定发光的强度,参数值从1到255。 让我们先来看一下加上Glow属性的效果图:

    clip_image001[11]

          怎么样,是不是有一种燃烧的火焰的感觉。实现这种效果的代码如下:

       1:  <html>
       2:      <head> 
       3:      <title>filter glow</title> 
       4:      <style>//*开始设置CSS样式*// 
       5:      <!-- 
       6:      .leaf{position:absolute; top:20; width:400;
       7:         filter:glow(color=#FF3399,strength=15);} 
       8:      //*设置类leaf,绝对定位,Glow滤镜属性,发光颜色值为#FF3399,强度为
       9:      15*// 
      10:      .weny{position:absolute; top:70; left:50; width:300;
      11:         filter:glow(color=#9966CC,strength=10);} 
      12:      //*设置类weny,绝对定位,glow滤镜属性,发光颜色值为#9966CC,强度为
      13:      15*// 
      14:      --> 
      15:      </style> 
      16:      </head> 
      17:      <body> 
      18:      <div class=“leaf>//*leaf类样式*// 
      19:      <p style=“font-familylucida handwriting
      20:           font-size54ptfont-weightboldcolor:#003366;”>
      21:      Leaf Mylove</p>//*设置字体名称、大小、粗细、颜色*// 
      22:      </div> 
      23:      <div class=“weny>//*weny类样式*// 
      24:      <p style=“font-familybaileyfont-size48pt
      25:           font-weightboldcolor:#99CC66;”> 
      26:      //设置字体名称、大小、粗细、颜色*// 
      27:      Weny Good!</p> 
      28:      </div> 
      29:      </body> 
      30:    </html>

         

          你还可以随意修改颜色值,看看其他的发光效果是怎样的。

    7、CSS滤镜:Gray属性

          Gray属性把一张图片变成灰度图。它的表达式很简单:

          Filter:Gray

    其实这个属性没什么好讲的,只需在您定义的IMG样式中加入一句代码:

    {Filter:Gray}就一切OK了。
    下面两幅图分别代表未加Gray属性和添加了Gray属性的效果:

    clip_image001[13]                         clip_image001[15]

    原图                                        效果图

    8、CSS滤镜:Shadow属性

          Shadow属性可以在指定的方向建立物体的投影。它的表达式是这样的:

    Filter:Shadow(Color=color,Direction=direction)

    在这里,Shadow有两个参数值:Color参数用来指定投影的颜色;Direction参数用来指定投影的方向。
    这里说的方向与我们在第二节Blur属性中提到的“方向与角度的关系”是一样的。 也许您会问,前面讲到的Dropshadow属性和Shadow属性有什么不同吗?
    光说的话,您恐怕还难以理解,让我们看一看分别利用这两个属性做出来的效果有什么不同(见下图):

    clip_image001[21]  clip_image001[23]

    Shadow效果                    Dropshadow效果

          这样一对比,就可以很明显的看出两者的不同。
          Shadow属性可以在任意角度进行投射阴影,Dropshadow属性实际上是用偏移来定义阴影的。所以,看上去左图的文字和阴影就像是一体的,而右图的文字就像脱离了阴影一样。
    本例的代码如下:

       1:  <html>
       2:     <head> 
       3:     <title> shadow</title> 
       4:     <style>//*开始设置CSS样式*// 
       5:     <!-- 
       6:     .shadow{position:absolute;top:20;300;
       7:         filter:shadow(color=#cc66ff,direction=225);} 
       8:     //*定义Shadow类的样式,绝对定位,Shadow属性,阴影颜色、投影方向*//
       9:      .dropshadow{position:absolute;top:180;300;
      10:      filter:dropshadow(color=#cc66ff,offx=10,offy=10,positive=1);} 
      11:     //*设置Dropshadow类的样式,样式与Shadow类相似, 不同的是滤镜用了
      12:     Dropshadow属性,设置X轴和Y轴的偏移量*// 
      13:     --> 
      14:     </style> 
      15:     </head> 
      16:     <body> 
      17:     <div class=“shadow>//*区域内为Shadow类*// 
      18:     <p style=“font-familybaileyfont-size48pt
      19:          font-weightboldcolor:#FF9900;”> 
      20:      Hongen Online</p>//*定义字体名称、大小、粗细、前景色*// 
      21:     </div> 
      22:     <div class=“dropshadow>//*区域内为Dropshadow类*// 
      23:     <p style=“font-familybaileyfont-size48pt
      24:           font-weightboldcolor:#FF9900;”> 
      25:      Hongen Online</p>//*定义字体样式与Shadow类的一样*// 
      26:     </div> 
      27:     </body> 
      28:    </html>

    9、CSS滤镜:Wave属性

          Wave属性用来把对象按照垂直的波纹样式打乱。它的表达式如下:

          Filter:Wave(Add=True(False),Freq=频率,LightStrength=增强光效,Phase=偏移量,Strength=强度)

    我们看到Wave属性的表达式还是比较复杂的,它一共有五个参数。Add参数有两个参数值:True代表把对象按照波纹样式打乱;False代表不打乱;
    Freq参数指生成波纹的频率,也就是指定在对象上共需要产生多少个完整的波纹。 LightStrength参数是为了使生成的波纹增强光的效果。参数值可以从0到100。 Phase参数用来设置正弦波开始的偏移量。这个值的通用值为0,它的可变范围为从0到100。这个值代表开始时的偏移量占波长的百分比。比如该值为25,代表正弦波从90度(360*25%)的方向开始。
    说了一大堆,我们还是先看一个实例吧。比如下面这幅图片:

    clip_image002

          下面我们对上面这个页面加上Wave效果,代码如下:

       1:  <html>
       2:     <head> 
       3:     <title> wave css</title> 
       4:     <style>//*定义CSS 样式开始*// 
       5:     <!-- 
       6:      .leaf{position:absolute;top:10;300;
       7:         filter:wave(add=true,freq=3,lightstrength=100,
       8:             phase=45,strength=20);}     
       9:     //*设置leaf类的样式,绝对定位,wave属性,产生3个波纹, 光强为100,波纹
      10:     从162度(360*45%)开始,振幅为20*// 
      11:     img{position:absolute;top:110;left:40;
      12:       filter:wave(add=true,freq=3,lightstrength=100,
      13:            phase=25,strength=5);}      
      14:     //*设置IMG的样式,绝对定位,wave属性,产生3个波纹,光强为100,波纹从
      15:     90度开始,振幅为5*// 
      16:     --> 
      17:     </style> 
      18:     </head> 
      19:     <body> 
      20:     <div class=“wave>//*定义DIV区域内为Wave类*// 
      21:     <p style=“font-familylucida handwriting
      22:         font-size=72ptfont-weightbold
      23:         colorrgb(189,1,64);”>Leaf</p> 
      24:     //*设置字体名称、大小、粗细、颜色*// 
      25:     </div> 
      26:     <p><img src=“ss01044.jpg></p> //*导入图片*//    
      27:    </body> 
      28:    </html>

         

          这段代码实现的效果如下图:

    clip_image001[25]

           如果把Wave的参数随便做一下改动,就会达到多种效果,请看另外一种效果:(如下图):

    clip_image001[27]

          其实这种效果只是增大了freq参数的值,减小了Strength、LightStrength的值就可以了。您也可以多试试,改变其他的参数值,还可以达到许多不同的效果来。

    10、CSS滤镜:Xray属性

          Xray就是X射线的意思。
          Xray属性,顾名思义,这种属性产生的效果就是使对象看上去有一种X光片的感觉。 它的表达式很简单:

          Filter:Xray

    我们还是先来看一个页面(如下图):

    clip_image001[29]

          如果在上面的页面中加入Xray属性,也就是在<head>的<Style>中,增添下面这一句代码:

          Filter:Xray

    您再看这个页面就会是另一种效果了:(如下图)

    clip_image001[31]

          看,是不是就像给它拍了一张X光片一样。

    11、CSS滤镜:alpha属性

          alpha是来设置透明度的。先来看一下它的表达格式:

          filter:alpha(opacity=opcity,finishopacity=finishopacity,style=style,startX=startX,startY=startY,finishX=finishX,finishY=finishY)

    哇,怎么这么长。是啊,不过这些参数都各有其用。
          Opacity代表透明度等级,可选值从0到100,0代表完全透明,100代表完全不透明。 Style参数指定了透明区域的形状特征。其中0代表统一形状;1代表线形;2代表放射状;3代表长方形。
          Finishopacity是一个可选项,用来设置结束时的透明度,从而达到一种渐变效果,它的值也是从0到100。 StartX和StartY代表渐变透明效果的开始坐标,finishX和finishY代表渐变透明效果的结束坐标。
    从上面讲的我们可以看出,如果不设置透明渐变效果,那么只需设置opacity这一个参数就可以了。说了这么多,我们来看一个实例吧(见下图):

    clip_image001

          实现上面这种效果的代码如下:

       1:  <html> 
       2:    <head>
       3:    <title>alpha</title> 
       4:    <style>//*定义CSS样式*// 
       5:    <!-- 
       6:    div{position:absolute; left:50;top:70; width:150; }
       7:    //*定义DIV区域内的样式(位置为绝对定位,left、top、width的坐标)*//
       8:      img{position:absolute;top:20;left:40;
       9:    filter:alpha(opacity=80)} 
      10:    //*定义图片的样式,绝对定位,滤镜属性是透明度为80*// 
      11:    --> 
      12:    </style> 
      13:    </head> 
      14:    <body> 
      15:    <div> 
      16:    <p style=“font-size48font-weightboldcolorred;”>
      17:    Beautiful </p>//*定义字体属性,前景色为红色*// 
      18:    </div> 
      19:    <p><img src=“ss01076.jpg> </p>
      20:    //*导入一张图片*// 
      21:    </body> 
      22:    </html>

         

          如果在上面的代码中稍做改动,则将产生另外多种效果。我们只修改img的样式属性,把head中的Img样式属性代码改为如下所示:

       1:  img{position:absolute;top:20;left:40;
       2:    filter:alpha(opacity=0,finishopacity=100,
       3:    style=1,startx=0,starty=85,finishx=150,finishy=85);}
       4:    //*设置透明渐变效果,起始坐标,终止渐变坐标,并设置透明样式值(style=1)为线形*// 

          这段代码产生的效果如左下图所示,右面的两幅图分别是把Alpha中的Style参数值为2和3后的效果。

    clip_image001[5]  clip_image001[7]  clip_image001[9]

    Style=1                         Style=2                      Style=3

     

    12、CSS滤镜:Invert属性

          Invert属性可以把对象的可视化属性全部翻转,包括色彩、饱和度和亮度值。
    它的表达式也很简单: Filter:Invert

    我们再来看一下加上Invert属性前后的图片效果变化(如下图):

    clip_image001[17]                           clip_image001[19]

            原图                                   Invert属性效果图

          我们看到Invert属性实际上达到的是一种“底片”的效果。

  • 相关阅读:
    十七、S3C2440 音频解码芯片WM8976声卡驱动移植、madplay测试
    2.3 摄像头驱动_vivi驱动程序分析
    3.1 wifi网卡RT3070在S3C2440的移植和使用
    项目简介
    2.2 vivi虚拟视频驱动测试
    2.1 摄像头V4L2驱动框架分析
    LCD驱动程序编写
    LCD驱动程序
    1. Linux内核的配置与裁减:
    第5章 docker run、exec和attach使用和区别
  • 原文地址:https://www.cnblogs.com/acafaxy/p/2067458.html
Copyright © 2020-2023  润新知