JS实现侧部菜单栏的滑动

最近的网站越来越流行侧部菜单栏,所以今天自己实现了一下:


<body>

    <div id="main">

        <div id="content">
            <img src="http://p2.qhimg.com/t01a17710c9463ec2d5.jpg" style="width:
            100%;height: 100%"/>//背景图片
            <img src="1.png" style="width: 38px;height: 37px" id="img1">//这张图片点击后调用菜单栏scrollTo(出现)动画
        </div>

        <div id="menu" hidden="hidden">//菜单栏一开始是隐藏的
            <div id="close">
              <h1>关闭</h1>//点击后调用菜单栏hiddenTo(隐藏)动画
            </div>
        </div>

    </div>

    <div id="background" hidden="hidden">//半透明背景默认隐藏
    </div>
</body>

<code class="language-python hljs  has-numbering">下面是CSS代码块:</code>
<style>
        body{
            margin: 0px;
            padding: 0px;
        }



        #main{
           position: relative;
           height: 100%;
           overflow: hidden;
           top:0;
           left: 0;
        }


        #content{
           height: 100%;
           overflow: hidden;

        }

        #menu{
            height: 100%;
            width: 300px;
            position: absolute;
            top:0px;
            left:100%;
            z-index: 1;
            background: darkturquoise;
        }

        #background{
            background: #3F4347;
            position:absolute;
            top:0;
            left:0;
        }

        #menu h1{
            font-size: 15px;
            padding: 5px;
            width: 30px;
            background: red;
            text-align: center;
            cursor:pointer;
        }

        #close{
            float: right;
            margin-right:10px;
        }

        #img1{
            position: absolute;
            top: 20px;
            right: 20px;
            cursor:pointer;
        }
    </style>

<code class="language-python hljs  has-numbering">//实现一个滑动对象,返回两个方法,一个是scrollTo显示菜单栏方法,另一个是hiddenTo隐藏菜单栏的方法,这里
//用到了JS的封装思想充分证明JS是一门面向对象的语言</code>
function Swipe(container){

    var $element = $("#"+container+":hidden");
    var $background = $("#background:hidden");

    var $main = $("#main");
    var height = $main.height();
    var width = $main.width();


    $background.css({
       height:height +"px",
       width:width + "px"
    });

    var swipe = {};

    //显示动画
    swipe.scrollTo = function(speed){
       $element.show();
       $element.animate({
           left: '-=300'
       },speed,function(){
           $background.fadeTo("slow",0.5);
       });


        return this;
    };

    //隐藏动画
    swipe.hiddenTo = function(speed){
        $element.animate({
            left: '+=300'
        },speed,function(){
            $background.fadeTo("slow",0);
            $element.hide();
            $background.hide();
        });
    };

    return swipe;

}

做一些初始化:

$(function(
    var swipe =  Swipe("menu");

    var $background = $("#background");
    $background.click(function(){
        swipe.hiddenTo(2000);
    });
    var $close = $("#close");
    $close.click(function () {
        swipe.hiddenTo(2000);
    });
    var img1 = $("#img1");
    img1.click(function(){
        swipe.scrollTo(2000);
    });
));

到此,项目完成

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值