原文地址:言简意赅后台管理模版
  此前给客户开发一个简短的后台管理序列,本来准备套用AdminLTE的,但客户嫌弃太臃肿,而且又需要有多tab页面切换,于是从自家代码库中找到好久前就写过的田间管理后台,遵照要求重写。这是遵照jQuery,加上自己编写基础样式,从零搭建起来的框架,在这一个轻量级模版的根基上举办支付vue项目。现在顺便将以此模版搭建成我的前端demo的管住类别,而这篇小说就讲述下如何落实简单的后台管理连串。

功能请看:manage-demo:http://jeffzhong.space/sites/manage-demo/

jQuery 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
  • jQuery,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地图