爱淘宝手机版分类导航菜单弹出效果设计

来和大家一起讨论讨论爱淘宝手机版的分类导航菜单弹出效果是如何设计实现的。先来看几个截图,一个是爱淘宝官方网站的截图,另一部分是我仿照爱淘宝做的截图

先声明一下我们只是借鉴爱淘宝手机版界面来进行技术的学习,如有博友看到请各位一定要理解。此博客毫无盗用淘宝核心技术。

第一张图是爱淘宝官网的截图,后面两张是我们自己仿照做的截图。

首先分析一下要实现的功能细节

  • 点击手机页面商品列表的图片,导航菜单会从手机的右侧出来
  • 导航菜单下面会有一个遮盖层,这样子的作用防止用户点击最底层的商品
  • 最底层的商品可以在遮盖层下方上下移动,但是就是不能点击
  • 商品搜索栏永远固定到手机页面的顶部,不管最底层商品如何移动都会改变商品搜索栏的位置

实现的技术要求

  • 一定的bootstrap理解
  • jQuery的DOM操作

我们来看看具体的代码吧,我尽量详细地给大家介绍清楚。第一步先实现商品搜索栏的代码,因为在商品搜索栏的右侧会有一个点击弹出导航菜单的图标

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>淘宝-商品列表</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="shortcut icon" href="images/favicon.io">
<link rel="stylesheet" type="text/css" href="bootstrap/css/bootstrap.css">
<link rel="stylesheet" type="text/css" href="bootstrap/css/carousel.css">
<link rel="stylesheet" type="text/css" href="css/flat-ui.css">
<link rel="stylesheet" type="text/css" href="css/tb.css">
<!-- HTML5 shim, for IE6-8 support of HTML5 elements. All other JS at the end of file. -->
<!--[if lt IE 9]>
    <script src="js/html5shiv.js"></script>
    <script src="js/respond.min.js"></script>
<![endif]-->
</head>
<body>
    <!-- 下面的DIV就是商品搜索栏的代码 -->
    <!-- 其中${pageContext.request.contextPath }是JSP代码 -->
    <!-- 那段JSP代码有不有都不会影响页面效果 -->
    <div id="navdiv">
    <nav class="navbar navbar-default" role="navigation" id="menunav">
        <div class="navbar-header">
            <button type="button" class="navbar-toggle" data-toggle="collapse"
                data-target="#navbar-collapse-01" id="menubutton">
                <span class="sr-only">Toggle navigation</span>
            </button>
            <a class="navbar-brand" href="${pageContext.request.contextPath }/index.jsp"><img
                src="images/taobao/index.gif" /></a>
        </div>
        <!-- /.navbar-collapse -->
    </nav>
    <!-- /navbar -->
    </div>

<!-- Load JS here for greater good =============================-->
<script src="js/jquery-1.8.3.min.js"></script>
<script src="js/jquery-ui-1.10.3.custom.min.js"></script>
<script src="js/jquery.ui.touch-punch.min.js"></script>
<script src="js/bootstrap.min.js"></script>
<script src="js/bootstrap-select.js"></script>
<script src="js/bootstrap-switch.js"></script>
<script src="js/flatui-checkbox.js"></script>
<script src="js/flatui-radio.js"></script>
<script src="js/jquery.tagsinput.js"></script>
<script src="js/jquery.placeholder.js"></script>
<script src="js/demo.js"></script>
<script type="text/javascript" src="js/menu.js"></script>
</body>
</html>

第二步:加入导航菜单的代码

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>淘宝-商品列表</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="shortcut icon" href="images/favicon.io">
<link rel="stylesheet" type="text/css" href="bootstrap/css/bootstrap.css">
<link rel="stylesheet" type="text/css" href="bootstrap/css/carousel.css">
<link rel="stylesheet" type="text/css" href="css/flat-ui.css">
<link rel="stylesheet" type="text/css" href="css/tb.css">
<!-- HTML5 shim, for IE6-8 support of HTML5 elements. All other JS at the end of file. -->
<!--[if lt IE 9]>
    <script src="js/html5shiv.js"></script>
    <script src="js/respond.min.js"></script>
<![endif]-->
</head>
<body>
    <!-- 下面的DIV就是商品搜索栏的代码 -->
    <!-- 其中${pageContext.request.contextPath }是JSP代码 -->
    <!-- 那段JSP代码有不有都不会影响页面效果 -->
    <div id="navdiv">
    <nav class="navbar navbar-default" role="navigation" id="menunav">
        <div class="navbar-header">
            <button type="button" class="navbar-toggle" data-toggle="collapse"
                data-target="#navbar-collapse-01" id="menubutton">
                <span class="sr-only">Toggle navigation</span>
            </button>
            <a class="navbar-brand" href="${pageContext.request.contextPath }/index.jsp"><img
                src="images/taobao/index.gif" /></a>
        </div>
        <!-- /.navbar-collapse -->
    </nav>
    <!-- /navbar -->
    </div>

    <!-- 分类导航菜单的Div 默认是隐藏效果 -->
    <div class="showInform">
        <div class="infor">
            <div class="row">
                <div class="col-xs-6 col-sm-6 col-md-6 centerIt">
                    <a href="category.do?v=queryCategory&categoryId=d73177f185511c223c0eab2574232d5c"><img src="images/taobao/IconBags.png"/></a>
                    <p class="centerIt">时尚箱包</p>
                </div>
                <div class="col-xs-6 col-sm-6 col-md-6 centerIt">
                    <a href="category.do?v=queryCategory&categoryId=49abae31ac1ae3cb1448e6cb0cf38d6c"><img src="images/taobao/IconClothing.png"/></a>
                    <p class="centerIt">潮流女装</p>
                </div>
            </div>
            <div class="row">
                <div class="col-xs-6 col-sm-6 col-md-6 centerIt">
                    <a href="category.do?v=queryCategory&categoryId=14c44d391763670b1eb08d6a4b198ae6"><img src="images/taobao/IconMakeUp.png"/></a>
                    <p class="centerIt">美容护肤</p>
                </div>
                <div class="col-xs-6 col-sm-6 col-md-6 centerIt">
                    <a href="category.do?v=queryCategory&categoryId=73f844483effaaa89a98328eb4e83961"><img src="images/taobao/IconSellingShoes.png"/></a>
                    <p class="centerIt">热卖鞋品</p>
                </div>
            </div>
               <div class="row">
                <div class="col-xs-6 col-sm-6 col-md-6 centerIt">
                    <a href="category.do?v=queryCategory&categoryId=d43daa22676f70e001b786d0c5496ca0"><img src="images/taobao/IconMaternalAndInfantToys.png"/></a>
                    <p class="centerIt">母婴玩具</p>
                </div>
                <div class="col-xs-6 col-sm-6 col-md-6 centerIt">
                    <a href="category.do?v=queryCategory&categoryId=d4e972b773b3e32f85726d8aec7ef3a8"><img src="images/taobao/IconMens.png"/></a>
                    <p class="centerIt">精品男装</p>
                </div>
            </div>
               <div class="row">
                <div class="col-xs-6 col-sm-6 col-md-6 centerIt">
                    <a href="category.do?v=queryCategory&categoryId=bfa1a8aa8b39be9fc170d7f68b8643fd"><img src="images/taobao/IconEquipmentIife.png"/></a>
                    <p class="centerIt">生活居家</p>
                </div>
                <div class="col-xs-6 col-sm-6 col-md-6 centerIt">
                    <a href="category.do?v=queryCategory&categoryId=c776bbd158cefc6bb1aedb4e33794cff"><img src="images/taobao/IconFoodProducts.png"/></a>
                    <p class="centerIt">美食特产</p>
                </div>
            </div>
        </div>
    </div>

<!-- Load JS here for greater good =============================-->
<script src="js/jquery-1.8.3.min.js"></script>
<script src="js/jquery-ui-1.10.3.custom.min.js"></script>
<script src="js/jquery.ui.touch-punch.min.js"></script>
<script src="js/bootstrap.min.js"></script>
<script src="js/bootstrap-select.js"></script>
<script src="js/bootstrap-switch.js"></script>
<script src="js/flatui-checkbox.js"></script>
<script src="js/flatui-radio.js"></script>
<script src="js/jquery.tagsinput.js"></script>
<script src="js/jquery.placeholder.js"></script>
<script src="js/demo.js"></script>
<script type="text/javascript" src="js/menu.js"></script>
</body>
</html>

第三步:加入遮盖层DIV的代码

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>淘宝-商品列表</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="shortcut icon" href="images/favicon.io">
<link rel="stylesheet" type="text/css" href="bootstrap/css/bootstrap.css">
<link rel="stylesheet" type="text/css" href="bootstrap/css/carousel.css">
<link rel="stylesheet" type="text/css" href="css/flat-ui.css">
<link rel="stylesheet" type="text/css" href="css/tb.css">
<!-- HTML5 shim, for IE6-8 support of HTML5 elements. All other JS at the end of file. -->
<!--[if lt IE 9]>
    <script src="js/html5shiv.js"></script>
    <script src="js/respond.min.js"></script>
<![endif]-->
</head>
<body>
    <!-- 下面的DIV就是商品搜索栏的代码 -->
    <!-- 其中${pageContext.request.contextPath }是JSP代码 -->
    <!-- 那段JSP代码有不有都不会影响页面效果 -->
    <div id="navdiv">
    <nav class="navbar navbar-default" role="navigation" id="menunav">
        <div class="navbar-header">
            <button type="button" class="navbar-toggle" data-toggle="collapse"
                data-target="#navbar-collapse-01" id="menubutton">
                <span class="sr-only">Toggle navigation</span>
            </button>
            <a class="navbar-brand" href="${pageContext.request.contextPath }/index.jsp"><img
                src="images/taobao/index.gif" /></a>
        </div>
        <!-- /.navbar-collapse -->
    </nav>
    <!-- /navbar -->
    </div>

    <!-- 分类导航菜单的Div 默认是隐藏效果 -->
    <div class="showInform">
        <div class="infor">
            <div class="row">
                <div class="col-xs-6 col-sm-6 col-md-6 centerIt">
                    <a href="category.do?v=queryCategory&categoryId=d73177f185511c223c0eab2574232d5c"><img src="images/taobao/IconBags.png"/></a>
                    <p class="centerIt">时尚箱包</p>
                </div>
                <div class="col-xs-6 col-sm-6 col-md-6 centerIt">
                    <a href="category.do?v=queryCategory&categoryId=49abae31ac1ae3cb1448e6cb0cf38d6c"><img src="images/taobao/IconClothing.png"/></a>
                    <p class="centerIt">潮流女装</p>
                </div>
            </div>
            <div class="row">
                <div class="col-xs-6 col-sm-6 col-md-6 centerIt">
                    <a href="category.do?v=queryCategory&categoryId=14c44d391763670b1eb08d6a4b198ae6"><img src="images/taobao/IconMakeUp.png"/></a>
                    <p class="centerIt">美容护肤</p>
                </div>
                <div class="col-xs-6 col-sm-6 col-md-6 centerIt">
                    <a href="category.do?v=queryCategory&categoryId=73f844483effaaa89a98328eb4e83961"><img src="images/taobao/IconSellingShoes.png"/></a>
                    <p class="centerIt">热卖鞋品</p>
                </div>
            </div>
               <div class="row">
                <div class="col-xs-6 col-sm-6 col-md-6 centerIt">
                    <a href="category.do?v=queryCategory&categoryId=d43daa22676f70e001b786d0c5496ca0"><img src="images/taobao/IconMaternalAndInfantToys.png"/></a>
                    <p class="centerIt">母婴玩具</p>
                </div>
                <div class="col-xs-6 col-sm-6 col-md-6 centerIt">
                    <a href="category.do?v=queryCategory&categoryId=d4e972b773b3e32f85726d8aec7ef3a8"><img src="images/taobao/IconMens.png"/></a>
                    <p class="centerIt">精品男装</p>
                </div>
            </div>
               <div class="row">
                <div class="col-xs-6 col-sm-6 col-md-6 centerIt">
                    <a href="category.do?v=queryCategory&categoryId=bfa1a8aa8b39be9fc170d7f68b8643fd"><img src="images/taobao/IconEquipmentIife.png"/></a>
                    <p class="centerIt">生活居家</p>
                </div>
                <div class="col-xs-6 col-sm-6 col-md-6 centerIt">
                    <a href="category.do?v=queryCategory&categoryId=c776bbd158cefc6bb1aedb4e33794cff"><img src="images/taobao/IconFoodProducts.png"/></a>
                    <p class="centerIt">美食特产</p>
                </div>
            </div>
        </div>
    </div>

    <!-- 遮盖层Div -->
    <div class="infor1"></div>

<!-- Load JS here for greater good =============================-->
<script src="js/jquery-1.8.3.min.js"></script>
<script src="js/jquery-ui-1.10.3.custom.min.js"></script>
<script src="js/jquery.ui.touch-punch.min.js"></script>
<script src="js/bootstrap.min.js"></script>
<script src="js/bootstrap-select.js"></script>
<script src="js/bootstrap-switch.js"></script>
<script src="js/flatui-checkbox.js"></script>
<script src="js/flatui-radio.js"></script>
<script src="js/jquery.tagsinput.js"></script>
<script src="js/jquery.placeholder.js"></script>
<script src="js/demo.js"></script>
<script type="text/javascript" src="js/menu.js"></script>
</body>
</html>

第四步:加入css代码

/*弹出导航的分类菜单*/
.infor{
    background-color:#F5F5F5;
    position: fixed; /*针对浏览器的定位*/
    z-index: 20;
    display: none;
}
.centerIt {
    text-align: center;
    margin-bottom:5px;
    margin-top: 5px;
}
/*遮盖层效果*/
.infor1 {
    background-color: #666666;
    position: fixed; /*针对浏览器的定位*/
    z-index: 20;
    display: none;
    opacity:0.5;
}

因为要出现弹出效果,所以我们需要用到CSS中的定位position。如果大家对position不是很了解,可以看看我的另一篇博客文章:http://www.cnblogs.com/cdgxa/p/4600242.html

有了上面的页面代码,我就可以着手开始编写JavaScript了,通过JavaScript来控制页面的动态效果。

第五步:大家可以建一个menu.js文件,然后在页面中导入这个js文件。我们上面的页面代码已经导入了哈。

$(function() {

    //记录用户导航菜单点击切换效果
    //0代表点击弹出
    //1代表点击隐藏
    var i = 0; 

    //完成导航菜单按钮的点击事件
    $("#menubutton").click(function() {
        var width = $("#menunav").width(); //获取商品搜索栏的宽度
        var height = $("#menunav").height(); //获取商品搜索栏的高度
        var documentHeight = $(document).height(); //html文档高

        if (i == 0) {
            $("#navdiv").css("width",width).css("height",height+30);
            $("#menunav").css("position","fixed").css("z-index","22").css("width",width).css("height",height).css("left","0").css("top","0");

            //导航菜单定位和大小会用到css样式 right,top,width,height
            $(".infor").css("right", "-"+width*0.8).css("top",height).css("width",width*0.8).css("height",documentHeight-height).css("display","block");
            $(".infor").animate({
                right: ‘0px‘
            });

            $(".infor1").css("left", "-"+width*0.2).css("top",height).css("width",width*0.2).css("height",documentHeight-height).css("display","block");
            $(".infor1").animate({
                left: ‘0px‘
            });

            i++;
        } else {
            $("#navdiv").attr("style","");
            $("#menunav").attr("style","");
            $(".infor").attr("style","");
            $(".infor1").attr("style","");
            i = 0;
        }
    });

    $(window).resize(function() {
        var windowWidth = $(this).width();
        var windowHeight = $(this).height();
        $(".infor").css("width",windowWidth*0.8).css("display","block");
        $(".infor1").css("width",windowWidth*0.2).css("display","block");
    });
});

好了代码已经写完,如果有什么问题可以评论我的博客,我尽量回答大家的问题。谢谢,当然望大家踊跃指正不足之处

时间: 2024-10-10 07:17:41

爱淘宝手机版分类导航菜单弹出效果设计的相关文章

16款实用的jQuery商城分类导航菜单代码

jquery导航菜单制作红色商城导航下拉菜单样式代码 jquery红色的美容医院网站下拉分类导航菜单代码 jquery css3仿欧飞数卡商城左侧分类导航菜单样式代码 jquery仿淘宝电器城左侧自适应屏幕高度下拉导航菜单代码 jquery.SuperSlide.js仿2014年新版天猫商城首页服务分类导航菜单代码 jquery.SuperSlide仿易迅网商城左侧导航菜单分类代码 jquery hover鼠标滑过事件仿新版京东商城左侧商品分类导航菜单样式 jquery团购网站鼠标点击红色分类导

JS学习笔记(一): 使用原生JS 实现导航栏下多级分类弹出效果

在给静态页面静添加交互效果时遇到的问题 : 鼠标划入二级菜单时 一级菜单样 ":hover" 式无法保持 情景如下: 解决思路: 利用二级菜单的onmouseover/out事件 重新构建一级菜单 ".hover" 样式类 代码如下: CSS部分: 在原来的目标:hover样式中 增加 .hover状态 li.app_jd a:hover,li.app_jd a.hover{ background-position: -126px -397px; } li.serv

cocos2d-x 弹入、弹出效果(以菜单为例子)

弹入和弹出菜单为了使动作更平滑,涉及到动作组合.(CCMoveTo .CCEaseExponentialOut)(菜单背景图位置仅为示范例子,还需调整) 以菜单的背景图为例: //生成菜单背景图 CCSprite* MainMenuBG = CCSprite::create("menu_bg.png"); MainMenuBG->setPosition(ccp(visibleSize.width/2 +10,visibleSize.height +20)); this->a

【热门APP用户体验分析】购物类APP之王——淘宝安卓版(二)

在上一篇的文章中,简单的介绍了一下淘宝客户端的首页的导航栏,还有一些小的细节问题,这一篇,我们还是继续剖析淘宝客户端安卓版. 我们首先还是先放出淘宝的主界面 在这个界面中,最上方是一个广告栏,可以点击进入对应的活动界面.广告栏可以手动的滑动,而且滑动体验非常好,在使用其他软件的时候,会发生左右广告栏的滑动和上下的刷新滑动出现冲突的情况,表现出来就是界面一直在颤动,但是淘宝的广告栏做的非常好,只要在广告栏的区域滑动,触摸焦点就会被锁定,不会发生手势冲突的情况,淘宝的开发者应该是重写了控件的触摸事件

React Native之ViewPagerAndroid仿淘宝首页顶部分类布局效果实现

转载请注明出处:http://blog.csdn.net/woshizisezise/article/details/51030410 大家好,趁着现在别人都去吃饭的时间,来给大家讲一讲React Native中Android部分的控件ViewPagerAndroid的讲解,这里特别提醒一下,我写的博客都是基于大家有一些React Native基础的前提下,因为关于React Native这一系列的博文我是最近开始更新,由于自身工作繁重(每天早上10点干到晚上10点,是不是很惨?),所以暂时还没

php后管理分类导航菜单

<!DOCTYPE> <html> <head> <meta http-equiv="Content-type" content="text/html" charset="utf-8"> <title>后台管理折叠导航菜单</title> <style> body{ margin:0; padding:0; text-align:center; font:norm

做大数据时代的“淘宝”平台,IBM数据分析战略浮出水面

(上图为IBM研究人员在展示通过数据分析提高城市交通水平) 下个世纪是大数据的世纪,是从IT走向认知计算的时代.在IT时代成就了一家超级平台,这就是淘宝,而认知时代要做的是数据的生意,那是否有一个类似淘宝的超级数据平台呢?IBM正在做这件事情. IBM在全球布局了40多个基于Softlayer的数据中心,以Bluemix作为其主力云端开发平台, 在之上通过合作和收购网罗了从Twitter到The Weather Company以及这些年投入250亿美金收购的Cognos.SPSS.ILOG.Al

MUI组件三:列表、遮罩蒙版、数字输入框、侧滑导航和弹出菜单

1.list(列表) 列表是常用的UI控件,mui封装的列表组件比较简单,只需要在ul节点上添加.mui-table-view类.在li节点上添加.mui-table-view-cell类即可,如下为示例代码 <ul class="mui-table-view"> <li class="mui-table-view-cell">Item 1</li> <li class="mui-table-view-cell&q

导航条——弹出式悬浮菜单

1.概述 采用弹出式悬浮菜单,不但可以使网站的导航内容更加清晰,而且不影响页面的整体效果.运行本实例,如图1所示,当鼠标移动到一级导航菜单的标题上时,将弹出悬浮菜单显示该菜单对应的子菜单,鼠标移出时,将隐藏悬浮菜单. 2.技术要点 本实例主要是在JavaScript中,动态改变<div>标签对象的style属性的display属性值来实现动态显示和隐藏二级导航菜单.其实,每一个一级菜单下的二级菜单内容是已经添加在网页的<div>标签中,只是此时设置了<div>不显示.所