Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 271|回复: 0

[CSS学习]Html+css编写的TAB页

[复制链接]
  • TA的每日心情
    开心
    2021-3-12 23:18
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2014-10-29 23:55:13 | 显示全部楼层 |阅读模式
    最近在研究CSS,正好结合项目做了一个灵活的Tab页,使用纯HTML+CSS实现,正好总结一下。 首先看一下预览界面:
      下面开始讲述一下完成上述页面的步骤。 1. 构建HTML
           构建HTML是整个过程最基础的部分。我们构建HTML比较关键的一个原则就是“还HTML标签其本来的含义”。所以在这里,我们应该合理分析一下期望做到的HTML的结构的情况,并加以分析,选择比较合适的HTML标签,而不是采用非标准的Table布局或者充斥着大量div和class的布局方式。事实上,现在存在着一种误区,就是凡事采用了DIV+CSS的方式进行页面编程的就是Web标准的,其实这是完全错误的观点,很容易就导致了“多div症”(divitus)或者“多类症”(classitis)。

           回到正题,我们分析一下页面样式,可以将整个Tab页分成2个部分,分别是一级菜单和二级菜单,他们有类似的特点,并以横向方式排列。HTML标签中的无序列表就可以反映出这种逻辑关系。所以我们分别采用2个无序列表来表示一级菜单和二级菜单。代码如下:
      

    代码


      
       
       
       <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>   
                   <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>   
       
      

    render_code();
       其中,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;      
       }     
       
      

    render_code();
       3. 使宽度自适应 我们在这里使用滑动门技术来做宽度自适应。下面简单介绍一下滑动门技术 简单来说,就是在LI上应用一幅大图像背景,并让这个背景居于右侧 然后在A上应用一个小图像背景,并让这个背景居于左侧,遮住大图像边缘 这样无论菜单文字内容长度怎么变,都不会破坏原来的结构了。 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;   
       }     
       
      

    render_code();
    在<div id="attendance" class="mainNavg">的代码中,我们可以使用不同的id作为选择器,由于CSS中的选择器id的优先级将大于class,所以只要根据id配合上li上面的id,就可以达到动态选择高亮选中的目的。 事实上,由于我们的页面都是动态的,所以id可以由后台生成,这样就可以通过id的不同组合非常精巧的实现了我们的需求。 5. 小技巧 最后可能还有一个问题你在想怎么实现的,就是高亮的tab如何把下面的横线遮掉的 很简单,图片上的小技巧。将高亮的图片高度设置为25px,而普通的图片设置为24px。然后通过padding,就可以将那根横线遮去了。 我们可以使用类似的方式,把二级菜单也做出来,这里就不详细叙述了。大家可以结合源码试一下。

      
      
       
       

         
       

         
       
      
    复制代码

    源码下载:http://file.javaxxz.com/2014/10/29/235512421.zip
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-5-18 16:50 , Processed in 0.326188 second(s), 38 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表