原文地址:从简后台管理模版
  之前为客户开发一个简约的后台管理网,本来准备套用AdminLTE的,但客户嫌弃太臃肿,而且还要得有多tab页面切换,于是由自身代码库中找到好久前即描写过的管住后台,根据需求重写。这是冲jQuery,加上自己编辑基础样式,从零搭建起来的框架,在此轻量级模版的基础及展开开vue项目。现在顺便用这个模版搭建成我之前端demo的管住网,而当时首文章就是讲述生哪些贯彻简单的后台管理体系。

作用请圈:manage-demo:http://jeffzhong.space/sites/manage-demo/

图片 1

花色架构

  基于gulp自动化工具,使用less预编译,使用swig模版引擎编译html。

  基础样式base.css,字体库raleway,图标库fontello,js基础库jQuery。

  同时采取webpack为vue.js配置好开发环境,在src文件夹里面可以一直开销vue项目,里面有大概的vue样例。当然想就此react的为堪改为react库。

文件目录

  • dist 文件生成目录
  • src 源文件目录,里面为vue项目之公文
  • img 图片文件夹
  • lib 类库文件夹
  • less less文件
  • pages 页面文件夹
  • index.html 首页(母板页)
  • gulpfile.js
  • webpack.config.js
  • package.json

  而我辈今天只要做的便是太外层的框架页,也便是母板页,为了要其更加便利,同时服更多型的类别,只使了无以复加基础的jquery来落实效益。

基本功样式库

  每个前端开发者开过大量路后,基本都见面出温馨的体库吧。我之base-css是参考了有的bootstrap和pure的样式库,精简了重重零件,非常之轻量级。详细代码请圈https://github.com/edwardzhong/base-csss,less预编译,gulp自动化,可以自由选择所待的零件后再也装进,经过如此定制打包后的体体积就更是的有点了。该样式库主要概括如下组件:

  • normalize:html5标签修复
  • grid:响应式网格
  • alert
  • button
  • breadcrumb
  • dialog
  • form
  • menu
  • pager
  • pagination
  • panel
  • tab
  • table

起矣根基样式之后,我们搭建系统就是有益多了。

落实母板页

  后台管理体系最要之饶是母板页(index.html),我们一步步来兑现它。

布局

  基本就是左右布局:左边导航部分定位宽度,右边内容有宽自适应。实现此布局有死多种方式,这里不详叙,从实现动画与于适应方面考虑,我利用的是绝定位的措施。左边的导航栏隐藏显示动画是经设置margin-left和transition属性实现的。

    /*左边导航栏*/
    .menu-wrap {
        position: absolute;
        transition: margin-left .3s ease-in-out;
        top: 50px;
        left: 0;
        width: 200px;
        height: calc(100% - 50px);
        overflow-y: scroll;
    }
    /*右边内容部分*/
    .main {
        height: calc(100% - 50px);
        overflow: hidden;
        margin-left: 200px;
        transition: margin-left .3s ease-in-out;
    }

导航栏

  导航栏就是用ul列表布局,如果要是兑现多元的子菜单就在相应li下再嵌套一个ul列表即可,然后上加样式,添加css3动画片等。布局示例请看如下的代码:

    <ul id="menuList" class="side-menu">
        <li class="children">
          <a data-type="tab" title="Html Component" href="javascript:;"><i class="icon-doc-text"></i>Html Component</a>
          <ul style="height: 0px;">
            <li><a data-type="tab" title="Alert" href="./pages/alert.html"> Alert</a> </li>
            <li><a data-type="tab" title="Page" href="./pages/page.html"> Page</a> </li>
            <li><a data-type="tab" title="Panel" href="./pages/panel.html"> Panel</a> </li>
          </ul>
        </li>
        <li>
          <a title="My Blog" href="/"><i class="icon-bookmark"></i>My Blog</a>
        </li>
    </ul>

实现多tab内容面

  很多后台管理模版都是透过沙盘引擎编译页面内容,这样大成的每个页面还见面含有导航栏和情节块,这样的益处就是是编制比较简单。但是点击导航栏里之链接就是转头又加载整个页面,在网速不出彩的情,就见面看到所有页面在扑腾。

  另一样种办法是使用frameset或iframe,嵌套页面。这样内容页与母版页是分手之,分别加载的。这样见面体会于好,编写的代码也是与世隔膜的。但为是割裂了作用域,所以要是专门处理框架内外层通信的问题,同时编制也会小麻烦。

  我这边选用的是iframe方案,因为用多iframe实现母板页多tab显示比较便宜。这样左边导航栏点击后虽会见创造新的iframe并填写入链接,然后重新将拖欠iframe插入内容块。同时tab栏也应和插入一一对应之tab标签,这样点击tab标签就是隐藏显示对许iframe块。请圈如下的html代码结构:

    <div id="main" class="main">
      <nav class="nav">
        <!-- tab标签 -->
        <ul id="nav" class="menu-tabs">
            <li><a>...</a><li>
            <li><a>...</a><li>
        </ul>
      </nav>
      <!-- 页面iframe -->
      <div class="page-con">
        <div class="page"><iframe src="..."></iframe></div>
        <div class="page"><iframe src="..."></iframe></div>
      </div>
    </div>

  母板页的添加iframe和添加tab标签的代码

    //添加页面
    function appendPage(url){
      $('.page-con .page').removeClass('active');
      $('.page-con').append('<div class="page active"><iframe src="'+url+'" frameborder="0" width="100%" height="100%"></iframe></div>');
    }

    //添加tab
    function appendTab(txt){
      $nav.find('li').removeClass('active');
      $nav.append('<li data-txt="'+txt+'" class="active"><a href="javascript:;">'+txt+'<i class="close">×</i></a></li>');
      var w=setTabWidth();
      //移动到新增tab
      $navParent.animate({'scrollLeft':w+'px'},600); 
    }

  当然就中间有多细节,比如添加,删除,选择,滚动页面,tab栏的选料关闭,tab栏内容超出页面宽度之处理,当前tab如何滚动到目前显示区等,具体贯彻可翻github代码。

内容页

  完成母板页后,接下便增长内容页了。首先就是概念导航链接,添加了由定义属性data-type=”tab”的链接就是是如果以右侧内容iframe打开的页面,否则就是打开外部链接了。每个在iframe打开的a标签而部署title属性,因为自是经过title来分页面是否已开辟过,tab中就在就是不再打开。

  内容页既可是静态页面,也可以用vue,react构造页面,demo里面来有页面下了vue来实现逻辑功能。

    <ul id="menuList" class="side-menu">
        <!-- 要添加到iframe中的链接 -->
        <li><a data-type="tab" title="Alert" href="./pages/alert.html"> Alert</a> </li>
        <!-- 外部链接跳转 -->
        <li><a title="My Blog" href="/"><i class="icon-bookmark"></i>My Blog</a></li>
    </ul>

总结

  这个模版还有为数不少地方要宏观,可以于此基础及改补充加相应功能,也得以以斯基础及以vue,react实现内容页的法力。
具体细节要查看代码:https://github.com/edwardzhong/manage-demo

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图