ddc
联网
Dreamweaver Flash Photoshop 其它周边 web标准 asp php .net CSS WAP网站攻略 专题
网站建设 域名注册 网站建设 虚拟主机 广州网站设计 域名注册 广州网站建设 上海网站建设 虚拟主机 广州网页设计 虚拟主机 域名注册 acg王国 ACG玩家 品牌设计 上海网站建设
求创科技
网站建设
中国互联
素材出售
中国设计秀
中资源
当前位置:网络学院首页 >> 设计教程 >> web标准 >> 倾斜的鼠标翻转导航制作上的烦恼

倾斜的鼠标翻转导航制作上的烦恼 (1)

来源:中国设计秀    作者:小毅    点击:1087     加入收藏

     前天网上有个朋友发给我一个页面让我帮她看一下为什么鼠标翻转实现不了。我打开源文件看了一下,发现她根本没有掌握一个鼠标翻转的特性。并且对于倾斜导航的思考也不足。虽然我当时看出来了这些问题,但是由于手上一个项目正在收尾一时也没有时间向她一个讲解。正好昨天工作忙完了,现在又拿起那个文件看了一下,发现能过这个事件可以讲解好多个知识点,有一些地方比较容易让人不太注意,但是确实是非常关键的。下面我们通过制作一个倾斜的鼠标翻转导航为过程来针对不同的地方做出一些提示,希望可以帮助一些对于鼠标翻转导航制作上还存在疑问的朋友。

     我们先看一下想要实现的效果,当然在没做之前这些只能是存在于我们的脑子或是草图上。我们首先要想到它是个什么样子,然后才能去分析我们想要实理的效果是应该如何去做,闲言少叙,先看图:

    我们看到上图,可以会觉得好像并没什么,好像很容易做。好我们来细细的分析一下这个效果。我们用标准来实现就不能直接插入一张图片在HTML里。用标准来做就需要把图片作为背景的方式用CSS进行调用。那么我们来看一下这样的导航是否可以直接就那么直接调用,其中是不是还有什么问题出现?下面请看一下这个导航效果的放大图:

    大家注意上图中的“危险区”很明显,如果我们把两个倾斜的正块放在一起就必然会有一段重复区,我们现在的CSS还不支持异形处理。要解决这个问题就必需要使得这两个方块进行重叠。重叠就需要把他们放在不同的层次上。这就要用到CSS中的定位:“position : static | absolute | fixed | relative ”。关于position的详细请查看苏昱的《CSS2中文手册》,关于如何定位请查看我的《解读absolute与relative

    做鼠标翻转我们通常会把所有的背景做成一个图,然后通过CSS来设置不同标签下的图片的不同位置。也许有人就会认为这个导航 的背景图应该是这样的:

    如果你真的是这么想的那么问题就出来了:当在五个区块中的任一个区块中进行鼠标翻转时,上面的危险区的重复部位就会把左侧和是右侧的导航挡去一个角。所以正常的方式是:

    只有这样在没有危险区的情况下才能作为最终的背景图片使用。当然还要注意的是背景并不是白色而是透明的,主要不是为了与网站的背景融合,关键是不要挡住在危险区的相邻的背景。我使用的是GIF图,GIF图有透明的时候边缘会有一点毛边。如果希望应对不同的色彩的网站背景,最好使用PNG或是把GIF图的边缘做成点像素。

    对于这个背景图的思考完成之后我们就需要想想怎么制作这个导航了。先来分析一下这个鼠标翻转,原来做鼠标翻转是JS的事,现在可以通过CSS的:hover也可以实现这个翻转效果,代码少、结构清晰。所以这里这五个导航的翻转就是由A:hover来实现。关于a:hover的详细解解释可以查阅一下苏昱的《CSS2中文手册》。

首先我先写下了这个导航的HTML代码,由于是结构,要尽可能的简洁干净:

  1. <ul id="nav">
  2.  <li id="a"><a href="" title="">HOME</a></li>
  3.  <li id="b"><a href="" title="">ABOUT</a></li>
  4.  <li id="c"><a href="" title="">PRODUCT</a></li>
  5.  <li id="d"><a href="" title="">SEVICE</a></li>
  6.  <li id="e"><a href="" title="">FEEDBACK</a></li>
  7. </ul>

    由于我们的这个导航每一个区域都不一样所以需要给每个块都加个ID。有了结构了下面就是CSS的部分了。我们这个导航是横向的,那么我们要先让这个UL列表先躺下:

  1. #nav {padding:0; margin:0; width:410px; height:25px; line-height:25px; overflow:hidden; list-style:none; }
  2. #nav li {width:82px; height:25px;  float:left;}

当我把UL放躺下之后突然想到它躺下的姿势不对,为什么呢,因为我们需要的是后一个叠在前一个的尾巴上的效果,而不是脑袋顶着屁股。所以这里需要改成:

  1. #nav {padding:0; margin:0; width:410px; height:25px; line-height:25px; overflow:hidden; list-style:none; position:relative;}
  2. #nav li {width:82px; height:25px; position:absolute; }

     这里的#nav为什么要加一个position:relative; 呢?请查阅《解读absolute与relative》而 padding:0; margin:0; list-style:none;是为了去掉UL前的那个黑点,并且清除浏览器中UL的默认值。你也可以在CSS文件的开头用一句 *{padding:0; margin:0; list-style:none;}来清理一下标签在浏览器中的默认值。把他们放躺下之后我看了一下效果,不得了,所有的链接全都合到一起了。因为所有的LI都被定义成为绝对值大家都跑到原点对齐去了。我们需要把他们分开。所以接着写CSS把他们都分开:

  1. #a {left:0px; top:0px; }
  2. #b {left:79px; top:0px;}
  3. #c {left:158px; top:0px;}
  4. #d {left:237px; top:0px;}
  5. #e {left:316px; top:0px;}

    我们发现他们的TOP值都是0,为了让代码少一点我们把CSS再做一次修改:

  1. #nav {padding:0; margin:0; width:410px; height:25px; line-height:25px; overflow:hidden; list-style:none; position:relative;}
  2. #nav li {width:82px; height:25px; position:absolute;  top:0px;}
  3. #a {left:0px;}
  4. #b {left:79px;}
  5. #c {left:158px;}
  6. #d {left:237px;}
  7. #e {left:316px;}

   都已经区分开,下面就是加背景图片了。这里要注意:图片要加在A标签上,如果不然可能就会出现错误。当然也可以放在UL背景或是li上,但是那样做法、图片就都不一样了,可能也不太好理解。这里只以放在A标签上。

  1. #nav a {width:82px; height:25px; padding:30px 0 0 ; overflow:hidden; display:block; background:url(bg.gif) no-repeat;}

     这里我们把A标签也定义为宽为82高为25的方块,这里要注意一定要把A定义为块:

0
顶一下
[1] [2]
2007-12-13 13:29:40    出处:毅BLOG
Google
热点文章/相关文章
网站地图 | 关于我们 | 联系我们 | 网站建设 | 广告服务 | 版权声明 | 免责声明 | 网站公告 | 友情链接 | 留言 | 旧版入口