彻底弄懂CSS盒子模式之二(导航栏实例)(2)

作者:唐国辉 时间:2007-05-11 16:52:00 

  先来分析一下这个导航栏要用到多少个盒子,在分析之前我们还是要形成一种思想:尽量减少和优化XHTML代码,让他们基本上都有语义。这个导航栏最少的盒子实现是:最外边一个大盒子(ul),这个盒子与1像素高的背景图片等宽,里面又有五个小盒子(li)分别装着每一个导航栏,这个盒子与“勾月”图形等高,导航栏这个盒子里面又装着一个稍小的盒子(a),这个盒子又装着一个黄色的修饰盒子(a的左边框,这里勉强理解为盒子,因为它不像一般的边框那么细,在网页中看起来像个盒子)和一个有文字的链接盒子(a的内容)。
网页结构代码:

<ul id="nav">
    <li>
      <a href="#">彻底弄懂CSS盒子模式1</a>
    </li>
    
    <li>
      <a href="#">彻底弄懂CSS盒子模式2</a>
    </li>
    
    <li>
      <a href="#">彻底弄懂CSS盒子模式3</a>
    </li>
    
    <li>
      <a href="#">彻底弄懂CSS盒子模式4</a>
    </li>
    
    <li>
      <a href="#">彻底弄懂CSS盒子模式5</a>
    </li>
</ul>


1.现在正式开始做,做之前初始化一下各签标的边界和填充,这里用样式:



* {
    margin: 0px;
    padding: 0px;
    }


2.组装最外边的大盒子ul,宽200px,高为自动auto或者干脆不要,背景图片为bj.jpg,背景纵向重复,用<ul id=”nav”>方式引用样式,用到样式:


#nav {
    background: url(bj.jpg) repeat-y;
    width: 200px;
    overflow: hidden;
}




3.组装每条导航的盒子li,这个盒子与“勾月”图形等高,并把“勾月”图形以背景形式放在这个盒子的左边,并用15px的填充把盒子内容区块推向正中合适位置(当然你也可以考虑给子级a指定边界属性来实现),并让这个盒子靠左边对齐(因为这个盒子的宽度比外边的大盒子小,如果相等则可以不用考虑对齐方式),这里用到样式float的属性,本人没有写入样式中则取其默认值,样式代码如下:



#nav li {
    background: url(lan.gif) no-repeat left center ;
    height: 35px;
    width: 190px;
    padding-top:15px;
}



4.组装链接盒子a,这里用到样式: display: block;让链接以块状方式呈现,并为链接安排背景图片,为了安全起见设置背景不重复,垂直居中(如果浏览器出错解释错误,而你的背景又不是纯色的,那么盒子过大导致的背景重复将会影响网页美观),链接文字样式去除下划线,整个盒子右对齐,样式如下:




#nav a {
    background: url(lanbj2.gif) no-repeat left center;
    text-decoration: none;
    height: 20px;
    width: 155px;
    display: block;
    float: right;
    padding: 0px 0px 0px 5px;
    font-weight: bold;
    font-size: 9pt;
    line-height: 20px;
    color: #630;
}



5.组装黄色修饰块盒子(a的左边框,如果又独立用一个盒子来做就不科学了,因为此方法最简单),直接给a加入下面一条样式即可,样式代码如下:



#nav a {
    border-left:10px solid #f90;
}



6.最后简单为鼠标移到链接上时,链接风格的改变指定一个样式:


#nav a:hover {
    background-image: url(lanbj3.gif);
    color: #FFFFFF;
}




至此完成样式代码编写,上面已给出内容部分的结构代码,把它们结合到网页中就算是完成本次导航栏的制作。再次感谢本专栏斑竹blankzheng指点优化。

源文件打包下载  xhtml.rar

标签:CSS导航,导航
0
投稿

猜你喜欢

  • dir()、readdir()、scandir()和glob()四种遍历目录方法及性能分析

    2023-05-25 11:18:27
  • Python实现字典的key和values的交换

    2021-08-18 03:45:49
  • Vue.js每天必学之过滤器与自定义过滤器

    2024-05-09 10:41:36
  • 百分百弹窗

    2013-08-07 07:41:06
  • 解读SQL一些语句执行后出现异常不会回滚的问题

    2024-01-22 12:52:59
  • 如何在页面中对不同的数据进行相同的处理?

    2010-06-26 12:30:00
  • Python jieba分词添加自定义词和去除不需要长尾词的操作方法

    2023-05-05 11:20:35
  • 实例讲解Python中SocketServer模块处理网络请求的用法

    2021-04-16 13:25:27
  • Python编程基础之输入与输出

    2021-03-03 10:06:07
  • 详解Python 字符串相似性的几种度量方法

    2023-06-19 14:12:39
  • python如何重载模块实例解析

    2021-10-13 03:47:56
  • 在win10和linux上分别安装Python虚拟环境的方法步骤

    2023-09-06 18:40:01
  • JavaScript 组件之旅(四):测试 JavaScript 组件

    2009-10-13 20:32:00
  • sqlserver 多表关联时在where语句中慎用trim()方法

    2024-01-16 06:37:32
  • C#数据库操作的示例详解

    2024-01-15 05:46:32
  • pytorch-神经网络拟合曲线实例

    2022-03-17 18:17:30
  • pandas 选择某几列的方法

    2022-04-08 13:14:36
  • Python学习之字典和集合的使用详解

    2022-11-01 19:54:21
  • python实现井字棋游戏

    2022-02-27 15:16:49
  • Python操作MySQL数据库的方法

    2024-01-28 10:49:27
  • asp之家 网络编程 m.aspxhome.com