技术分享 如何实现CSS横向导航

开发 前端
网站导航是网站中最重要的元素,它从形式上主要由横向导航、纵向导航、下拉及多级菜单导航等三种形式,这里向大家简单描述一下CSS横向导航如何实现。

本文向大家介绍一下CSS横向导航的实现方法,首先让我们来看一下网站导航的概念,网站导航是网站中最重要的元素,是网站提供给用户的最直接最方便的访问网站内容的工具。网站导航从形式上主要由横向导航、纵向导航、下拉及多级菜单导航等三种形式。

CSS设计网站导航——CSS横向导航

网站导航是网站中最重要的元素,是网站提供给用户的最直接最方便的访问网站内容的工具。网站导航从形式上主要由横向导航、纵向导航、下拉及多级菜单导航等三种形式。

◆横向导航 作为门户网站的设计而言,主导航一般采用横向导航。由于门户网站下方文字较多,且每个频道均有一同的样式区分,因此在顶部固定一个区域设计统一风格且不占用过多空间的导航是最理想的选择,国内大部分门户均采用这种形式。

◆纵向导航 目前在门户网站的设计中已经不再流行,纵向导航更倾向于表达产品分类。

◆下拉导航 主要用于功能复杂的网站。在有些网站上也常见的。

总的来说导航的核心目标是设计一个简便快捷的操作入口,帮助用户快速到达网站中的相应内容,设计上应当根据网站类型及内容的需求设计合理的导航形式。这里我们将使用css对常用的三种导航形式进行设计,看看css是如何实现这些样式的。

CSS横向导航

使用css布局的形式制作导航与table布局有很大的区别,网站除了页面布局之外,最重要的就是导航部分,在这一步应该先制作出一个简单明快的导航系统,然后一步一步的完成具有设计效果的最终导航。在这里我们先构想出了顶部的初级设计样式,导航为一种横向导航形式。在开始css的导航制作之前,先让我们回想一下传统的表格式布局的导航制作。如果表格式布局实现如图所示的导航形式,需要设计一个表格table。导航目前共有7个栏目组成,需要设计一个1行7列的表格,并在每一个单元<td></td>标签中插入导航文字,然后 让每个单元格的文本居中,可以看一下实现代码:

  1. <tablewidthtablewidth="100%"border="0"cellpadding="0"cellspacing="0"> 
  2. <tr> 
  3. <tdaligntdalign="center">
  4. <ahrefahref="http://:www.aa25.cn/index.asp">主页</a></td> 
  5. <tdaligntdalign="center"> 
  6. <ahrefahref="http://:www.aa25.cn/Sort/List_4.html">DIV+CSS教程</a></td> 
  7. <tdaligntdalign="center"> 
  8. <ahrefahref="http://:www.aa25.cn/Sort/List_5.html">常用代码</a></td> 
  9. <tdaligntdalign="center"> 
  10. <ahrefahref="http://:www.aa25.cn/Sort/List_6.html">水晶图标</a></td> 
  11. <tdaligntdalign="center"> 
  12. <ahrefahref="http://:www.aa25.cn/Sort/List_7.html">幻灯图片</a></td> 
  13. <tdaligntdalign="center"> 
  14. <ahrefahref="http://:www.aa25.cn/Sort/List_10.html">软件下载</a></td> 
  15. <tdaligntdalign="center"> 
  16. <ahrefahref="http://:www.aa25.cn/css2/">CSS2.0实用手册</a></td> 
  17. </tr> 
  18. </table> 
  19. </body> 
  20.  

 通过代码可以看到,设定了表格的宽高,并把边框边距设为0以便于隐藏表格线,然后让第个单元格的文本对齐方式为居中,就实现了简单导航,这里的要点在于设计了一个与导航形式类似的数据表,将导航装入每一格数据中。

◆再来看一下如何设计CSS横向导航系统。

DIV+CSS布局的核心是实现了表现和内容的分离,先来认识一下内容部分的代码编写方式:

  1. <ulidulid="nav"> 
  2. <li><ahrefahref="http://:www.aa25.cn/">主页</a></li> 
  3. <li><ahrefahref="http://:www.aa25.cn/">DIV+CSS教程</a></li> 
  4. <li><ahrefahref="http://:www.aa25.cn">常用代码</a></li> 
  5. <li><ahrefahref="http://:www.aa25.cn/">水晶图标</a></li> 
  6. <li><ahrefahref="http://:www.aa25.cn/">幻灯图片</a></li> 
  7. <li><ahrefahref="http://:www.aa25.cn/">软件下载</a></li> 
  8. <li><ahrefahref="http://:www.aa25.cn/css2/">CSS2.0实用手册</a></li> 
  9. </ul> 
  10.  

这段代码使用了一个新的元素ul,在导航之前,先简要了解一下ul元素。ul是css而已中使用得很广泛的一种元素主要用来描述列表型内容,每一个<ul></ul>表示其中的内容为一个列表块,块中的每一条列表数据用<li></li>来描述,可以看一下不加任何样式的ul的实现显示效果。

不加任何样式的ul效果

如图所示,作为一种列表型内容,ul默认样式就加上了圆点状序号,而且默认为从上至下排列。为什么我们的导航系统要使用ul元素?实际上导航也是种列表,可以理解为导航列表,每一个列表数据就是导航中的一个导航频道,同样也可以使用二层嵌套的div来实现一个导航的代码结构,但相对于ul列表来说,div显得过于复杂,ul的使用还是应当重点放在块状型区域,而对于简单的只有文字的导航来说,ul就更为轻巧灵活。#p#

◆在代码中我们也为ul定义了一个id叫nav,接下来为这个ul及其下面的对象编写代码让它实现需要的导航效果。

把第一段样式编写给了ul下的li对象,我们希望列表中的每一个一列表项不再遵行其默认的从上至下的排列,因此给#navli指定了float:left;的属性,如同div的float:left;一样,也是通过浮动定位的原理使得自身向左浮动,从而使下一个对象贴紧该对象的右边,最终所有的li都具有了向左浮动的特性,从而形式了横向的排列形式。

CSS横向导航的关键在于a链接对象的样式控制,在这里使用#navlia{}给li下的每一个a链接对象编写了样式:

display:block是这里的重点,它使得a链接对象的显示方式由一段文本改为一个块状对象,和div的特性相同,div默认状态下是一个块状对象,a链接对象默认状态下是一个普通文本——内联对象,这样就没有办法使得a链接对象能够像一个方块状按钮一样去运作,使用display:block之后,a链接对象将能够像div和其它元素一样成为一个块状对象(block),就可以使用css外边距、内边距等属性给a链接标签加上一系列的样式了。

通过display:block的应用,我们让a标签元素有了宽度width:97px,高度height:22px,并在每一个a之间使用margin-left:2px;形式了左侧的外边距为2px。

display属性是css中对对象显示模式操作的一个属性,主要用于改变对象的显示方式。在css中,所有对象都有自己默认的显示方式,如a与span等对象,它们默认为一种行间内联对象,显示时它们不会影响其它任何对象的显示,如当应用span之后,span之后的内容会自动排在span的右边,像一段文本一样,而div这类对象的默认显示为块状对象,它们默认状态下便占据了一行的空间,并像一个方块一样显示在页面中,通过display:block,将a也变成了块状对象。此外,display还有众多使用方式将在以后逐步了解到。

  1.  
  2. <style> 
  3. #navli{float:left;}  
  4. #navlia{color:#000000;text-decoration:none;  
  5. padding-top:4px;display:block;width:120px;  
  6. height:22px;text-align:center;  
  7. background-color:#ececec;margin-left:2px;}  
  8. </style> 
  9.  
  10. <ulidulid="nav"> 
  11. <li><ahrefahref="/index.asp">主页</a></li> 
  12. <li><ahrefahref="/Sort/List_4.html">DIV+CSS教程</a></li> 
  13. <li><ahrefahref="/Sort/List_5.html">常用代码</a></li> 
  14. <li><ahrefahref="/Sort/List_6.html">水晶图标</a></li> 
  15. <li><ahrefahref="/Sort/List_7.html">幻灯图片</a></li> 
  16. <li><ahrefahref="/Sort/List_10.html">软件下载</a></li> 
  17. <li><ahrefahref="/css2/">CSS2.0实用手册</a></li> 
  18. </ul> 
  19.  

预览一下效果,已经像个CSS横向导航的模样了,不过鼠标移上去没有任何响应,这样对于用户体验来说是非常不友好的,因此需要通过一些带有交互响应的操作来提示用户对象是可以点击的:

  1. #navlia:hover{background-color:#bbbbbb;color:#ffffff;}  
  2.  

这次预览效果,用鼠标移上一个频道,响应出现了,这样我们的导航已经变得友好多了。

  1. <!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN"  
  2. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
  3. <htmlxmlnshtmlxmlns="http://www.w3.org/1999/xhtml"> 
  4. <head> 
  5. <metahttp-equivmetahttp-equiv="Content-Type"content="text/html;charset=utf-8"/> 
  6. <style> 
  7. #nav{width:860px;margin:0auto;background:#ccc}  
  8. #navli{float:left;}  
  9. #navlia{color:#000000;text-decoration:none;  
  10. padding-top:4px;display:block;width:120px;height:22px;  
  11. text-align:center;background-color:#ececec;margin-left:2px;}  
  12. #navlia:hover{background-color:#bbbbbb;color:#ffffff;}  
  13. </style> 
  14. </head> 
  15. <body> 
  16. <ulidulid="nav"> 
  17. <li><ahrefahref="/index.asp">主页</a></li> 
  18. <li><ahrefahref="/Sort/List_4.html">DIV+CSS教程</a></li> 
  19. <li><ahrefahref="/Sort/List_5.html">常用代码</a></li> 
  20. <li><ahrefahref="/Sort/List_6.html">水晶图标</a></li> 
  21. <li><ahrefahref="/Sort/List_7.html">幻灯图片</a></li> 
  22. <li><ahrefahref="/Sort/List_10.html">软件下载</a></li> 
  23. <li><ahrefahref="/css2/">CSS2.0实用手册</a></li> 
  24. </ul> 
  25. </body> 
  26. </html> 
  27.  

 注:许多朋友不知道怎么居中,所以特意改成居中的形式,初级导航模块完成,不妨对比一下使用表格式布局和css而已在这方面的优劣,你会发现,css的优势是显而易见的。

【编辑推荐】

  1. 编码过程中灵活使用CSS注释
  2. CSS布局浮动(float)和定位(position)属性的区别
  3. 设置CSS表格与CSS表单的样式
  4. 深入剖析CSS排版思想及其用法
  5. 鼠标经过时改变DIV背景颜色的三种途径


 

责任编辑:佚名 来源: aa25.cn
相关推荐

2010-09-13 14:17:42

CSS纵向导航菜单

2023-10-23 08:48:04

CSS宽度标题

2010-08-24 13:05:23

CSS超链接

2010-09-09 11:03:32

CSS样式

2023-06-06 15:38:28

HTMLCSS开发

2023-12-11 17:20:36

抽屉式导航ArkUI应用开发

2010-09-02 15:48:47

CSSvisibility属

2020-03-02 15:02:26

B端导航设计

2010-07-28 08:44:12

Flex2.0

2011-05-11 15:10:21

jQueryCSS导航栏

2013-05-16 15:08:33

2022-12-12 11:11:05

2010-07-15 15:21:07

Perl线程

2010-06-02 16:09:05

SVN协议

2011-09-02 10:03:40

jQuery滚动图片

2010-07-28 12:41:18

Flex组件

2022-11-15 18:31:37

React

2010-08-31 16:49:58

2010-09-02 14:30:57

DIV CSS

2010-06-01 18:49:19

删除SVN备份
点赞
收藏

51CTO技术栈公众号