码迷,mamicode.com
首页 > 其他好文 > 详细

7.2 双斜角横线菜单

时间:2014-06-20 16:45:55      阅读:228      评论:0      收藏:0      [点我收藏+]

标签:des   style   class   blog   code   java   

在这个案例中,将制作如图1所示的菜单。鼠标指针经过某个菜单项时,显示灰色背景色,同时在上下两侧各产生一条带有斜角的横线。

该实例文件位于网页学习网CSS教程资源中的“第7章\02\bevel-navi.htm”。

bubuko.com,布布扣
图1 双斜角横线菜单效果

在这个案例中,需要重点考虑的是这个带有斜角的横线是如何产生的。

一、基本设置

本案例和上一个案例相同的HTML结构如下。

XML/HTML 代码复制内容到剪贴板
  1. <body>  
  2.     <div id="menu">  
  3.        <a href="#"> Home</a>    
  4.        <a href="#"> Contact Us</a>  
  5.        <a href="#"> Web Dev</a>    
  6.        <a href="#"> Web Design</a>    
  7.        <a href="#"> Map</a>    
  8.     </div>  
  9. </body>

对于#menu容器的设置如下。lodidance.com

折叠CSS 代码复制内容到剪贴板
  1. #menu {                         /*对menu层设置*/  
  2.    width:9em;                   /*宽度*/  
  3.    margin:0 auto;               /*水平居中*/  
  4.    font-family:Arial;           /*字体*/  
  5.    font-size:14px;              /*字号*/  
  6.    border:solid 1px #aaa;       /*细灰色边框*/  
  7. }

在对#menu的设置中,宽度使用的足相对单位em,而不像上一个例子,使用像素作为单位,代码如下。

折叠CSS 代码复制内容到剪贴板
  1. #menu a, #menu a:visited {      /*设置菜单选项*/  
  2.   display:block;                /*设置为块级元素*/  
  3.   text-decoration:none;         /*无下划线*/  
  4.   color:#000;                   /*黑色文字*/  
  5.   height:1.4em;                 /*高度*/  
  6.   border:0.5em solid #fff;      /*白色*/  
  7.   }   
  8. #menu a:hover {   
  9.   color:#fff;                   /*白色文字*/  
  10.   background-color:#aaa;        /*深灰色背景色*/  
  11.   border-color:#ddd #aaa;       /*上下边框浅灰色,左右与背景色相同*/  
  12.   }

使用相对单位的优势是,当访问者在浏览器中调整了文字的大小,#menu容器的大小可以自动调整,以适应文字大小的变化。

此外,还为#menu容器设置了1个像素宽的灰色的边框,代码为:

折叠CSS 代码复制内容到剪贴板
  1. border:solid 1px #aaa;      /*细灰色边框*/  

二、菜单项设置

菜单项没有鼠标指针经过时效果的设置方法与上一节的案例相似,代码如下。

折叠CSS 代码复制内容到剪贴板
  1. #menu a, #menu a:visited {      /*设置菜单选项*/  
  2.   display:block;                /*设置为块级元素*/  
  3.   text-decoration:none;         /*无下划线*/  
  4.   color:#000;                   /*黑色文字*/  
  5.   height:1.4em;                 /*高度*/  
  6.   border:0.5em solid #fff;      /*白色*/  
  7. }

与上个案例的不同之处在于,这里为了使菜单项的文字之间有一定空白,并且使文字在菜单项中竖直居中,没有采用padding来实现,而是用了line-height属性。当line-height属性设置为1.4em时,文字的上下会各产生0.2em的空白。

注意:这里不能使用height属性。如果使用height属性代替line-height属性。可以看到,文字将在竖直方向靠上对齐,而不是竖直居中了,这不是所期望的效果。

接下来,就要实现在鼠标指针经过时产生的背景色和边框了。在前面正常状态下的CSS代码中有如下一行设置。

折叠CSS 代码复制内容到剪贴板
  1. border:0.5em solid #fff;        /*白色*/  

对鼠标指针经过效果设置如下。

折叠CSS 代码复制内容到剪贴板
  1. #menu a:hover {   
  2.   color:#fff;                   /*白色文字*/  
  3.   background-color:#aaa;        /*深灰色背景色*/  
  4.   border-color:#ddd #aaa;       /*上下边框浅灰色,左右与背景色相同*/  
  5. }

可以看出,这个边框在鼠标指针未经过之前就已经存在了,只是和背景色相同,所以看不出是边框。而当鼠标指针经过时,边框的颜色发生改变,边框就显现出来了。

思考:最后请读者思考一下,为什么这里显示出的上下两条边框是斜角的,而7.1节案例中的左右两条边框不是这样的呢?

答案是,7.1节的案例中设置了左右两条边框宽为4px,上下边框为O;而在这个案例中,虽然左右边框在鼠标指针经过和不经过时的颜色不同,但实际上它们是存在宽度的,因此在水平和竖直的边框接角的位置,就产生了斜角。

点击下载第1~7章CSS教程资源 返回《CSS教程布局之道》教程列表

编辑:网页学习网
本文地址:http://www.lodidance.com/css/jc/701.html

7.2 双斜角横线菜单,布布扣,bubuko.com

7.2 双斜角横线菜单

标签:des   style   class   blog   code   java   

原文地址:http://www.cnblogs.com/you-me/p/3796790.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!