使用HTML+CSS编写一个灵活的Tab页
Posted on使用HTML+CSS编写一个灵活的Tab页 - CSS专栏 - JavaEye知识库
知识库 → 专栏: CSS专栏 → 使用HTML+CSS编写一个灵活的Tab页
使用HTML+CSS编写一个灵活的Tab页
原创作者: downpour 阅读:892次 评论:0条 更新时间:2007-02-12
最近在研究CSS,正好结合项目做了一个灵活的Tab页,使用纯HTML+CSS实现,正好总结一下。 首先看一下预览界面: 样例HTML可以访问:http://www.demo2do.com/htmldemo/school/attendance/AttendanceGlobal.html 下面开始讲述一下完成上述页面的步骤。
构建HTML 构建HTML是整个过程最基础的部分。我们构建HTML比较关键的一个原则就是“还HTML标签其本来的含义”。所以在这里,我们应该合理分析一下期望做到的HTML的结构的情况,并加以分析,选择比较合适的HTML标签,而不是采用非标准的Table布局或者充斥着大量div和class的布局方式。事实上,现在存在着一种误区,就是凡事采用了DIV+CSS的方式进行页面编程的就是Web标准的,其实这是完全错误的观点,很容易就导致了“多div症”(divitus)或者“多类症”(classitis)。 回到正题,我们分析一下页面样式,可以将整个Tab页分成2个部分,分别是一级菜单和二级菜单,他们有类似的特点,并以横向方式排列。HTML标签中的无序列表就可以反映出这种逻辑关系。所以我们分别采用2个无序列表来表示一级菜单和二级菜单。代码如下: Java代码
其中,2个div将菜单级别划分开。其实在以后还会有其他的功效。此时,我们不妨View一下这张页面,我们可以惊喜的发现,这张页面就想Word文档一样,是可读的,这一点我们可以在整个过程做完以后再一次验证。构建基本CSS 先简单的让ul横向排列,这里面要注意元素float之后要注意清理 然后通过分别在LI 和 A 元素上应用背景来实现主菜单样式,这里有个比较重要的地方是A这个元素变成块级元素(display: block),这样可以便于我们下面做一些处理,也能使整个菜单应用到链接样式。 而其中的line-height,恰恰可以使A中的字纵向居中。text-align使得A中的字横向居中。 Java代码
.navg .mainNavg UL {
- margin: 0;
- padding: 0;
- list-style: none;
- }
- .navg .mainNavg UL LI {
- float: left;
- background-color: /#E1E9F8;
- background: url(../images/tab_right.gif) no-repeat right top;
- margin: 10px 3px;
- height: 25px;
- }
- .navg .mainNavg UL LI A {
- display: block;
- height: 25px;
- padding: 0 25px;
- line-height: 24px;
- background-color: /#E1E9F8;
- background: url(../images/tab_left.gif) no-repeat left top;
- text-decoration: none;
- float: left;
- text-align:center;
- color: /#fff;
- font-weight: bold;
- }
.navg .mainNavg UL { margin: 0; padding: 0; list-style: none; } .navg .mainNavg UL LI { float: left; background-color: /#E1E9F8; background: url(../images/tab_right.gif) no-repeat right top; margin: 10px 3px; height: 25px; } .navg .mainNavg UL LI A { display: block; height: 25px; padding: 0 25px; line-height: 24px; background-color: /#E1E9F8; background: url(../images/tab_left.gif) no-repeat left top; text-decoration: none; float: left; text-align:center; color: /#fff; font-weight: bold; } - 使宽度自适应 我们在这里使用滑动门技术来做宽度自适应。下面简单介绍一下滑动门技术 简单来说,就是在LI上应用一幅大图像背景,并让这个背景居于右侧 然后在A上应用一个小图像背景,并让这个背景居于左侧,遮住大图像边缘 这样无论菜单文字内容长度怎么变,都不会破坏原来的结构了。
当前菜单高亮显示 如果高亮当前页面,这个有很多种做法,最死板的是在每个页面上显式的定义类。 但是对于web项目来说,页面多数是动态的,所以这样不是最理想的方法。 我这里采用的方法是CSS选择器的灵活使用 Java代码
/#attendance /#attendanceNavg,
- /#teach /#teachNavg,
- /#communication /#communicationNavg,
- /#system /#systemNavg {
- background: url(../images/tab_right_on.gif) no-repeat right top;
- }
- /#attendance /#attendanceNavg A,
- /#teach /#teachNavg A,
- /#communication /#communicationNavg A,
- /#system /#systemNavg A {
- background: url(../images/tab_left_on.gif) no-repeat left top;
- color: /#0000ff;
- }
/#attendance /#attendanceNavg, /#teach /#teachNavg, /#communication /#communicationNavg, /#system /#systemNavg { background: url(../images/tab_right_on.gif) no-repeat right top; } /#attendance /#attendanceNavg A, /#teach /#teachNavg A, /#communication /#communicationNavg A, /#system /#systemNavg A { background: url(../images/tab_left_on.gif) no-repeat left top; color: /#0000ff; } 在的代码中,我们可以使用不同的id作为选择器,由于CSS中的选择器id的优先级将大于class,所以只要根据id配合上li上面的id,就可以达到动态选择高亮选中的目的。 事实上,由于我们的页面都是动态的,所以id可以由后台生成,这样就可以通过id的不同组合非常精巧的实现了我们的需求。- 小技巧 最后可能还有一个问题你在想怎么实现的,就是高亮的tab如何把下面的横线遮掉的 很简单,图片上的小技巧。将高亮的图片高度设置为25px,而普通的图片设置为24px。然后通过padding,就可以将那根横线遮去了。 我们可以使用类似的方式,把二级菜单也做出来,这里就不详细叙述了。大家可以结合源码试一下。 附件为 css( 转) "css( 转)") | css基础--滤镜特效
评论 共 0 条 发表评论
发表评论
表情图标
字体颜色: 标准深红红色橙色棕色黄色绿色橄榄青色蓝色深蓝靛蓝紫色灰色白色黑色 字体大小: 标准1 (xx-small)2 (x-small)3 (small)4 (medium)5 (large)6 (x-large)7 (xx-large) 对齐: 标准居左居中居右
提示:选择您需要装饰的文字, 按上列按钮即可添加上相应的标签 您还没有登录,请登录后发表评论(快捷键 Alt+S / Ctrl+Enter)
文章信息
相关新闻
- 最常用和实用的CSS技巧
- Firefox支持CSS3多重背景
-
相关讨论
- 最简单的css滑动门技术
- 组织架构图(水平方向的树视图)的实现
- 用CSS+JQuery实现的动态导航
- javascript + css 利用div的scroll属性让TAB动感十足
相关博客
- 使用HTML+CSS编写一个灵活的Tab页
- 使用HTML+CSS编写一个灵活的Tab页
- [转]使用HTML+CSS编写一个灵活的Tab页
- (续)精彩导航
- 支持IE和FF的div+css选项卡
- 首页
- 新闻
- 论坛
- 问答
- 知识库
- 博客
- 圈子
- 猎头
- 招聘
- 服务
- Web
- Ruby
- Python
- 敏捷
- MySQL
- 普元
- Dorado
- 金蝶中间件
- 图书
- 广告服务
- JavaEye黑板报
- 关于我们
- 联系我们
- 友情链接
© 2003-2009 JavaEye.com. All rights reserved. [ 沪ICP备05023328号 ]