破解淘宝菜单
1 3, 2007
作者: xw | 分类: Web 标准
呵呵为什么又来一个破解,为什么是淘宝菜单,因为taobao上面的菜单,可以说是中国第一个大型网站采用css做的滑动门菜单,二来
滑动门有一弱点就是会产生选中链接的虚线线框偏移,而淘宝的菜单是没有虚线框的,哈哈至于怎么做到的我们会在下面分析:
好了长话段说我们先打开taobao的首页看看找到如下代码:
- <ul id="ChannelMenuItems">
- <li id="MenuHome"><a href="http://www.taobao.com/index.php?from=top" target="_top"><span>首页</span></a></li>
- <li id="MenuDigital"><a href="http://www.taobao.com/vertical/digital/index.php?from=top" target="_top"><span>数码通讯</span></a></li>
- <li id="MenuLady"><a href="http://www.taobao.com/vertical/lady/index.php?from=top" target="_top"><span>女人</span></a></li>
- <li id="MenuLife"><a href="http://www.taobao.com/vertical/life/index.php?from=top" target="_top"><span>家居</span></a></li>
- <li id="MenuPet"><a href="http://www.taobao.com/vertical/pet/index.php?from=top" target="_top"><span>宠物</span></a></li>
- <li id="MenuMan"><a href="http://www.taobao.com/vertical/man/index.php?from=top" target="_top"><span>男人</span></a></li>
- <li id="MenuSports"><a href="http://www.taobao.com/vertical/sports/index.php?from=top" target="_top"><span>运动</span></a></li>
- <li id="MenuGame"><a href="http://www.taobao.com/vertical/game/index.php?from=top" target="_top"><span>游戏</span></a></li>
- <li id="MenuCulture"><a href="http://www.taobao.com/vertical/culture/index.php?from=top" target="_top"><span>书籍音像</span></a></li>
- <li id="MenuHongkong"><a href="http://www.taobao.com/vertical/hkstreet/index.php?from=top" target="_top"><span>香港街</span></a></li>
- <li id="MenuMall"><a href="http://www.taobao.com/vertical/mall/index.php?from=top" target="_top"><span>淘宝商城</span></a></li>
- </ul>
很标准的滑动门菜单结构,至于真正的滑动门菜单技术我们这里不详细介绍,如果你不是很了解的话,可以去看《CSS中的滑动门技术》,我们在查找一下菜单的css
上面就是我提取出来菜单的样式表,哈哈很多代码吧,我们仔细看看根本没有什么刻意特殊的代码在里面,看来用css特殊属性去除线框的可能性排除了,选中菜单链接以后没有虚线通常的做法使用javascript来实现,这个比较常见具体方法可以查看《去除链接虚线框》, 那我们再从新回到页面源代码查看,结果没有发现可疑代码。哪taobao到底是怎么做的呢,我们再回头看看上面的代码,发现在所有文字的两边多了一个标签,大家都知道,做滑动门菜单根本不用这个完全是可以实现,难道就因为的原因才没有虚线框的吗,那么我们把代码下载下来实验一下,吧去掉,看看什么效果,果然去掉的菜单除了虚线框不过虚线框还是不错,没有偏移,好那么我们就来看看这个是什么css属性,怎样起到这个作用的,看下面代码:
- #Head #ChannelMenuItems li{
- float:left;
- height:30px;
- margin-right:1px;
- /*attach promotion event background images here*/
- }
- #Head #ChannelMenuItems a{
- display:block;
- float:left;
- height:30px;
- background:transparent url(http://pics.taobao.com/2k5/sys/common/header/chl_home_left.gif) left top no-repeat;
- text-decoration:none;
- }
- #Head #ChannelMenuItems a span{
- display:block;
- float:left;
- height:30px;
- padding:11px 11px 0;
- background:transparent url(http://pics.taobao.com/2k5/sys/common/header/chl_home_right.gif) right top no-repeat;
- text-align:center;
- color:#000;
- font-style:normal;
- cursor:hand;
- /*IE 5.x Crack at the bottom of this file*/
- }
传统我们做滑动门菜单通常是吧定义按钮的大小和边距定义在a上和li上,然后在a和li上定义不同的背景文件,最后组合制作成一个按钮,而在这段代码里面大家发现,li和a只定义了高度根本没有定义边距,而且只有a放了按钮左边的图像背景文件,li是空的,而真正定义按钮大小的是span,不仅定义了右边的背景,高度还有两边的边距,还有display:block;和cursor:hand;,哪到底为什么要这么做呢?好下面我们来做一个小实验:
- <a href="#"><span>www.d8in.com</span></a>
这段代码是没有定义和的,但是采用了同样的结构就是嵌套最后里面是要链接的文字,大家发现虚线框是紧紧包裹在文字周围的,我们继续测试下面代码
- <style type="text/css">
- span{
- display: block;
- height: 30px;
- }
- a{
- display: block;
- height: 30px;
- }
- </style>
- <a href="#"><span>www.d8in.com</span></a>
这段代码同时定义了a和span,display: block;和height: 30px;,发现鼠标放了连接上变成输入指针,但是链接依然刻意点击。
最后测试最终代码:
www.d8in.com
最后终结一淘宝菜单的制作原理;
1.用
发表评论