建站常识
倾斜的鼠标翻转导航制作上的烦恼
2007-02-02 10:16:00
前天网上有个朋友发给我一个页面让我帮她看一下为什么鼠标翻转实现不了。我打开源文件看了一下,发现她根本没有掌握一个鼠标翻转的特性。并且对于倾斜导航的思考也不足。虽然我当时看出来了这些问题,但是由于手上一个项目正在收尾一时也没有时间向她一个讲解。正好昨天工⛎作忙完了,现在又拿起那个文件看了一下,发现能过这个事件可以讲解好多个知识点,有一些地方比较容易让人不太注意,但是确实是非常关键的。下面我们通过制作一个倾斜的鼠标翻转导航为过程来针对不同的地方做出一些提示,希望可以帮助一些对于鼠标翻转导航制作上还存在疑问的朋友。
我们先看一下想要实现的效果,当然在没做之前这些只能是存在于我们的脑子或是草图上。我们首先要想到它是个什么样子,然后💃才能去分析我们想要实理的效果是应该如何去做,𓆉闲言少叙,先看图:
我们看到上图,可以会觉得好像🌼并没什么,好像很容易做。好我们来细细的分析一下这个效果。我们用标准来实现就不能直接插入一张图片在HTML里。用标准来做就需要把图片作为背景的方式用CSS进行调用。那么我们来看一下这样的导航是否可以直接就那么直接调用,其中是不是还有🐼什么问题出现?下面请看一下这个导航效果的放大图:
大家注意上图中的“危险区”很明显,如果我们把两个倾斜的正块放在一起就必然会有一段重复区,我们现在的CSS还不支持异形处理。要解决这个问题就必需要使得这两个方块进行重叠。重叠就需要把他们放在不同的层次上。这就要用到CSS中的定位:“position : static | absolute | fixed | relative ”。关于positꩵion的详细请查看苏昱的《CSS2中文手册》,关于如何定位请查看我的《解读absolute与relative》
做鼠标翻转我们通常会把所有的背景做成一个图♎,然后通过CSS来ဣ设置不同标签下的图片的不同位置。也许有人就会认为这个导航 的背景图应该是这样的:
#p#
如果你真的是这么想的那么问题就出来了:当在五个区块中的任一个区块中进行鼠标翻转时,上面的危险区的重复部位就会把左侧和是右侧的导航挡去一个角。所以正🥂常的方式是:
只有这样在没有危险区的情况下才能作为最终的背景图片使用。当然还要注意的是背景并不是白色而是透明的,主要不是为了与网站的𝔍背景融合,关键是不要挡住在危险区的相邻的背景。我使用的是GIF图,GIF图有透明的时候边缘会有一点毛边。如果希望应对不同的色彩的网站背景,最好使用PNG或是把GIF图的边缘做成点像素。
对于这个背景图的思考完成之后我们就需要想想怎么制作这个导航了。先来分析一下这个鼠标翻转,原来做鼠标翻转是JS的事,现在可以通过CSS的:hover也可以实现这个翻转效果,代🍸码少、结构清晰。所以这里这五个导航的翻转就是由A:hover来实现。关于a:hover的详细解解释可以查阅一下苏昱的《CSS2中文手册》。
首先我先写下了这个导航的HTML代码,由于是结构,要尽可能的简洁干净:
这里的#nav为什么要加一个position:relative; 呢?请查阅《解读absolute与re💃lative》而 padding:0; margin:0; list-style:none;是为了去掉UL前的那个黑点,并且清除浏览器中UL的默认值。你也可以在CSS文件的开头用一句 *{padding:0; margin:0; list-style:none;}来清理一下标签在浏览器中的默认值。把他们放躺下之后我看了一下效果,不得了,所有的链接全都合到一起了。因为所有的LI都被定义成为绝对值大家都跑到原点对齐去了。我们需要把他们分开。所以接着写CSS把他们都分开:
#a {left:0px; top:0px; }
#b {left:79px; top:0px;}
#c {left:158px; top:0px;}
#d {left:237px; top:0px;}
#e {left:316px; top:0px;}
我们发现他们的TOP值都是0,为了让代码少一点我们把CSS再做一次修改:
#nav {padding:0; margin:0; width:410px; height:25px; line-height:25px; overflow:hidden; list-style:none; position:relative;}
#nav li {width:82px; height:25px; position:absolute; top:0px;}
#a {left:0px;}
#b {left:79px;}
#c {left:158px;}
#d {left:237px;}
#e {left:316px;}
都已经区分开,下🦄面就是加背景图片了。这里要注意:图片要加在A标签上,如果不然可能就会出现错误。当然也可以放在UL背景或是li上,但是那样做法、图片就都不一样了,可能也不太好理解。这里只以放在A标签上。
#nav a {width:82px; heigh𝓰t:25px; padding:30px 0 0 ; ov꧅erflow:hidden; display:block; background:url(bg.gif) no-repeat;}
这里我们把A标签也定义为宽为82高为25的方块,这里要注意一定要把A定义为块:display:block🍷; 因为只有这样才可以完全显示背景图片。与overflow:hidden;相结合还可以把A标签中的文字挤出显示区,当然他的父级标签也要有overflow:hidden;不然在IE下还是会出现溢出显示的现象。加上一个背景图,这时浏览一下我们发现五个区块只出♋现图片的第一区,五个块都是一样的。我们需要把五个块应有的显示内容表现出来。就需要再加一些指令:
#b a {background-position: -82px 0px;}
#c a {background-position: -164px 0px;}
#d a {background-position: -246px 0px;}
#e a {background-position: -328px 0px;}
#p#
我们这里看到其中并没有 #a a 这是因为#a a的显示内容就是当前内容,所以这句可以省了,由于#nav a中已经定义了背影图片了由于#nav a包括了๊#a a、#b a…,所以这里只要做好背景的位置就好了。再浏览一下,是正确了,但是还没有鼠标翻转𝓡的效果。下面再来把这个鼠标翻转的效果再补上:
#a a:hover {background-position: 0 -25px}
#b a:hover {background-position: -82px -25px;}
#c a:hover {background-position: -164px -25px;}
#d a:hover {background-position: -246px -25px;}
#e a:hover {background-position: -328px -25px;}
大家也看到了,这里也有很多重复的,可不可以再省略呢?如果只是针对IE流览器是可以的ꦑ,因为IE在背景两个私有属性叫:background-positionX,background-positionY。但是Firefox与Opera都不支持,所以这里就不能省。基本上是成功了不过还有一个小细节,细心的朋友一定发现了,LI的位置移动是以79PX为一个单位,而图片则都是82PX的,链接也是82PX的大小。所以我们开头的#nav 的长度是错的,正常的是398px,为什么是398px那就自己想想算算吧!下面给出全部的CSS代码:
#nav {padding:0; margin:0; width:398px; height:25px; line-height:25px; overflow:hidden; list-style:none; position:relative;}
#n💟av li {width:82px; height:25px; position:absolute; top:0;}
#b {left:79px;}
#c {left:158px;}
#d {left:237px;}
#e {left:316px;}
#nav a {width:82px; height:25px; padding:30px 0 0 ; overflow:hidden; display:block; background:url(bg.gif) no-repeat;}
#b a {background-position: -82px 0px;}
#c a {background-position: -164px 0px;}
#d a {background-position: -246px 0px;}
#e a {background-position: -328px 0px;}
#a a:hover {background-position: 0 -25px}
#b a:hover {background-position: -82px -25px;}
#c a:hover {background-position: -164px -25px;}
#d a:hover {background-position: -246px -25px;}
#e a:hover {background-position: -328px -25px;}
错误的效果:
运行代码框
近期更新
- [2025-02-11 14:34:54] 加拿大预测网-在线预测:青岛高端网站定制化设计
- [2023-06-25 23:22:29] 加拿大预测网-在线预测:优秀网站设计的五大特点
- [2023-04-27 14:05:55] 加拿大预测网-在线预测:Html 5 响应式网站设计制作
- [2023-04-10 11:07:30] 加拿大预测网-在线预测: 网站建设制作流程知多少
- [2022-10-14 10:11:30] 加拿大预测网-在线预测:做网站设计应该更看重框架搭建还是视觉观感?
- [2022-08-09 15:57:48] 加拿大预测网-在线预测:以“产品”思维搭建网站!
- [2022-08-08 09:12:57] 加拿大预测网-在线预测:一家公司的网站应该有哪些板块内容?
- [2022-08-05 09:28:06] 加拿大预测网-在线预测:企业网站建设为什么要设置新闻板块?
- [2022-07-04 15:58:06] 加拿大预测网-在线预测:网站加拿大预测网-在线预测设计的好看,这个网站就成功了一大半!
- [2022-05-20 09:34:19] 加拿大预测网-在线预测:网站后台管理系统是什么?有什么作用?
- [2022-05-17 11:29:32] 加拿大预测网-在线预测:作为消费者,应该如何选择一家水平高的网站建设公司
- [2022-05-17 11:27:01] 加拿大预测网-在线预测:高端网站定制与模板化网站应该怎么选择?
延伸阅读
- [2019-06-13 10:41:02] 加拿大预测网-在线预测:怎样提升用户的良好体验
- [2009-05-04 08:22:00] 加拿大预测网-在线预测:左侧导航还是右侧导航?
- [2007-12-28 16:23:00] 把导航系统做薄
- [2010-07-20 08:16:00] 顶部导航条
- [2007-12-04 17:19:00] 加拿大预测网-在线预测:关于网站导航一些问题
- [2009-09-25 18:44:00] 加拿大预测网-在线预测:导航与搜索合并的可能性
- [2010-06-08 15:20:00] 加拿大预测网-在线预测:多维度导航探秘II
- [2010-09-25 14:48:00] 加拿大预测网-在线预测:信息架构之Web导航设计分类
- [2006-04-28 15:07:00] 加拿大预测网-在线预测:从亚马逊网站导航栏的变迁史看网页设计
- [2010-06-17 08:18:00] 优化网站导航设计
- [2019-05-20 10:03:27] 加拿大预测网-在线预测:响应式网页设计中导航的走向
- [2008-01-15 13:47:00] 加拿大预测网-在线预测:导航设计与信息架构
解决方案
加拿大预测网-在线预测: 轮胎行业网站设计解决方案 加拿大预测网-在线预测: 机械行业网站设计解决方案 加拿大预测网-在线预测: 房地产行业网站设计解决方案 加拿大预测网-在线预测: 科技企业网站设计解决方案 加拿大预测网-在线预测: 电子家电网站设计解决方案 加拿大预测网-在线预测: 食品行业网站设计解决方案 加拿大预测网-在线预测: 集团公司网站设计解决方案 加拿大预测网-在线预测: 企事业单位网站设计解决方案 加拿大预测网-在线预测: 外贸行业网站设计解决方案 加拿大预测网-在线预测: 健身运动网站设计解决方案 加拿大预测网-在线预测: 美容与化妆品网站设计解决方案 加拿大预测网-在线预测: 建筑设计行业网站设计解决方案 加拿大预测网-在线预测: 物流行业网站设计解决方案