web学习笔记12-移动端简易电梯效果

    前两个月离职之后就休息了短时间,最近刚入职新公司,开始做想的电商方面的项目,也挺有意思的,之前jquery相对用得少了点,基础也比较薄弱,在新的项目中就在慢慢补习中。这两天正好做到相关的电梯效果,就写了个小的demo,简易版,供大家刚开始搞的朋友们看看。

    这里呢还是跟往常一样,先放上github链接Elevator和预览图,有个直观的感受才能有兴趣往下看,不过这个偏基础,如果刚入门的话可以看看。

电梯效果.gif

    下面就开始正式的说下我的思路,大家要是有好的思路可以更我交流,互相学习学习。

第一步:设置meta,编写html架子,引入jquery

    首先就是编写页面,页面分为左右两个部分,上面的数据在实际运用中都是从后台获取,或者是本地数据,我这暂时是写死的数据,左边为leftSide,右边为rightSide,左边每个分类都在右边有一块代表这个分类的区域,并且内部会有相应的内容。这块内容叫做rightContent。因为内容都是动态添加的,所以html部分只有很少的代码。

<head>
    <meta name="viewport" content="width=device-width,initial-scale=1.0,minimum-scale=1.0,user-scalable=no">
    <script language="javascript" src="jquery.js"></script>
</head>
  <body>
    <div class="content">
        <div class="leftSide" id="leftSide">

        </div>
        <div class="rightSide">
       
        </div>
    </div>
</body>

第二步:给架子添加css样式

       *{
            padding:0;
            margin: 0;
            background-color: #f5f5f9;
            overflow:hidden
        }
        .content{
            width: 100%;
            height: 100%;
            overflow: hidden;
            position: fixed;
        }
        .leftSide{
            float: left;
            width: 30%;
            height: 100%;
            background-color: transparent;
            overflow: auto;
        }
        .rightSide{
            float: left;
            width: 70%;
            height: 100%;
            background-color: #f5f5f9;
            overflow: hidden;
        }

    为了不让整个页面随鼠标滚动而滚动,所以要在*中设置overflow:hidden,而整块区域也同样要这么设置。左边区域为了可以上下滑动看分类,则是需要设置成auto的。

第三步:左右动态添加菜单并设置样式

    左边要添加很多小块,并且需要设置选中样式,所以先添加样式

        .leftSide span{
            display: block;
            width: 100%;
            height: 40px;
            background-color: white;
            border-bottom: 1px solid transparent;
        }
        .leftSide span p{
            display: block;
            margin: 0 auto;
            width: 80%;
            height: 100%;
            background-color: transparent;
            text-align: center;
            line-height: 40px;
            font-size: 14px;
            color:black;
            border-bottom: 1px solid lightgrey;
        }
        .leftSide .active{
            border-left: 3px solid red;
            background-color: #f5f5f9;
        }
        .rightSide .rightContent{
            width: 100%;
            height: 100%;
            background-color: #f5f5f9;
            overflow: auto;
        }
        .line{
            width: 80%;
            height: 50px;
            background-color: lightgrey;
            margin: 0 auto;
            margin-top: 10px;
            text-align: center;
            line-height: 50px;
        }

    左右动态添加元素和假数据

    //分类数组
    var list = ['推荐分类','京东超市','手机数码','国际名牌','奢侈品','电脑办公','家用电器','食品生鲜','酒水饮料','母婴童装','玩具乐器','汽车用品','厨具','男装','女装','男鞋','女鞋','箱包手袋','钟表珠宝'];

    //设置左边滑动
    var html = '';
    for(var i = 0;i < list.length;i++){
        if(i == 0){
            html = '<span class="active" onclick="setActive('+i+')">'+'<p>'+list[i]+'</p>'+'</span>';
        }else{
            html = '<span onclick="setActive('+i+')">'+'<p>'+list[i]+'</p>'+'</span>';
        }
        rightContent = '<div class="rightContent"></div>';
        $("#leftSide").append(html);
        $(".rightSide").append(rightContent);

    }
      //动态添加假数据div
    var fadeDataDiv = '';
    for(var i = 0; i < list.length;i++){
        fadeDataDiv = '<div class="line">'+'商品数据'+i+'</div>';
        $(".rightContent").append(fadeDataDiv);
    }

第四步:获取距离顶部距离的数组

    获取每一个分类右侧的div距离顶部的距离,在点击事件中可以进行相应的设置。

    //获取距离顶部距离的数组
    var topData = [];
    for(var j=0;j<$('.rightContent').length;j++){
        topData.push($('.rightContent').eq(j).offset().top);
    }

第五步:完成点击事件

    在点击事件中首先要把已点击的样式去掉,然后为被点击的元素添加样式,同时设置右侧菜单距离顶部距离。

    //设置右边显示区域
    function setActive(i){
        $(".leftSide span").removeClass('active');
        $(".leftSide span").eq(i).addClass('active');
        $('.rightSide').animate({scrollTop:topData[i]+'px'});
    }

    这样就基本完成了功能,在此基础上可以继续往复杂的写,也可以写不一样的。要是看到上面有问题可以留言讨论。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 200,783评论 5 472
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,396评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 147,834评论 0 333
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,036评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,035评论 5 362
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,242评论 1 278
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,727评论 3 393
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,376评论 0 255
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,508评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,415评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,463评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,140评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,734评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,809评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,028评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,521评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,119评论 2 341

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,292评论 25 707
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,566评论 18 139
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 11,983评论 4 60
  • 过分照顾与溺爱》孤僻、胆小 秀秀是独生子女,幼儿园聪明好学,但性格温顺、孤僻、胆小。其父母对她宠爱有加。由于父母工...
    吴悦溪阅读 1,188评论 0 0
  • 床垫里的百万欧元 老太太的子女为了给她一个生日惊喜,在老太太不知情的情况下,将她家进行了大改造,扔了许多旧家具,添...
    刘唐小妞阅读 10,385评论 0 0