项目开发过程当中使用到了很多web前端美化效果的方法,总结一下javascript
要实现的效果是,任意一张图片"img-page-background.png"
,不须要调整图片尺寸,图片彻底填充网页背景。首先需在CSS代码中建立.page-bg
类:css
.page-bg { width: 100%; height: 100%; background: url('img-page-background.png') no-repeat; background-size: 100% 100%; }
url
指定图片路径,no-repeat
指定图片不平铺,background-size: 100% 100%;
彻底占据背景html
而后在HTML代码中将背景与其余想要显示的内容分两个<div>
来放置:前端
<!DOCTYPE html> <html> <head> ...... </head> <body> ...... <!--父容器--> <div class="father-div"> <!--放背景图片的容器--> <div class="page-bg"></div> <!--要显示在背景图片之上的内容--> <div class="page-context"> ...... </div> </div> ...... </body> </html>
最终效果上图,java
浏览器F12进入调试模式,将屏幕分辨率任意修改,背景图都会100%填充,可是会改变图像的纵横比jquery
刚开始学摄影的时候也很喜欢玩大光圈虚化,感受拍出来的静物很漂亮,有一种朦胧梦幻感,并且虚实对比,突出主题,web设计中也是同样的web
要实现的效果是将背景的图片虚化掉,背景之上的内容清晰显示,仍以"img-page-background.png"
做为背景图片,CSS样式同“1 图片做为背景”
浏览器
建立一个专用于虚化的CSS类:ide
.gauss { -webkit-filter: blur(10px); -moz-filter: blur(10px); -ms-filter: blur(10px); filter: blur(10px); }
由于PS中喜欢使用高斯模糊作后期,故取名gauss
;-webkit-
、-moz-
等前缀用于对各类浏览器支持;属性的取值为blur(npx)
,其中的n
取值越大,模糊程度越大函数
在HTML代码中,同理,要把背景和实际内容分两个<div>
来处理,若是虚化效果加在了父容器上,那么父容器如下全部内容都会被虚化,我入过这个坑,HTML伪代码以下
<!DOCTYPE html> <html> <head> ...... </head> <body> ...... <!--父容器--> <div class="father-div"> <!--放背景图片带有虚化效果的容器--> <div class="page-bg gauss"></div> <!--要显示在背景图片之上的内容--> <div class="page-context"> ...... </div> </div> ...... </body> </html>
这里背景<div>
上引用page-bg
和gauss
两个类,虚化参数选的10px,实际效果如图
上图中只有背景被虚化,背景之上的文字依然清晰
在背景之上作一个透明的区域,会有一种悬浮感,更显得神秘莫测,透明效果使用CSS的opacity
属性,其值的范围是0.0~1.0
,数值越小,透明度越高,建立一个CSS类:
.glass { opacity:0.6; }
在HTML代码中,依然选取背景图片img-page-background.png
,在其上方制做一个半透明颜色为#555
的矩形<div>
,HTML伪代码:
<!DOCTYPE html> <html> <head> ...... </head> <body> ...... <!--父容器--> <div class="father-div"> <!--放背景图片带有虚化效果的容器--> <div class="page-bg"></div> <!--要显示在背景图片之上的内容--> <div class="page-context glass"> ...... </div> </div> ...... </body> </html>
给显示的内容<div>增长glass
类,实际效果如图
要实现的效果是在背景虚化和前景透明的基础上,前景淡入,背景逐渐虚化,要作两件事:前景淡入
和背景逐渐虚化
仍然使用上文中的资源
淡入效果jQuery就能够支持,使用淡入淡出效果中的fadeIn()
方法,语法为:
$(selector).fadeIn(speed,callback);
speed
是从隐藏到显示彻底所用的时间长度,单位毫秒,也可取slow
和fast
,callback
是效果执行完后的回调函数,可不使用,上HTML伪代码:
<!DOCTYPE html> <html> <head> ...... <!--要使用jQuery效果,则要先加载了jQuery库!--> <script type="text/javascript" src="/scripts/jquery-1.7.2.min.js"></script> <script type="text/javascript"> $(function(){ $("#fade_page").hide(); $("#fade_page").fadeIn(3000); }); </script> </head> <body> ...... <!--父容器--> <div class="father-div"> <!--放背景图片带有虚化效果的容器--> <div class="page-bg"></div> <!--要显示在背景图片之上的内容--> <div class="page-context glass" id="fade_page"> ...... </div> </div> ...... </body> </html>
这里在执行js脚本以前要确保加载了jQuery库文件,脚本中首先要讲淡入元素隐藏,淡入时间设置为3秒
由于虚化使用的是CSS属性filter
设置blur(npx)
参数,要实现逐渐虚化的效果,须要让blur(npx)
参数动态增长,网上有第三方js库能够实现动画效果,我没有使用第三方库,怎么办?用定时器作
javascript自带两种定时器方法setInterval()
和setTimeout()
,前者是周期性循环定时并触发回调函数,后者是定一个时间,到时间触发回调函数;要实现逐渐的效果,就要不断改变blur(npx)
的n
的值,很明显须要屡次调用函数,因此使用setInterval()
,格式为
setInterval("javascript function",milliseconds);
milliseconds
是循环的周期,单位为毫秒,前面是一个函数,上HTML伪代码:
<!DOCTYPE html> <html> <head> ...... <!--要使用jQuery效果,则要先加载了jQuery库!--> <script type="text/javascript" src="/scripts/jquery-1.7.2.min.js"></script> <script type="text/javascript"> $(function(){ var counter = 0; var blur_max = 20; var myTimer = setInterval(function(){ var blur_css = "blur(" + counter + "px)"; $(".blur").css("-webkit-filter", blur_css); $(".blur").css("-moz-filter", blur_css); $(".blur").css("-ms-filter", blur_css); $(".blur").css("filter", blur_css); if (counter == blur_max){ stopTimer(); } counter++; }, 250); }); function stopTimer(){ clearInterval(myTimer); } </script> </head> <body> ...... <!--父容器--> <div class="father-div"> <!--放背景图片带有虚化效果的容器--> <div class="page-bg blur"></div> <!--要显示在背景图片之上的内容--> <div class="page-context glass" id="fade_page"> ...... </div> </div> ...... </body> </html>
在CSS中首先将blur
类的filter
属性值设置为blur(0px)
,也就是初始不虚化,而后建立定时器myTimer
,指定每250毫秒执行一次当即函数,函数中调用jQuery的css()
方法为blur
类设置其filter
属性的值,该值为一个字符串变量blur_css
,会随着counter
的递增而改变,从"blur(0px)"
递增到"blur(20px)"
,从而实现了逐渐虚化的效果,最终效果如图
Web前端须要作的漂亮,一定引入不少图片和图标来美化界面,可是嵌入式设备Flash有限,总共就那么几M空间,可用于Web资源存放区域很受限制,这里记录一种用于Web前端的图片压缩与合并方法,将多个制做好的图片和图标合并到一张图片中,既减少了占用Flash大小,又使得浏览器一次加载即可加载到全部图片
要使用一个在线图片压缩合并工具,CSS Sprite Generator
,连接地址:http://spritegen.website-performance.org/
进入后在网页左上方一片区域,有open、Setting、Clear、Downloads和About,点击open
打开所需合并的图片,该工具会自动优化对齐
作一个例子,以下图加载进来一些图片后,会自动对齐
点击其中一个图标,在右侧的设置区域可看到其坐标
这坐标怎么用?回到左边的区域,点击Downloads,右边区域会更改成下载选择,点击spritesheet会下载合并后的图片,点击stylesheet会下载全部图标的样式,以下图是合并后的图片
stylesheet样式文件内容以下
.sprite { background-image: url(spritesheet.png); background-repeat: no-repeat; display: block; } .sprite-icon-delete-normal { width: 50px; height: 50px; background-position: -5px -5px; } .sprite-icon-modify-normal { width: 50px; height: 50px; background-position: -5px -65px; }
每一个图标有width
、height
和background-position
三个属性,这其实就是对应css样式,可按以下格式创建一个删除图标的样式
.icon-delete-normal { width:50px; height:50px; overflow: hidden; background-repeat: no-repeat; background-image: url('../img/spritesheet.png'); background-position: -5px -5px; }
其中url中为从这个工具下载的spritesheet合并图片,HTML中就可使用<div class="icon-delete-normal" ......>......</div
>来彻底显示该图标了
未完待续