本站关键字:网站建设、上海网站建设、网站推广、网页制作
网站首页关于我们网站建设网站推广电子商务联系我们
 
CSS中的滑动门技术

我们通过减少1像素普通锚链的底部padding值(5px-1px=4px)来实现,然后为“当前”锚链补上减去的padding。
#header a {
    display:block;
    background:url(norm_left.gif)
      no-repeat left top;
    padding:5px 15px 4px;
    }
#header #current a {
    background-image:url(norm_left_on.gif);
    padding-bottom:5px;
    }经过改变,底部边框将在普通标签中出现,而在“当前”标签中则隐藏了起来。于是,我们得到了效果3。
收尾工作
敏锐的观察者也许会在上一例注意到白色的标签角落。这些不透明的角用来防止下面的图像透过上面的一副。理论上,我们可以尝试使用部分背景图像来适应标签的背景。但是我们的标签会在高度上增长,尝试通过移动背景颜色,背景图像就会相对变矮。代替的办法是,改变图像,将标签的角落设为透明。如果弧线是反锯齿的,我们在其边缘使用较平均的背景色彩。
现在,角落已经变成透明色,左边的图像将透过右边图像的角落。为了补偿,我们为表单项加入和左边图像宽度相吻合的padding(9px)。既然已经为表单项加入了padding,我们还需去掉同样的宽度以达到文本的居中(15px-9px=6px):
#header li {
    float:left;
    background:url(right.gif)
      no-repeat right top;
    margin:0;
    padding:0 0 0 9px;
    }
#header a {
    display:block;
    background:url(left.gif)
      no-repeat left top;
    padding:5px 15px 4px 6px;
    }仍未结束,因为加入了9个像素的padding使左边图像与标签的左边之间产生了一段空白。现在,左侧与右侧,可见“doorway”的边缘接在一起,我们再不需要将左边图像保持在上方。于是,交换两幅背景图像的顺序,相反过来。同样交换“当前”标签中使用的两幅图像:
#header li {
    float:left;
    background:url(left.gif)
      no-repeat left top;
    margin:0;
    padding:0 0 0 9px;
    }
#header a, #header strong, #header span {
    display:block;
    background:url(right.gif)
      no-repeat right top;
    padding:5px 15px 4px 6px;
    }
#header #current {
    background-image:url(left_on.gif);
    }
#header #current a {
    background-image:url(right_on.gif);
    padding-bottom:5px;
    }完成这些后,我们到达了效果4。要注意的是,透明的角落在标签的左侧产生了一段不能点击的无效区域。这个区域在文本以外,但仍然是可以察觉到的。在标签的两边都使用透明的图像是没有必要的。如果我们不希望产生这种无效的区域,那么我们必须使用在标签后面使用颜色,然后用这种颜色来代替标签角落的透明图像。现在我们仅保持这种透明角落。
---
对于剩下的问题,我们将一次性完成全部的修改:加重标签文本,将普通标签中的文本改为棕色,“当前”标签文本改为深灰色,去掉链接的下划线,最后将悬停文本色彩改为同样的深灰色。经过一系列的改变,我们将看到目前为止的效果5。
一致性的解决
在效果2之后,我们公认的一个问题就是在IE5/Mac浏览方式下,每个标签延伸并占据了整个浏览器的宽度,以致标签垂直的堆在了一起。这不是我们所希望的。
在大多数的浏览器中,浮动一个元素会有收缩,收缩最小至它所包含内容的大小。如果一个浮动元素包含一幅图像或其本身即图像,便会收缩至图像的宽度。如果仅仅包含文本,那么将会收缩至最长的,不可被顶开的那文本的宽度。
一个问题出现在IE5/Mac中的图片中,当一个auto-width的块对象元素被插入到一个浮动的元素中时。其他的浏览器仍旧将浮动缩小至最小,而无视容器内的块对象元素。但IE5/Mac并不按照这种情况,相反它将浮动和块对象元素扩展至尽可能的宽度。为解决这个问题,我们将锚链同时浮动起来,但仅仅对于IE5/Mac,以免放弃其他的浏览器。首先,我们为锚链设定浮动规则。然后,我们使用反斜杠注释法来隐藏这种规则,让它仅仅对IE5/Mac生效,而无视其他的浏览器:
#header a {
    float:left;
    display:block;
    background:url(right.gif)
      no-repeat right top;
    padding:5px 15px 4px 6px;
    text-decoration:none;
    font-weight:bold;
    color:#765;
    }
/* Commented Backslash Hack
     hides rule from IE5-Mac \*/
#header a {float:none;}
/* End IE5-Mac hack */现在IE5/Mac浏览器将按我们所期望的那样来显示标签,看效果6。对于非IE5/Mac的浏览器什么都不需要改变。注意到IE5.0/Mac的一系列解释上的bug在IE5.1中解决。因此,滑动门技术在5.0版本中所遭遇的问题超出了hack的限度。既然升级到IE5.1/Mac已不成难题,OS 9 Macs/IE5.0的占有率应逐渐缩减至很低。
举一反三
我们刚刚演练了滑动门技术,用纯文本和无序列表来创造导航标签,加以少量的样式。它的装载速度快,具有可维持性,并且文本的大小可以在不破坏外观的情况下进行较大的伸缩。不必我们再重申在创造复杂样式的导航栏中,滑动门技术所表现出来的弹性了。
只有想不到,没有做不到。最终效果向我们展示了一例,但我们设计不可能因此而被限定死。
在某些场合,标签不一定是对称的。我很快就制作了这种标签的第二个版本,也有阴影3D的样式,有角的边缘,和具有特色的左边部分。依据第二个版本,我们甚至可以交换左右两幅图像的位置。以这种细致的布局和灵巧的图像控制,我们可以去掉按钮的下边框以便标签图像更好的去适应背景,如第三个版本所显示的那样。如果你的浏览器支持多个样式表的切换,你甚至可以靠它在多个版本的导航栏之间自由切换。
仍有许多我们没有提到的其他的效果。快速的提一下,我改变鼠标悬停的文本色彩,但是真个图像可以替换掉以创造出更有趣的变换效果。即使标记中两个嵌套的HTML元素,也可以用CSS来达到一些我们还未想到的效果。我们在此例中创造的仅仅是水平的标签栏,但滑动门亦可应用于许多其他的情形。阁下觉得如何呢?
本文的其他语言版本
英语(alistapart.com)
意大利语(gdesign.it)
俄语(id-as.com)
本文转摘自『IT学习者』http://www.itlearner.com/article/2006/3588.shtml
Google搜索从入门到精通v4.0(5)
动态网页技术介绍—ASP、JSP、CGI、PHP(2)
提高网站在Google中的排名
Solaris下PRO*C和OCI程序设计分析与比较2
Google搜索结果中的补充材料是什么意思?
我乐网获得千万美元风投资金
25 种能马上改善网站、提高浏览量的方法
Linux操作系统定时任务系统 Cron 入门
CSS中的滑动门技术
每日搜索评论2--什么是用搜索引擎搜不到的[增补版]
从静态网页到动态网页再到静态网页:企业网站建设方法轮回
中国网络经济不能仅依靠.com
表格对决CSS--一场生死之战(4)
表格对决CSS--一场生死之战(3)
德法投资1.2亿欧元开发新搜索引擎
沪ICP备 05020775号    联系电话:021-51872701 51302668 51302669 上海网络信息科技有限公司 版权所有