2008-4-25 08:10
lonjew
使用纯 CSS 设计3D按钮
CSS 按钮的效率远比基本图像的按钮的效率高得多,因为它们全部都是基于文本的。所有要用 XHTML 标记只是一个无序列表——CSS 样式负责其余部分。而且,你不需要任何 JavaScript 来交换图像以实现翻卷效果,因为 CSS 伪类(pseudoclass)能够让你为链接的每个状态(链接、已访问、悬停、激活)建立独立的样式。
纯 CSS 按钮唯一的问题是它们看上去相当单调,只有固定的颜色背景和一个简单的边界。一个解决方法是使用混合技术向 CSS 样式的文本按钮加入一个背景图像,从而使其具有3D效果。然而,读者的电子邮件提示我寻找一种使用纯 CSS 创建3D按钮效果的方法——不需要图像。我发现通过控制 CSS 按钮边界的样式有两个方法可以创建斜面边缘的外观效果。
[b]创建斜面边缘效果[/b]
要使一个按钮具有3D斜面边缘效果,需要模拟一个光源,以在一个凸起按钮的边缘创建加亮区和阴影区。如果光源在上面稍微偏向按钮的左边,那么按钮的顶部和左侧就会比按钮表面更亮,而底部和右侧就会比按钮表面更暗。
[img]http://webdesign.chinaitlab.com/UploadFiles_8014/200707/20070707164744259.gif[/img]
[img]http://webdesign.chinaitlab.com/UploadFiles_8014/200707/20070707164744259.gif[/img]
[img]http://webdesign.chinaitlab.com/UploadFiles_8014/200707/20070707164745422.gif[/img]
[img]http://ad.cn.doubleclick.net/ad/messagingplus.zdnet.com.cn/developer/webdevelop;sz=1x1;ord=1608497293?[/img]
所以,创建三维效果的秘密是使用 CSS 边界模拟按钮的侧面,并为每个边界的使用稍微不同的颜色,具体的颜色方案要根据它所表示的是光亮的一侧还是阴暗的一侧而定。为了看上去更加真实,边界应该具有斜接角,CSS 边界能够很好地满足这一需要。
[b]方法[/b][b]1[/b][b]:使用[/b][b]inset/outset[/b][b](嵌入线[/b][b]/[/b][b]浮出线[/b][b])边界[/b]
有一个 CSS 边界属性能够自动产生合理的斜面边缘模拟效果。你只须为按钮样式的 [i]border-style [/i]属性指定为 [i]inset [/i]或者 [i]outset[/i]即可。浏览器会以稍微不同的背景色阴影来处理元素边界的表现细节,从而得到期望的效果。[i]outset[/i]属性模拟凸起按钮的阴影边缘,[i]inset [/i]属性通过反转阴影来模拟按钮被按下的情景。
[b] 方法1 [/b]展示了实际的 inset/outset 边界效果。这个例子是由一些非常简单的代码产生的。XHTML 非常简单,只包含一些按钮标签(label)和链接
以下是引用片段:
Button 1
Button 2
Button 3
[b] [/b]