仿京东首页商品分类底部色标随鼠标移动特效

原文:仿京东首页商品分类底部色标随鼠标移动特效

今天扒皮下京东商品展示区的一个特效:

 

大家可以自行去京东看下特效,下面是这个特效的动态图(这次聪明的我懂得给图加水印了

 

 

理下思路,每个分类选项卡宽度一致,且有一条灰色底边,然后默认有一条红色的色标让它漂浮在首个选项卡上面(其中的小三角形可以自己做个图),默认首个选项卡的文本(像上图是“AAA”)为红色,其它选项卡的为灰色。默认除第一个选项卡对应的下方的内容DIV显示外,其它选项卡对应的内容DIV隐藏;

鼠标移到某个选项卡则改变该选项卡字体颜色(兄弟选项卡字体变灰色),再获取它的index,下方内容区域对应index的DIV显示出来(兄弟元素隐藏);

同时红色的色标则搞个animate,动态修改left值,参数为 “选项卡宽度 * index” 的大小。

思路理清了,一切就so easy~

 

 

先写下HTML代码:

<div class="body_stairs">     

    <div class="stair_left">
        <div class="stair_left_title">
            <span>零食美食</span>
        </div>
        <div class="stair_left_ad">
        </div>
    </div><!--stair_left结束-->

    <div class="stair_right">
        <div class="stair_right_navout">
            <div><div class="stair_right_nav_arrow"></div></div> <!--外部再加div是为兼容IE6-->
            <div class="stair_right_nav">特价商品</div>
            <div class="stair_right_nav">蜜饯果脯</div>
            <div class="stair_right_nav">饼干蛋糕</div>
            <div class="stair_right_nav">巧克力</div>
            <div class="stair_right_nav">糖果布丁</div>
            <div class="stair_right_nav">冰淇淋</div>
            <div class="stair_right_nav">饭类面食</div>
        </div>
        <div class="stair_right_content">1的展示内容
        </div>
        <div class="stair_right_content">2
        </div>
        <div class="stair_right_content">3
        </div>
        <div class="stair_right_content">4
        </div>
        <div class="stair_right_content">5
        </div>
        <div class="stair_right_content">6
        </div>
        <div class="stair_right_content">7
        </div>
    </div><!--stair_right结束-->

</div><!--body_stairs结束-->

 主要看class="stair_right"的div区域内的部分就行了。

其中stair_right_nav_arrow是红色底标,可以通过position:absolute和z-index来让起浮在上方。

stair_right_nav是选项卡,可以看到,我这里写了7个选项卡,顺便说下这里每个选项卡宽度都为143px。

stair_right_content是7个选项卡对应的内容展示div。

写下stair_right部分的css吧:

.stair_right{
	width:1001px;
	height:560px;
	float:right;
}
.stair_right_navout{
	width:1001px;
	height:45px;
	position:relative;
	z-index:1;
}
.stair_right_nav{
	position:relative;
	z-index:1;
	width:143px;
	height:30px;
	padding-top:12px;
	float:left;
	text-align:center;
	font-size:16px;
	font-family:黑体;
	border-bottom:solid 3px #DDD;
	background-color:#F9F9F9;
}
.stair_right_nav_arrow{
	position:absolute;
	left:0px;
	z-index:2;
	width:143px;
	height:10px;
	margin-top:32px;_margin-top:23px;
	background:url(../../img/body/stairs/arrow.jpg) bottom center no-repeat;     /*这个是红色色标上方小三角形图标*/
	border-bottom:solid 3px #ED1E24;
}
.stair_right_content{
	width:1001px;
	height:515px;
	display:none;
	overflow:hidden;
}

 最终是这样的既视感(第一个选项卡文本红色及其对应的下方的内容展示div会显示,是在后面的js写出来的):

 

接着就按我们前面理出来的思路来写JQ文件:

$(function(){

	 $(".stair_right_nav:first").css({"color":"red"});       //默认首个选项卡文字设为红色
	 $(".stair_right_content:first").show();              //默认首个内容展示DIV显示出来
	 $(".stair_right_nav").each(function(index){         //遍历全部选项卡,并绑定mouseover事件
		 $(this).mouseover(function(){
			 $(this).css({"color":"red"}).siblings().css({"color":"black"});   //鼠标经过的当前选项卡文本设为红色,兄弟元素文本设为黑色
			 $(".stair_right_content").hide().eq(index).show();     //让对应的内容展示div显示出来,且兄弟元素隐藏
			 var slide_width=index*143;           //这个是红色色标要移动的距离
			 $(".stair_right_nav_arrow").stop().animate({left:slide_width+"px"},500);    //让红色色标在半秒内移动到对应选项卡

			 })
		 })

})

 

然后搞定。然后。。。。这样就轻松结束了么? NO,这不是我今天想重点写的东西。

一般来说一个电商都不仅仅只有一个这样的楼层,像京东首页有着八层这样的楼层。而我们现在写的代码,仅能供一个楼层使用,也就说现在的JS代码复用率不高。

我是这样解决复用率的问题:

给每个楼层的选项卡、色标、内容区域的class后面加个数字,然后JS里再写个楼层循环来给这些楼层绑定事件。

HTML(这里只写了前两个楼层,实际有十个楼层):

<div class="body_stairs">     

    <div class="stair_left">
        <div class="stair_left_title">
            <span>零食美食</span>
        </div>
        <div class="stair_left_ad">
        </div>
    </div><!--stair_left结束-->

    <div class="stair_right">
        <div class="stair_right_navout">
            <div><div class="stair_right_nav_arrow0"></div></div> 

<!--外部再加div是为兼容IE6-->
            <div class="stair_right_nav0">特价商品</div>
            <div class="stair_right_nav0">蜜饯果脯</div>
            <div class="stair_right_nav0">饼干蛋糕</div>
            <div class="stair_right_nav0">巧克力</div>
            <div class="stair_right_nav0">糖果布丁</div>
            <div class="stair_right_nav0">冰淇淋</div>
            <div class="stair_right_nav0">饭类面食</div>
        </div>
        <div class="stair_right_content0">楼层1的第一个展示区内容
        </div>
        <div class="stair_right_content0">2
        </div>
        <div class="stair_right_content0">3
        </div>
        <div class="stair_right_content0">4
        </div>
        <div class="stair_right_content0">5
        </div>
        <div class="stair_right_content0">6
        </div>
        <div class="stair_right_content0">7
        </div>
    </div><!--stair_right结束-->

</div><!--body_stairs结束-->    

<div class="body_stairs">     

    <div class="stair_left">
        <div class="stair_left_title">
            <span>家居生活</span>
        </div>
        <div class="stair_left_ad">
        </div>
    </div><!--stair_left结束-->

    <div class="stair_right">
        <div class="stair_right_navout">
            <div><div class="stair_right_nav_arrow1"></div></div> 

<!--外部再加div是为兼容IE6-->
            <div class="stair_right_nav1">特价商品</div>
            <div class="stair_right_nav1">衣橱衣柜</div>
            <div class="stair_right_nav1">沙发座椅</div>
            <div class="stair_right_nav1">五金家具</div>
            <div class="stair_right_nav1">窗具</div>
            <div class="stair_right_nav1">床上用品</div>
            <div class="stair_right_nav1">饰品挂件</div>
        </div>
        <div class="stair_right_content1">楼层2的第一个展示区内容
        </div>
        <div class="stair_right_content1">2
        </div>
        <div class="stair_right_content1">3
        </div>
        <div class="stair_right_content1">4
        </div>
        <div class="stair_right_content1">5
        </div>
        <div class="stair_right_content1">6
        </div>
        <div class="stair_right_content1">7
        </div>
    </div><!--stair_right结束-->

</div><!--body_stairs结束-->

 

CSS:

.stair_right{
	width:1001px;
	height:560px;
	float:right;
}
.stair_right_navout{
	width:1001px;
	height:45px;
	position:relative;
	z-index:1;
}
.stair_right_nav0,.stair_right_nav1,.stair_right_nav2,.stair_right_nav3,.stair_right_nav4,.stair_right_nav5,.stair_right_nav6,
.stair_right_nav7,.stair_right_nav8,.stair_right_nav9,.stair_right_nav10{
	position:relative;
	z-index:1;
	width:143px;
	height:30px;
	padding-top:12px;
	float:left;
	text-align:center;
	font-size:16px;
	font-family:黑体;
	border-bottom:solid 3px #DDD;
	background-color:#F9F9F9;
}
.stair_right_nav_arrow0,.stair_right_nav_arrow1,.stair_right_nav_arrow2,.stair_right_nav_arrow3,.stair_right_nav_arrow4,.stair_right_nav_arrow5,
.stair_right_nav_arrow6,.stair_right_nav_arrow7,.stair_right_nav_arrow8,.stair_right_nav_arrow9,.stair_right_nav_arrow10{
	position:absolute;
	left:0px;
	z-index:2;
	width:143px;
	height:10px;
	margin-top:32px;_margin-top:23px;
	background:url(../../img/body/stairs/arrow.jpg) bottom center no-repeat;
	border-bottom:solid 3px #ED1E24;
}
.stair_right_content0,.stair_right_content1,.stair_right_content2,.stair_right_content3,.stair_right_content4,.stair_right_content5,
.stair_right_content6,.stair_right_content7,.stair_right_content8,.stair_right_content9,.stair_right_content10{
	width:1001px;
	height:515px;
	display:none;
	overflow:hidden;
}

 JQ:

$(function(){

	 for(var i=0;i<=10;i++){     //遍历十个楼层
	 $(".stair_right_nav"+i+":first").css({"color":"red"});   //默认每个楼层的首个选项卡文字设为红色
	 $(".stair_right_content"+i+":first").show();          //默认每个楼层的首个内容展示DIV显示出来
	 $(".stair_right_nav"+i).each(function(index){       //遍历每个楼层的全部选项卡,并绑定mouseover事件
		 $(this).mouseover(function(){
			 var nav_classname=$(this).attr("class").toString();     //获取鼠标经过的选项卡的class名
			 var nav_l=nav_classname.length;                  //获取class名长度
			 var j=nav_classname.substring(15,nav_l);       //通过截取class名的数字部位来获得当前选项卡的索引值(注意这里index已经变为楼层的索引了,不再适用)
			 $(this).css({"color":"red"}).siblings().css({"color":"black"});  //鼠标经过的当前选项卡文本设为红色,兄弟元素文本设为黑色
			 $(".stair_right_content"+j).hide().eq(index).show();   //鼠标经过的当前选项卡对应的内容展示区域显示,该楼层兄弟元素隐藏
			 var slide_width=index*143;     //这个是红色色标要移动的距离
			 $(".stair_right_nav_arrow"+j).stop().animate({left:slide_width+"px"},500);    //让红色色标在半秒内移动到对应选项卡

			 })
		 })

	 }
})

 

OK搞定妥妥的~或许有更好的解决方案,也欢迎各位交流分享 :)

 

时间: 2024-12-25 20:15:35

仿京东首页商品分类底部色标随鼠标移动特效的相关文章

Android仿京东首页画轴效果

记得之前京东首页有一个效果,有一个画轴,然后可以滚动画轴,去打开画(不知道怎么去形容这个效果,就叫做画轴效果吧- -!),然后去做相关操作,刚开始看到这个效果,想法是动态的去改变一个ImageView的高度,基本效果也就出来了,不过滚动部分的内容,当时接触的也不是很多,只是看过一些大牛的博客,略微了解了一点,当时也忙着写项目,也就没去多想,前些天忽然想到这个效果,就想着实现一下,不过京东新版本好像去掉这个东西了,只能凭着自己的记忆来大概搞一下,也是对滑动这部分内容的一个小练习吧. 先看一下效果图

精美的仿京东商城商品分类导航菜单代码

分类导航 按网站类别 企业建站 LOGO设计 网站设计 网站广告 推广 建网站 网站推广 网站建设 SEO 韩国男装 LOGO设计 网站设计 网站广告 推广 建网站 网站推广 网站建设 SEO 韩国童装 LOGO设计 网站设计 网站广告 推广 建网站 网站推广 网站建设 SEO 按品牌选货 热销推荐 LOGO设计 网站设计 网站广告 推广 建网站 网站推广 网站建设 SEO 网站建设 LOGO设计 网站设计 网站广告 推广 建网站 网站推广 推广 建网站 网站推广 推广 建网站 网站推广 网站建

Android 仿京东商城底部布局的选择效果(Selector 选择器的实现)

京东商城的底部布局的选择效果看上去很复杂,其实很简单,这主要是要感谢 selector 选择器,本文将讲解仿照京东商城的底部布局的选择效果,如何实现 selector 选择器,在不同的状态下,给 view 设置不同的背景. 京东商城底部布局的选择效果如下. View主要的几种状态 主要状态有8种,设置状态的代码以及相应的含义如下. android:state_pressed = "true/false" //true表示按下状态,false表示非按下状态. android:state_

jQuery实现仿微软首页感应鼠标变化滑动窗口效果_jquery

本文实例讲述了jQuery实现仿微软首页感应鼠标变化滑动窗口效果.分享给大家供大家参考.具体如下: 这是一款jQuery仿微软首页感应鼠标变化的滑动窗口,鼠标放上后,窗口会向左拉长,鼠标移走后恢复原样,是在微软官方网站发现的,看了看代码,觉得很容易就扣下来,不敢独享. 运行效果截图如下: 在线演示地址如下: http://demo.jb51.net/js/2015/jquery-f-microsoft-web-nav-demo/ 具体代码如下: <!DOCTYPE html PUBLIC "

一切为了用户体验:京东首页改版背后的故事

京东首页改版了,新版更注重个性化内容推荐.本文将讲述跨越8个月的改版过程及新首页的改版亮点. 早在春节前后,已经有些用户敏感地发现自己的京东首页不一样了,而乘着春风,京东首页改版迅速从部分用户可见的灰度测试扩展到所有用户.这是京东更换标志后第一次大规模改版. 是哪些原因驱动了京东改版?改版背后隐藏了什么样的战略和战术意图?从用户界面到用户历程到个性化,京东未来将向何处去?京东集团副总裁用户体验团队负责人刘轶表示,京东首页改版瞄准的目标,绝非一个首页那么简单,而是整个购物体验,京东整套用户体验生态

Python爬取京东的商品分类与链接_python

前言 本文主要的知识点是使用Python的BeautifulSoup进行多层的遍历. 如图所示.只是一个简单的哈,不是爬取里面的隐藏的东西. 示例代码 from bs4 import BeautifulSoup as bs import requests headers = { "host": "www.jd.com", "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWe

Android中使用TextView实现高仿京东淘宝各种倒计时效果_Android

今天给大家带来的是仅仅使用一个TextView实现一个高仿京东.淘宝.唯品会等各种电商APP的活动倒计时.最近公司一直加班也没来得及时间去整理,今天难得休息想把这个分享给大家,只求共同学习,以及自己后续的复习.为什么会想到使用一个TextView来实现呢?因为最近公司在做一些优化的工作,其中就有一个倒计时样式,原来开发的这个控件的同事使用了多个TextView拼接在一起的,实现的代码冗余比较大,故此项目经理就说:小宏这个就交给你来优化了,并且还要保证有一定的扩展性,当时就懵逼了.不知道从何处开始

基于JavaScript实现仿京东图片轮播效果_javascript技巧

js实现仿京东图片轮播效果,当鼠标划在窗口上面停止计时器,鼠标离开窗口,开启计时器,鼠标划在页签上面,停止计时器,手动切换,通过定义计时器封装函数run,封装函数changeOption,实现此效果,代码简单易懂,需要的小伙伴直接复制拷贝转走吧. <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document<

js实现仿京东2级菜单效果(带延时功能)_jquery

本文实例讲述了jquery实现仿京东2级菜单效果.分享给大家供大家参考.具体如下: 这里介绍js实现仿京东2级菜单效果代码,带有延时功能,操作上更加舒适自然. 先来看看运行效果截图: 在线演示地址如下: http://demo.jb51.net/js/2015/jquery-fjd-style-menu-codes/ 具体代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http: