原文地址: http://www.cnblogs.com/amylis_chen/archive/2011/09/24/2188398.html

第一步:建立一个无序列表 我们先建立一个无序列表,来建立菜单的结构。代码是:

<ul> <li><a href="1">首页</a></li> <li><a href="2">产品介绍</a></li> <li><a href="3">服务介绍</a></li> <li><a href="4">技术支持</a></li> <li><a href="5">立刻购买</a></li> <li><a href="6">联系我们</a></li> </ul>

第二步:隐藏li的默认样式 因为看起来不是很好看,菜单通常都不需要li默认的圆点,我们给UL定义一个样式来消除这些圆点。

当然,为了更好的控制整个菜单,我们把菜单放在一个div里。页面代码变成:

<div class="test"> <ul> <li><a href="1">首页</a></li> <li><a href="2">产品介绍</a></li> <li><a href="3">服务介绍</a></li> <li><a href="4">技术支持</a></li> <li><a href="5">立刻购买</a></li> <li><a href="6">联系我们</a></li> </ul> </div>

CSS定义为:

.test ul{list-style:none;}

说明:“.test ul”表示我要定义的样式将作用在test的层里的ul标签上。

现在的效果是没有圆点了:

第三步:关键的浮动 这里是菜单变成横向的关键,我们给li元素加上一个“float:left;”属性,让每个li浮动在前面一个li的左面。

CSS定义为:

.test li{float:left;}

菜单变横向了。就这么简单!下面需要做的就是优化细节了。

第四步:调整宽度 菜单都挤在一起不好看怎么办?我们来调节li的宽度。

在CSS中添加定义width:100px指定一个li的宽度是100px,当然你可以根据你的需要调整数值:

.test li{float:left;width:100px;}

效果是:

如果我们同时定义外面div的宽度,li就会根据div的宽度自动换行,例如定义了div宽350px,6个li的总宽度是600px,一行排不下就自动变成两行:

.test{width:350px;}

第五步:设置基本链接效果 接下来,我们通过CSS来设置链接的样式,分别定义:link、:visited、:hover的状态

.test a:link{color:#666;background:#CCC;text-decoration:none;} .test a:visited{color:#666;text-decoration:underline;} .test a:hover{color:#FFF; font-weight:bold;text-decoration:underline;background:#F00;}

第六步:将链接以块级元素显示 有朋友问,菜单链接的背景色为什么没有填满整个li的宽度?恩,解决的方法很简单,在a的样式定义中增加display:block,使链接以块级元素显示。

同时我们微调了如下细节:

用text-align:center将菜单文字居中; 用height:30px增加背景的高度; 用margin-left:3px使每个菜单之间空3px距离; 用line-height:30px;定义行高,使链接文字纵向居中; CSS定义象这样:

.test a{display:block;text-align:center;height:30px;} .test li{float:left;width:100px;background:#CCC;margin-left:3px;line-height:30px;}

这样就漂亮多了吧。

第七步:定义背景图片 我们通常都会在每个链接前加一个小图标,这样导航更清楚。CSS是采用定义li的背景图片来实现的:

.test a:link{color:#666;background:url(arrow_off.gif) #CCC no-repeat 5px 12px;text-decoration:none;} .test a:hover{color:#FFF; font-weight:bold;text-decoration:none;background:url(arrow_on.gif) #F00 no-repeat 5px 12px;}

说明:“background:url(arrow_off.gif) #CCC no-repeat 5px 12px;”这句代码是一个CSS缩写,表示背景图片是arrow_off.gif;背景颜色是#CCC;背景图片不重复"no-repeat",背景图片的位置是左边距5px、上边距12px;

默认状态下,图标为arrow.off.gif,当鼠标移动到链接上,图标变为arrow_on.gif

效果变成:

现在css的完整代码是:

.test ul{list-style:none;} .test li{float:left;width:100px;background:#CCC;margin-left:3px;line-height:30px;} .test a{display:block;text-align:center;height:30px;} .test a:link{color:#666;background:url(arrow_off.gif) #CCC no-repeat 5px 12px;text-decoration:none;} .test a:visited{color:#666;text-decoration:underline;} .test a:hover{color:#FFF; font-weight:bold;text-decoration:none;background:url(arrow_on.gif) #F00 no-repeat 5px 12px;}

页面的完整代码是:

<div class="test"> <ul> <li><a href="1">首页</a></li> <li><a href="2">产品介绍</a></li> <li><a href="3">服务介绍</a></li> <li><a href="4">技术支持</a></li> <li><a href="5">立刻购买</a></li> <li><a href="6">联系我们</a></li> </ul> </div>

好了,主要步骤就是这7步,立刻拷贝和修改代码试试,你也可以用CSS做横向菜单了!

[转载] ul li css 做横向菜单的更多相关文章

  1. DIV+CSS布局重新学习之css控制ul li实现2级菜单

    竖状菜单: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w ...

  2. 用CSS做导航菜单的4个理由

    导航结构在网站设计中是起到决定性作用的,导航菜单/栏常常通过颜色.排版.形状和一些图片来帮助网站创造更好的视觉和感受,它是网页设计的关键元素.虽然网站导航菜单的外观是网页设计中关系到整个设计成败与否的 ...

  3. [笔记]ul>li>a做分布时, 让其居中显示效果

    结构: <div id="page"> <ul> <li><a href="#">首页</a>< ...

  4. ul li menu

    第一步:建立一个无序列表我们先建立一个无序列表,来建立菜单的结构.代码是: <ul><li><a href="1">首页</a>&l ...

  5. ul li横向排列及圆点处理

    如何用CSS制作横向菜单 让ul li横向排列及圆点处理   第一步:建立一个无序列表 我们先建立一个无序列表,来建立菜单的结构.代码是:<ul> <li><a href ...

  6. ul li设置横排,并除去li前的圆点

    效果预览:http://hovertree.com/texiao/css/ 如何用CSS制作横向菜单 让ul li横向排列及圆点处理 我们先建立一个无序列表,来建立菜单的结构.代码是: <ul& ...

  7. UL/LI

    如何用CSS制作横向菜单 让ul li横向排列及圆点处理    我们先建立一个无序列表,来建立菜单的结构.代码是: <ul><li><a href="1&quo ...

  8. 利用css制作横向和纵向时间轴

    Html代码: <div class="container"> <p>原文地址:http://www.cnblogs.com/xiaofeixiang/&l ...

  9. CSS + ul li 横向排列的两种方法

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

随机推荐

  1. openstry lua redis实现负载均衡

    需求: 通过URI地址http://10.0.0.148/test2?uuid=123的uuid参数值的第一位,去实现redis的负载均衡 若uuid第一位为1,那么去10.0.0.148的redis ...

  2. 如何在Windows命令行(DOS界面)中调用 编译器 来编译C/C++源程序

    首先说明一下背景: 为什么要在DOS界面编译C/C++源程序?有很多现成的开发环境(IDE)如:vs, vc++等,这些开发环境集成了编译,调试,使用起来很方便,而且图形化操作界面,简洁明了.但是在开 ...

  3. 多版本opencv管理; find_package()的原理解析

    近期用cmake编译程序时,报错找不到opencv2.由于我电脑里安装了多个版本的opencv,管理不善,借此机会梳理一下思路. 1. Cmake -- find_package(Opencv REQ ...

  4. 饥饿的牛(dp一维最大覆盖)

    问题 H: 饥饿的牛 时间限制: 1 Sec  内存限制: 128 MB提交: 12  解决: 12[提交][状态][讨论版][命题人:外部导入][Edit] [TestData] [同步数据] 题目 ...

  5. 5、Zookeeper命令操作

    一.Zookeeper的四字命令 Zookeeper支持某些特定的四字命令字母与其的交互.他们大多数是查询命令,用来获取Zookeeper服务的当前状态及相关信息.用户在客户端可以通过telnet或n ...

  6. kubernetes核心组件kube-proxy 学习总结

    一.  kube-proxy 和 service  kube-proxy是Kubernetes的核心组件,部署在每个Node节点上,它是实现Kubernetes Service的通信与负载均衡机制的重 ...

  7. 关于CoreData的用法

    有些同事觉得CoreData是一个看不懂,理解不清的神秘东东,其实ios的本地数据储存是一个sqlite数据库,一个简易的数据库,而这个CoreData是否支持所有储存的数据呢,显然不是的,站在我的角 ...

  8. Linux背背背(4)vim操作

    目录 1.打开文件 2.vim的三种模式 3.扩展 (关于vi 和 vim 的区别,它们都是多模式编辑器,不同的是vim 是vi的升级版本,它不仅兼容vi的所有指令,而且还有一些新的特性在里面.) 1 ...

  9. Linux下Memcached安装与启用

    http://www.linuxidc.com/Linux/2016-07/133423.htm

  10. openStack 重新resize时会进行重新调度,可能在本机Resize 扩展资源,也可能存在的情况时 ,新扩展的资源在当前节点不足分配,整个虚拟机将进行迁移调度,进行异机迁移时需要迁移 的两台主机间能使用nova系统用户经passless登录

    openStack 重新resize时会进行重新调度,可能在本机Resize 扩展资源,也可能存在的情况时 ,新扩展的资源在当前节点不足分配,整个虚拟机将进行迁移调度,进行异机迁移时需要迁移 的两台主 ...