仿 Windows 7 资源管理器风格的网页设计
来源:互联网 发布:115 mac在线 编辑:程序博客网 时间:2024/05/23 12:04
[用live writer发完,发现格式乱了,图片也看不到,你可以到http://www.liuhaifeng.com/2010/01/design-win7-alike-web-page.html查看完整版]
Windows 7 的华丽界面吸引了不少爱美之人,我们网页上是否也可以做出类似的效果呢?答案当然是可以!事实上,我刚刚完成了这个设计,正好做个技术笔记。
我们要实现目标,主要是两部分,一是半透明的标题栏与粗边框,二是导航菜单。参考下图:
Windows 7 资源管理器
半透明效果可以用一个额外的层来实现,这个层用CSS定义为半透明。当前主流的浏览器都支持半透明样式,但写法不一样。不过没关系,每种写法都写上,就可以兼容全部浏览器了。我用的代码(通过测试的浏览器为:IE6/xpsp2,IE8/win7, IE8兼容性视图/win7, Firefox3.5.7。如无特别说明,本代码均以这四种测试为准,其它浏览器不保证兼容)如下:
filter:alpha(opacity=50);-moz-opacity:0.5;opacity:0.5;
其中第一个是IE里的写法,中间是firefox(mozilla)的写法,后面一个大概是标准写法了。我不是专业做HTML+CSS,所以也懒得去查了。
单纯的透明效果很好做,但很快会发现,透明层里的子元素也透明了,即使你明确声明它为不透明。所以我前面是说用一个额外的层来实现。我的页面布局是这样的:最外面有一个wrap层,是所有内容的父层,它定义了页面的宽度和在浏览器中居中。在wrap层里,我加了ID为glass-bg的“额外层”,此层使用绝对定位(position:absolute;注意wrap层要使用相对定位:position:relative;)。两个层的CSS代码如下:
#wrap{display:block;position:relative;margin:20px auto;padding:2px;width:960px;background:transparent none;}#glass-bg{position:absolute;z-index:-1;left:-4px;top:-4px;width:100%;height:100%;padding:3px;border-width:1px;border-style:solid;border-color:#BBBBBB #999999 #999999 #BBBBBB;background:#F0F0F0;filter:alpha(opacity=50);-moz-opacity:0.5;opacity:0.5;}
我们将glass-bg定位在wrap的(-4px, -4px)处。其宽高均为100%,因为宽高计算不包括padding,所以glass-bg实际尺寸比wrap大了一圈儿,这就是我们要的粗边框了(当然还有别的办法制造这个粗边框,比如wrap与glass-bg一样大,内部内容对齐时留出边距。另外此样式在IE6中无效,解决办法见下文中的JS hack)。
此外最重要的就是“z-index:-1;”了,如不这样指定,此层就成了蒙在上面的半透明层,成了雾状效果了。用-1使此层处于内容元素的下方,这样内容元素即不会“起雾”,也不会半透明(与glass-bg没有父子关系)。效果参考:
半透明标题栏与粗边框效果
可是万恶的IE6不支持这个绝对定位的100%宽高,怎么办?这不是逼我用JavaScript么,还好问题很简单,只需要很短的代码:
window.onload=function(){var wrap = document.getElementById("wrap");var glass = document.getElementById("glass-bg");glass.style.width=wrap.offsetWidth+"px";glass.style.height=wrap.offsetHeight+"px";}
上述代码只适用于页面大小不会动态改变的情况(大多数页面都不会动态改变,除非用JS做了一些局步更新之类),若您用JS做了会改变页面尺寸的操作,请自行写代码刷新玻璃层尺寸。
导航菜单做起来也并不难,只是,万恶的IE中的万恶的IE6,老是逼我写JavaScript。本来可以用纯CSS来做出这个导航菜单的,偏偏IE6又不支持li:hover。
导航菜单大致结构如下:
IE6的JavaScript hack代码就是写在li标签中的那两句。相关的CSS没什么难度,无非是li元素横排;隐藏、显示子菜单层。横排可以用浮动,也可以用inline-block。IE6不支持inline-block,可以用zoom和inline模拟,通吃的代码如下:
.inline-block{display:inline-block;zoom:1;*display:inline;}
但是注意,IE6模拟出来的效果与真实的inline-block略有差异。inline-block默认会像其它inline的元素一样,把元素之间的空隙当作空格来计算,但IE6里模拟出来这个,是会忽略空格的。我们的菜单不需要空格,所以如果用inline-block,元素之间一定不要留间隙,回车也不行。
你可能留意到class为shade的层,没错,跟前面讲的玻璃效果类似,这个是给菜单加个半透明的阴影。你还可能留意到一个iframe层,是的,又是被万恶的IE6给逼的。在IE6里,菜单弹出后,鼠标在菜单上滑动,如果滑到下方有链接元素(被菜单遮住)的位置,会触发mouseover使菜单消失。这个iframe层也是放在菜单下面,大小与菜单相同,它就相当于一个隔离层,会隔断下方热点的鼠标事件,因为iframe有着更高的优先级。
看下效果吧:
导航菜单效果图
仿 Windows 7 资源管理器风格一点都不难,我这个外行人都搞定了。当然还有值得改进之处,比如我的导航菜单没有区分目录名与右边的三角,再如可以给glass-bg层指定一个背景图案,这样半透明的同时还有底纹。
如果你想看下页面效果或是源码,可以访问:http://www.kaoly.com/all/
转载请注明出处:http://www.liuhaifeng.com
- 仿 Windows 7 资源管理器风格的网页设计
- Windows 10 资源管理器黑色风格
- 仿windows资源管理器今日完成
- 用PHP实现windows资源管理器风格的树型菜单
- 用PHP实现windows资源管理器风格的树型菜单
- 用PHP实现windows资源管理器风格的树型菜单
- 用php实现windows资源管理器风格的树型菜单
- 用PHP实现windows资源管理器风格的树型菜单
- Windows UI风格的设计(7)
- 五个Metro UI 风格的网页设计
- 35个简约风格的 网页设计
- windows 7对资源管理器的改善
- windows 7资源管理器的启动位置
- 网页设计风格变迁
- 仿ZAKER的windows phone风格主界面
- 仿ZAKER的windows phone风格主界面
- 仿Windows风格的选项卡和按钮
- 学习笔记- 查看一个文件夹下的文件及文件夹,仿Windows资源管理器
- C# udp socket通讯
- CFT文件传输工具
- 让孩子成功的五种说话语气
- 使用abator自动生成ibatis代码的经验
- 新版Dell本本BIOS设置完全手册
- 仿 Windows 7 资源管理器风格的网页设计
- 记点儿 手机同步个人信息管理
- 听课有感
- PHP + Apache + MySQL 安装配置
- iPhone开发基础知识
- 模式对话框和非模式对话框的区别
- 代码还在
- netlink socket编程之why & how
- . Brightness(亮度) 一种颜色的范围,表示它与一系列从很昏暗(黑)到很明亮(耀眼)的无色彩的颜色之间的相似处