从简后台管理模版

  原文地址:精简后台管理模版
  在此以前给客户开发一个概括的后台管理连串,本来准备套用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

相关文章