CSS中的滑动门技术
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
原文标题:Sliding Doors of CSS
原文作者:Douglas Bowman
原文出自:A List Apart
中文翻译: (2005-01-31)
版权说明:中文翻译版权属于 nobita 所有
在CSS中,一个经常被人们讨论的先进之处即背景图像的可层叠性,并允许他们在彼此之上进行滑动,以创造一些特殊的效果。根据CSS2.0当前的规定,每一个背景图像都需要各自的HTML元素。在许多情况下,典型的标记已经为一般的接口组件提供了多种元素以供我们使用。
标签导航栏就是其中的一个例子。过去,我们频繁的使用这些标签,并已成为了一种非常流行的站点导航方式。现今,在CSS已被广泛支持的前景下,我们可以为我们站点制作出更高质量和更好外观的标签导航栏来。你也许知道CSS可以用来“驯服”无序的列表,或许你还曾经看到过这种样式的标签列表:
[一般的基于CSS的标签,采用单色及直角]
如果我们想用和以上类似的标记,将导航标签变成这种样式,该怎么办呢?
[加入一定样式的标签,具有圆角和3D及阴影效果]
经过简单的设计,我们是可以做到的。
创新于何处?
我见过的许多基于CSS的导航标签大都具有一类的特征:矩形的色块,也许仅仅是一个轮廓,对于当前选中的标签则没有边框,标签在鼠标指针游至其上时改变颜色。这难道就是CSS所能给我们的全部吗?一连串的小盒子和单调的色彩吗?
在CSS被广泛采用之前,我们已经看到许多标签导航设计中的创新之处。独创的外形,熟练的色
彩混合,以及对真实世界中许多物理接口的模仿。但是这些设计往往过分依赖于经过复杂制作、
带有文本的图像,或被包装成若干嵌套的表格。修改文本或改变标签的顺序则需要一个复杂的过程。文本的伸缩更是不可能的,或给页面的布局极大的影响。
纯文本的导航栏比起文本即图像的导航栏更具有持续使用性和更快的载入速度。同样,我们甚至
可以为每一个图像加上alt属性,对于弱视者,纯文本更可以自由的改变大小。不足为奇的是,基于纯文本的导航栏,并加以CSS样式,又重新回到Web设计中来。但是,大多数基于CSS的导航
栏设计,至今为止仍然是毫无意义的。一种最近被采用的技术(例如CSS)可以让我们做的更好,同样不失先前提到的那些表格和图片标签的效果。
滑动门技术
美观的工艺,真正灵活的接口组件,并根据文本自适应大小,我们可用两个独立的背景图像来创
造它。一个在左边,一个在右边。把这两幅图像想象成两扇可滑动的门,它们滑到一起并交迭,
占据一个较窄的空间;或者相互滑开,占据一个较宽的空间,就像下图所显示的那样:
[图中有两扇门。第一幅中两扇门叠在一起的部分较多,第二幅则较少。]
在这个模型中,一个图像掩盖住另一个图片的一部分。假设我们放置一些独特的内容在每个图像的
周围,例如标签的圆角,我们并不希望上面一副图像完全的遮蔽住下面一副。为了防止这种情况
的发生,我们可以将上面一副图像(此例中的左边那幅)控制的尽可能的窄。但仍然要保证一定
的宽度来显现标签一侧的独特性。如果外部是圆角,我们就应该控制上面一副图像和它的弧线部
分具有一样的宽度。
[图像显示了左边一个独立较窄的带有圆角的图像,右边的图像则于其类似,只是圆角的位置不同。]
如果目标在大小上增长,并超过了以上所显示的宽度,归咎于文本大小及字体的改变,图像会被
拉开,产生不美观的间隙。我们需要判断的是,预测这种可扩展的量将有多大。如果在浏览器中
改变字体的大小,目标又会如果增长呢?实际来说,我们至少应该估算到字体大小增长至300%的
情况。背景图像也得适应这种增长。对于以上的例子,我们将下面(即右边)的图像设为
400*150像素,上面的设为9*150像素。
在头脑中,始终要有这样的认识:背景图像只是显示一个可供内容填充的有效空间(即内容区域
和padding,称为doorway)。这两幅图像始终和各自外部的边角相锚定。背景图像的可见部分和
在一起即形成了一个具有这种标签形状的空间(doorway):
[图像显示了两幅图像底部的额外高度。右边图像的左侧同样具有额外的宽度。可见的部分是标签
成型。]
如果标签被撑大,图像即滑开,doorway变宽,图像的也将被显露的更多:
[图像显示出两幅图像被拉开,形成更宽标签的情况,在高度上则是使用额外的那部分高度。]
此例中,我在photoshop中制作两个平滑,细的3D标签图像,如文章开头所显示的那样。对于其一,内部明亮,边框暗淡些,用来表现当前选中的标签。将这种技巧模型应用于左右两幅图像中,我们需要扩大标签图像覆盖的区域,将它裁剪成两部分:
[左侧和右侧的图像]
同样的方式将应用到被称为“当前”的标签中。一旦我们完成了这四幅图像(1, 2, 3, 4),我们就可以开始用标记和CSS来制作我们的标签了。
标签的创造
当你在研究用CSS来创造水平列表时,会发现至少有两种方法将列表项安排在同一行里。两种方
法各有千秋,但都需要CSS来解决布局所带来的混乱。一种方法使用inline box,另一种则用floats。
方法一,可能是比较普遍的一种,是将列表项都inline显示。inline方法的魅力在于它的简易性。
但是,对于我们即将谈到的滑动门技术来说,inline方法在特定的浏览器上存在一些解释上问题。方法二,是我们将要关注的,即用floats将列表项安排在同一行里。令人沮丧的是,floats 表面上
矛盾的行为正巧回避了自然的逻辑。尽管如此,对于解决多重浮动元素的基本认识,以及可靠浮
动的意义,仍是值得讨论的。
我们将用另一种浮动元素来解决浮动元素的排列问题。这样,父类元素将子类元素完全包括起来。于是,我们就可以为标签加上背景色彩和背景图像。非常重要的一点必须记住,紧跟在标签后的
文本元素用CSS中的clear功能来清除浮动对象。这样避免了浮动标签影响页面上其它元素的位置。我们从以下的标记开始:
现实中,#header div可能同样包含logo和搜索框。对于我们的例子,我们要缩短每一个锚链中超
链接的值。显然,这些值应该正确的包含文件或者目录的位置。