精通CSS滤镜(filter)(实例解析)

        Css滤镜比较帅,可以取代一部分PS才能实现的效果,但是缺点也比较明显,浏览器并不是都支持。但考虑到IE6,7...占的市场份额还是挺很大的,所以有学习的必要。网上不缺CSS滤镜的知识,但是大多是长篇大论,或不够全面。现在结合自己做的例子和网上的资料,自己的学习心得总结如下。毕竟我不是专业搞美工,所以这篇随笔,是基本是面向初学者,并使其快速掌握。也了解现在的CSS都能做什么。为了充实内容,顺便给出jQuery实现弹出层特效的源码。

        CSS(Cascading Style Sheets) 层叠样式表单。1998年5月12日,Cascading Style Sheets,level 2 成为了W3C 的新标准。同时,”W3C CoreStyles '和CSS2 Validation Service' 以及“CSS Test Suite' 宣布成立。它是一组样式,样式中的属性在HTML元素中依次出现,并显示在浏览器中。样式可以定义在HTML文档的标志(TAG)里,也可以在外部附加文档作为外加文档。此时,一个样式表单可以作用于多个页面---甚至整个站点,因此具有更好的易用性和扩展性。

        对于滤镜和渐变效果,前者是基础,因为后者就是滤镜效果的不断变化和演示更替。当滤镜和渐变效果结合到一个基本的SCRIPT小程序中后,网页设计者就可以拥有一个建立动态交互文档的强大工具。也就是CSS FILTER+ SCRIPT, 这就说明想要建立动态的文档还要一些SCRIPT (脚本语言)的基础。 

        可视化滤镜属性只能用在HTML控件元素上,不能使用div的id,class定义。所谓的HTML空间元素就是它们在页面上定义了一个矩形空间,浏览器的窗口可以显示这些空间。下面列出了HTML合法的控件和它们的说明。


元素                                       说明 
BODY                      网页文档的主体元素,所有的可见范围都在元素内 
BUTTON                  表单域的按钮,可以有“发送(submit)”、“重置(reset)”等形式 
DIV                         定义了网页上的一个区域,这个区域的高度、宽度或者绝对位置都是以知的 
IMG                         图片元素,通过指定“src'属性来指定图片的来源 
INPUT                      输入表单域 
MARQUEE                移动字幕效果 
SPAN                      定义了网页上的一个区域,这个区域的高度、宽度或者绝对位置都是以知的 
TABLE                    表格 
TD                         表格数据单元格 
TEXTAREA              文本区域 
TFOOT                   多行输入文本框 
TH                         表格标题单元格 
THEAD                   表格标题 
TR                         表格行 

----------------------------------------------IE4.0以上支持的滤镜属性表-------------------------------------------- 

滤镜效果 描述 :

Alpha 设置透明度 
Blru 建立模糊效果 
Chroma 把指定的颜色设置为透明 
DropShadow 建立一种偏移的影象轮廓,即投射阴影 
FlipH 水平反转 
FlipV 垂直反转 
Glow 为对象的外边界增加光效 
Grayscale 降低图片的彩色度 
Invert 将色彩、饱和度以及亮度值完全反转建立底片效果 
Light 在一个对象上进行灯光投影 
Mask 为一个对象建立透明膜 
Shadow 建立一个对象的固体轮廓,即阴影效果 
Wave 在X轴和Y轴方向利用正弦波纹打乱图片 
Xray 只显示对象的轮廓 


下面分别阐述:

1、Alpha 滤镜 
语法:{FILTER:ALPHA(opacity=opacity,finishopacity=finishopacity,style=style,startx=startx, 
starty=starty,finishx=finishx,finishy=finishy)} 

'Alpha'属性是把一个目标元素与背景混合。设计者可以指定数值来控制混合的程度。这种“与背景混合”通俗地说就是一个元素的透明度。通过指定坐标,可以指定点、线、面的透明度。他们的参数含义分别如下:

“opacity'代表透明度水准。默认的范围是从0 到 100,他们其实是百分比的形式。也就是说,0代表完全透明,

100代表完全不透明。”finishopacity'是一个可选参数,如果想要设置渐变的透明效果,就可以使用他们来指定结束时的透明度。范围也是0 到 100。“style' 参数指定了透明区域的形状特征。其中0代表统一形状、1代表线形、2代表放射状、3代表长方形。”STARTX“和”STARTY“代表渐变透明效果的开始X和Y坐标。”

FINISHX“和”FINISHY“代表渐变透明效果结束X和Y 的坐标。 

代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>css滤镜</title>
<style>
body{FILTER:ALPHA(opacity=50,finishopacity=80,style=2}
</style>
</head>
<body>
<div class="try"><font color="#CC33C2">施杨de编程世界</font></div>
<div><img src="image/ch2.gif" /></div>
</body>
</html>

2、Blur 滤镜
语法:对于HTML:{filter:blur(add=add,direction=direction,strength=strength)} 
对于Script语言: [oblurfilter=] object.filters.blur 
用手指在一幅尚未干透的油画上迅速划过时,画面就会变得模糊。”Blur'就是产生同样的模糊效果。 

“ADD”参数是一个布尔判断“TRUE(默认)”或者“FALSE”。它指定图片是否被改变成印象派的模糊效果。模糊效果是按顺时针的方向进行的,“DIRECTION”参数用来设置模糊的方向。其中0度代表垂直向上,然后每45度为一个单位。它的默认值是向左的270度。“STRENGTH“值只能使用整数来指定,她代表有多少像素的宽度将受到模糊影响。默认是5个。

代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>css滤镜</title>
<style>
body{filter:blur(add=ture,direction=135,strength=200)}
</style>
</head>
<body>
<div class="try"><font color="#CC33C2">施杨de编程世界</font></div>
<div><img src="image/ch2.gif" /></div>
</body>
</html>

效果:

3、FlipH, FlipV 滤镜 
语法:{filter:filph} ,{filter:filpv} 分别是水平反转和垂直反转

4、Chroma 滤镜 
语法:{filter:chroma(color=color)} 
使用”Chroma'属性可以设置一个对象中指定的颜色为透明色,参数COLOR即要透明的颜色。
代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>css滤镜</title>
<style>
body{filter:chroma(color=#CC33C2)}
</style>
</head>
<body>
<div class="try"><font color="#CC33C2">施杨de编程世界</font></div>
<div><img src="image/ch2.gif" /></div>
</body>
</html>

可以屏蔽颜色,大有用处。

5、DropShadow 滤镜 
语法:{filter:dropshadow(color=color,offx=ofx,offy=offy,positive=positive)} 

“DropShaow'顾名思义就是添加对象的阴影效果。其工作原理是建立一个偏移量,加上较深。

'Color'代表投射阴影的颜色,'offx'和'offy'分别是X方向和Y方向阴影的饿偏移量。

'Positive'参数是一个布尔值,如果为“TRUE(非0)”,那么就为任何的非透明像素建立可见的投影。

如果为“FASLE(0)”,那么就为透明的像素部分建立透明效果 代码如下:

dropshadow(color=gray,offx=5,offy=5.positive=0) 

效果:

 6、Glow 滤镜 
语法:{filter:glow(color=color,strength)} 

当对一个对象使用'glow'属性后,这个对象的边缘就会产生类似发光的效果。“COLOR”是指定发光的颜色,“STRENGTH”则是强度的表现,可以从1到255之间的任何整数来指定这个力度。 

filter:glow(color=red,strength=10) 后的效果 
filter:glow(color=#ffff00,strength=5) 后的效果 

代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>css滤镜</title>
<style>
body{filter:glow(color=red,strength=10)}
.try{ margin-left:30px;}
</style>
</head>
<body>
<br /><br />
<div class="try"><font color="#CC33C2">施杨de编程世界</font><br />
<br />
<div><img src="image/ch2.gif" /></div><br /><br /></div>
</body>
</html>

7、Gray ,Invert,Xray 滤镜
语法:{filter:gray} ,{filter:invert},{filter:xray} 
Gray滤镜是把一张图片变成灰度图;(汶川大地震后很多网站色调都变灰色,就是用的这一点代码实现的)
Invert滤镜是把对象的可视化属性全部翻转,包括色彩、饱和度、和亮度值;
Xray滤镜是让对象反映出它的轮廓并把这些轮廓加亮,也就是所谓的“X”光片。 

效果:

效果:

 8、Light 滤镜 
语法:Filter{light} 

这个属性模拟光源的投射效果。一旦为对象定义了“LIGHT'滤镜属性,那么就可以调用它的“方法(Method)'来设置或者改变属性。“LIGHT'可用的方法有: 

·AddAmbient 加入包围的光源 
·AddCone 加入锥形光源 
·AddPoint 加入点光源 
·Changcolor 改变光的颜色 
·Changstrength 改变光源的强度 
·Clear 清除所有的光源 
·MoveLight 移动光源

addAmbient (iRed,iGreen,iBlue,iStrength) : 为滤镜添加环境光。环境光是无方向的,并且均匀的洒在页面的表面。环境光有颜色和强度值,可以为对象田家更多的颜色。它通

常和其他光一起使用。无返回值。参数见下表。
iRed : 必选项。整数值(Integer)。 指定红色值。取值范围为 0 - 255 。 
iGreen : 必选项。整数值(Integer)。 指定绿色值。取值范围为 0 - 255 。 
iBlue : 必选项。整数值(Integer)。 指定蓝色值。取值范围为 0 - 255 。 
iStrength : 必选项。整数值(Integer)。 指定光强度。取值范围为 0 - 100 。

changeColor (iLightNumber,iRed,iGreen,iBlue,fAbsolute) : 改变光的颜色。无返回值。

参数见下表。
iLightNumber : 必选项。整数值(Integer)。 指定光的标识符。 
iRed : 必选项。整数值(Integer)。指定红色值。取值范围为 0 - 255 。 
iGreen : 必选项。整数值(Integer)。指定绿色值。取值范围为 0 - 255 。 
iBlue : 必选项。整数值(Integer)。指定蓝色值。取值范围为 0 - 255 。 
fAbsolute : 必选项。布尔值(Boolean)。指定改变是替换当前设置的绝对值,还是加到当前设置的相对值。此参数不等于零表示采用绝对值。否则表示采用相对值。

可以定义光源的虚拟位置,以及通过调整X轴和Y轴的数值来控制光源焦点的位置,还可以调整光源的形式(点光源或者锥形光源)指定光源是否模糊边界、光源的颜色、亮度等属性。如果动态的设置光源,可能回产生一些意想不到的效果。

实现图片自动变色效果代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>css滤镜</title>
<style>
body{}
.try{ margin-left:30px;}
</style>
</head>
<body>
<br /><br />
<div class="try"><font color="#CC33C2">施杨de编程世界</font><br />
<br />
<div><img src="image/ch2.gif" style="filter:light(); width:400; height:300" onload="javascript:this.filters.light.addAmbient(10,250,100,55)" 

onmousemove="javascript:this.filters.light.changeColor(0,150,100,50,0)"/></div><br /><br /></div>
</body>
</html>

 9、Mask 滤镜 
语法:{filter:mask(color=color)} 
使用'MASK'属性可以为对象建立一个覆盖于表面的膜,其效果就象戴者有色眼镜看物体一样。

代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>css滤镜</title>
<style>
body{ filter:mask(color=yellow);}
#try{ margin-left:30px;}
</style>
</head>
<body>
<br /><br />
<div id="try"><font color="#CC33C2">施杨de编程世界</font><br />
<br />
<div><img src="image/ch2.gif" /></div><br /><br /></div>
</body>
</html>

虽然实现,但是效果并不想想象的那样帅,不好用。

10、Shadow 滤镜
语法:{filter:shadow(color=color,direction=direction)} 

利用“Shadow”属性可以在指定的方向建立物体的投影,COLOR是投影色,DIRECTION是设置投影的方向。其中0度代表垂直向上,然后每45度为一个单位。它的默认值是向左的270度。 

filter:shadow(color=red,direction=225) 
filter:shadow(color=blue,direction=225) 
filter:shadow(color=gray,direction=225)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>css滤镜</title>
<style>
body{ filter:shadow(color=red,direction=225);}
#try{ margin-left:30px;}
</style>
</head>
<body>
<br /><br />
<div id="try"><font color="#CC33C2">施杨de编程世界</font><br />
<br />
<div><img src="image/ch2.gif" /></div><br /><br /></div>
</body>
</html>

效果图:

11、Wave 滤镜 语法:{filter:wave(add=add,freq=freq,lightstrength=strength,phase=phase,strength=strength)} 

'wave' 属性把对象按垂直的波形样式打乱。默认是“TRUE(非0)”, 
“ADD”表示是否要把对象按照波形样式打乱, 
“FREQ”是波纹的频率,也就是指定在对象上一共需要产生多少个完整的波纹, 
“LIGHTSTRENGTH”参数可以对于波纹增强光影的效果,范围0----100, 
“PHASE”参数用来设置正弦波的偏移量。 
“STRENGTH”代表振幅大小。

代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>css滤镜</title>
<style>
body{ filter:wave(add=add,freq=freq,lightstrength=strength,phase=phase,strength=20);}
#try{ margin-left:30px;}
</style>
</head>
<body>
<br /><br />
<div id="try"><font color="#CC33C2">施杨de编程世界</font><br />
<br />
<div><img src="image/ch2.gif" /></div><br /><br /></div>
</body>
</html>

 效果图:

jQuery弹出层源码:

页面:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
<!-- saved from url=(0045)http://interface.eyecon.ro/demos/windows.html -->
<HTML xmlns="http://www.w3.org/1999/xhtml">
<HEAD><TITLE>Resizeable demo - Interface plugin for jQuery</TITLE>
<META http-equiv=Content-Language content=en>
<META http-equiv=Content-Type content="text/html; charset=utf-8">
<SCRIPT 
src="js/jquery.js" 
type=text/javascript></SCRIPT>
<SCRIPT 
src="js/interface.js" 
type=text/javascript></SCRIPT>
<link href="css/div_show.css" rel="stylesheet" type="text/css" media="all">
<META content="MSHTML 6.00.6000.16735" name=GENERATOR>
</HEAD>
<BODY><A id=windowOpen>管理员登陆</A>
<DIV id=window>
<DIV id=windowTop>
<DIV id=windowTopContent>登陆界面</DIV>
<IMG id=windowMin 
src="css/images/window_min.jpg"> 
<IMG id=windowMax 
src="css/images/window_max.jpg"> 
<IMG id=windowClose 
src="css/images/window_close.jpg"> 
</DIV>
<DIV id=windowBottom>
<DIV id=windowBottomContent></DIV></DIV>
<DIV id=windowContent>
<P></P>
<P></P>
<P></P>
<P></P>
<P></P>
<P></P>
<P></P>
<P></P>
<P></P>
<P></P></DIV><IMG id=windowResize 
src="css/images/window_resize.gif"> 
</DIV>
<P></P>
<P></P>
<P></P>
<P></P>
<P></P>
<P></P>
<P></P>
<P></P>
<P></P>
<P></P>
<SCRIPT type="text/javascript" src="js/div_show.js"></SCRIPT>
<SCRIPT language=JavaScript type=text/javascript>var client_id = 1;</SCRIPT>
</BODY></HTML>

css源码:

BODY {
    BACKGROUND: #fff; HEIGHT: 100%
}
#window {
    DISPLAY: none; LEFT: 200px; OVERFLOW: hidden; WIDTH: 400px; POSITION: absolute; TOP: 100px; HEIGHT: 300px
}
#windowTop {
    BACKGROUND-POSITION: right top; BACKGROUND-IMAGE: url(images/window_top_end.png); OVERFLOW: hidden; CURSOR: move; BACKGROUND-REPEAT: no-repeat; POSITION: relative; HEIGHT: 30px
}
#windowTopContent {
    BACKGROUND-POSITION: left top; FONT-WEIGHT: bold; FONT-SIZE: 14px; BACKGROUND-IMAGE: url(images/window_top_start.png); OVERFLOW: hidden; COLOR: #6caf00; TEXT-INDENT: 10px; LINE-HEIGHT: 30px; MARGIN-RIGHT: 13px; BACKGROUND-REPEAT: no-repeat; FONT-FAMILY: Arial, Helvetica, sans-serif; HEIGHT: 30px
}
#windowMin {
    RIGHT: 25px; CURSOR: pointer; POSITION: absolute; TOP: 10px
}
#windowMax {
    DISPLAY: none; RIGHT: 25px; CURSOR: pointer; POSITION: absolute; TOP: 10px
}
#windowClose {
    RIGHT: 10px; CURSOR: pointer; POSITION: absolute; TOP: 10px
}
#windowBottom {
    BACKGROUND-POSITION: right bottom; BACKGROUND-IMAGE: url(images/window_bottom_end.png); BACKGROUND-REPEAT: no-repeat; POSITION: relative; HEIGHT: 270px
}
#windowBottomContent {
    BACKGROUND-POSITION: left bottom; BACKGROUND-IMAGE: url(images/window_bottom_start.png); MARGIN-RIGHT: 13px; BACKGROUND-REPEAT: no-repeat; POSITION: relative; HEIGHT: 270px
}
#windowResize {
    RIGHT: 3px; CURSOR: se-resize; BOTTOM: 5px; POSITION: absolute
}
#windowContent {
    BORDER-RIGHT: #6caf00 1px solid; BORDER-TOP: #6caf00 1px solid; FONT-SIZE: 11px; LEFT: 10px; OVERFLOW: auto; BORDER-LEFT: #6caf00 1px solid; WIDTH: 375px; MARGIN-RIGHT: 10px; BORDER-BOTTOM: #6caf00 1px solid; FONT-FAMILY: Arial, Helvetica, sans-serif; POSITION: absolute; TOP: 30px; HEIGHT: 255px; BACKGROUND-COLOR: #fff
}
#windowContent * {
    MARGIN: 10px
}
.transferer2 {
    BORDER-RIGHT: #6baf04 1px solid; BORDER-TOP: #6baf04 1px solid; FILTER: alpha(opacity=30); BORDER-LEFT: #6baf04 1px solid; BORDER-BOTTOM: #6baf04 1px solid; BACKGROUND-COLOR: #b4f155; -moz-opacity: 0.3; opacity: 0.3
}

js源码:

$(document).ready(
    function()
    {
        $('#windowOpen').bind(
            'click',
            function() {
                if($('#window').css('display') == 'none') {
                    $(this).TransferTo(
                        {
                            to:'window',
                            className:'transferer2', 
                            duration: 400,
                            complete: function()
                            {
                                $('#window').show();
                            }
                        }
                    );
                }
                this.blur();
                return false;
            }
        );
        $('#windowClose').bind(
            'click',
            function()
            {
                $('#window').TransferTo(
                    {
                        to:'windowOpen',
                        className:'transferer2', 
                        duration: 400
                    }
                ).hide();
            }
        );
        $('#windowMin').bind(
            'click',
            function()
            {
                $('#windowContent').SlideToggleUp(300);
                $('#windowBottom, #windowBottomContent').animate({height: 10}, 300);
                $('#window').animate({height:40},300).get(0).isMinimized = true;
                $(this).hide();
                $('#windowResize').hide();
                $('#windowMax').show();
            }
        );
        $('#windowMax').bind(
            'click',
            function()
            {
                var windowSize = $.iUtil.getSize(document.getElementById('windowContent'));
                $('#windowContent').SlideToggleUp(300);
                $('#windowBottom, #windowBottomContent').animate({height: windowSize.hb + 13}, 300);
                $('#window').animate({height:windowSize.hb+43}, 300).get(0).isMinimized = false;
                $(this).hide();
                $('#windowMin, #windowResize').show();
            }
        );
        $('#window').Resizable(
            {
                minWidth: 200,
                minHeight: 60,
                maxWidth: 700,
                maxHeight: 400,
                dragHandle: '#windowTop',
                handlers: {
                    se: '#windowResize'
                },
                onResize : function(size, position) {
                    $('#windowBottom, #windowBottomContent').css('height', size.height-33 + 'px');
                    var windowContentEl = $('#windowContent').css('width', size.width - 25 + 'px');
                    if (!document.getElementById('window').isMinimized) {
                        windowContentEl.css('height', size.height - 48 + 'px');
                    }
                }
            }
        );
    }
);

再下载两个jquery的文件分别是:

interface.js,jquery.js


转载:www.cnblogs.com/shiyangxt 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值