如何⽤HTML+CSS编写灵活的Tab页
近在研究CSS,正好结合项⽬做了⼀个灵活的Tab页,使⽤纯HTML+CSS实现,正好总结⼀下。
⾸先看⼀下预览界⾯:
下⾯开始讲述⼀下完成上述页⾯的步骤。
1. 构建HTML
构建HTML是整个过程最基础的部分。我们构建HTML⽐较关键的⼀个原则就是“还HTML标签其本来的含义”。所以在这⾥,我们应该合理分析⼀下期望做到的HTML的结构的情况,并加以分析,选择⽐较合适的HTML标签,⽽不是采⽤⾮标准的Table布局或者充斥着⼤量div 和class的布局⽅式。事实上,现在存在着⼀种误区,就是凡事采⽤了DIV+CSS的⽅式进⾏页⾯编程的就是Web标准的,其实这是完全错误的观点,很容易就导致了“多div症”(divitus)或者“多类症”(classitis)。
回到正题,我们分析⼀下页⾯样式,可以将整个Tab页分成2个部分,分别是⼀级菜单和⼆级菜单,他们
有类似的特点,并以横向⽅式排列。HTML标签中的⽆序列表就可以反映出这种逻辑关系。所以我们分别采⽤2个⽆序列表来表⽰⼀级菜单和⼆级菜单。代码如下:新建⼀个前端学习qun438905713,在⾥⼤多数都是零基础学习者,⼤家相互帮助,相互解答,并且还准备很多学习资料,欢迎零基础的⼩伙伴来⼀起交流。
<div class="navg">
<div id="attendance" class="mainNavg">
<ul>
<li id="attendanceNavg"><a href="#">考勤管理</a></li>
<li id="teachNavg"><a href="#">教学管理</a></li>
<li id="communicationNavg"><a href="#">家校互通</a></li>
<li id="systemNavg"><a href="#">系统管理</a></li>
</ul>
</div>
<div id="dailyAttendance" class="secondaryNavg">
<ul>
用html和css制作百度页面<li id="dailyAttendanceNavg"><a href="#">当天考勤</a></li>
<li id="leaveApproveNavg"><a href="#">请假审批</a></li>
<li id="attendanceStatisticsNavg"><a href="#">考勤统计</a></li>
<li id="attendanceCollectNavg"><a href="#">考勤汇总</a></li>
</ul>
</div>
</div>
其中,2个div将菜单级别划分开。其实在以后还会有其他的功效。此时,我们不妨View⼀下这张页⾯,
我们可以惊喜的发现,这张页⾯就想Word⽂档⼀样,是可读的,这⼀点我们可以在整个过程做完以后再⼀次验证。
2. 构建基本CSS
先简单的让ul横向排列,这⾥⾯要注意元素float之后要注意清理
然后通过分别在LI 和 A 元素上应⽤背景来实现主菜单样式,这⾥有个⽐较重要的地⽅是A这个元素变成块级元素(display: block),这样可以便于我们下⾯做⼀些处理,也能使整个菜单应⽤到链接样式。
⽽其中的line-height,恰恰可以使A中的字纵向居中。text-align使得A中的字横向居中。 代码如下:
.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;
}
3. 使宽度⾃适应
我们在这⾥使⽤滑动门技术来做宽度⾃适应。下⾯简单介绍⼀下滑动门技术
简单来说,就是在LI上应⽤⼀幅⼤图像背景,并让这个背景居于右侧
然后在A上应⽤⼀个⼩图像背景,并让这个背景居于左侧,遮住⼤图像边缘
新建⼀个前端学习qun438905713,在⾥⼤多数都是零基础学习者,⼤家相互帮助,相互解答,并且还准备很多学习资料,欢迎零基础的⼩伙伴来⼀起交流。
这样⽆论菜单⽂字内容长度怎么变,都不会破坏原来的结构了。
4. 当前菜单⾼亮显⽰
如果⾼亮当前页⾯,这个有很多种做法,最死板的是在每个页⾯上显式的定义类。
但是对于web项⽬来说,页⾯多数是动态的,所以这样不是最理想的⽅法。
我这⾥采⽤的⽅法是CSS选择器的灵活使⽤,代码如下:
#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;
}
在<div id="attendance" class="mainNavg">的代码中,我们可以使⽤不同的id作为选择器,由于CSS中的选择器id的优先级将⼤于class,所以只要根据id配合上li上⾯的id,就可以达到动态选择⾼亮选中的⽬的。
事实上,由于我们的页⾯都是动态的,所以id可以由后台⽣成,这样就可以通过id的不同组合⾮常精巧的实现了我们的需求。
5. ⼩技巧
最后可能还有⼀个问题你在想怎么实现的,就是⾼亮的tab如何把下⾯的横线遮掉的
很简单,图⽚上的⼩技巧。将⾼亮的图⽚⾼度设置为25px,⽽普通的图⽚设置为24px。然后通过padding,就可以将那根横线遮去了。
我们可以使⽤类似的⽅式,把⼆级菜单也做出来,这⾥就不详细叙述了。⼤家可以结合源码试⼀下。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。