jquery插件splitScren实现页面分屏切换模板特效


Posted in Javascript onJune 16, 2015

闲来无事,搞了个页面的分屏效果,先来看下效果:

出于可自定义宽高的目的,屏幕分块由CSS控制,由js控制估计等分模块效果一般.

jquery插件splitScren实现页面分屏切换模板特效

程序相关说明:

HTML结构:

<div class="header">
      header
</div>
  <div class="container" id="displayArea">
      <!-- 分屏内容渲染区域 -->
  </div>
<div class="footer">
 <!--省略其他代码-->
</div>

js调用:

//分屏数据
      var iframes = [
          {
            id:'frames_1',
            frameName:'百度一下',
            src:'http://www.baidu.com'
          },
          {
            id:'frames_1',
            frameName:'百度地图',
            src:'http://map.baidu.com'
          },
          {
            id:'frames_1',
            frameName:'百度下',
            src:'http://www.baidu.com'
          },
          {
            id:'frames_1',
            frameName:'百度视频',
            src:'http://v.baidu.com'
          },
          {
            id:'frames_1',
            frameName:'百度新闻2',
            src:'http://news.baidu.com'
          },
          {
            id:'frames_1',
            frameName:'test6',
            src:'6.html'
          },
          {
            id:'frames_1',
            frameName:'百度新闻',
            src:'http://news.baidu.com'
          },
          {
            id:'frames_1',
            frameName:'88888',
            src:'6.html'
          },
          {
            id:'frames_1',
            frameName:'百度更多',
            src:'http://www.baidu.com/more/'
          }
        ];
      //自适应屏幕
      window.onload = function(){
        Panel.resize();
      }
      window.onresize = function(){
        Panel.resize();
      }

      //初始化分屏
      var splitScreen = new splitScreen($('#displayArea'),iframes);

      //监听removeSettingCls自定义事件
      splitScreen._on('removeSettingCls',function(){
        splitScreen.toggleTopbar(function(){
            $('.ulTab li[data-fp="setting"]').removeClass('currentLi');
          });
      });
      //分屏切换
      function changeModel(obj){
        var fpmodel = $(obj).attr('data-fp');
        if(fpmodel !="setting"){
          splitScreen.screenMode(fpmodel,function(){
            $(obj).addClass('currentLi').siblings().removeClass('currentLi');
          });
        }else{
          splitScreen.toggleTopbar(function(){
            $(obj).toggleClass('currentLi');
          });
        }
      }

splitScreen.js相关代码说明:

1.定义一个类

var splitScreen = function(elem, options) {
  this.elem = elem; //分屏模块渲染区域元素
  this.options = options;//分屏链接数据
  this.initialize.apply(this); //初始化初始化分屏
}

2.prototype主要方法

splitScreen.prototype= {
    initialize: function() {},//初始化方法
    screenMode: function(){},//分屏方法
    renderPanel:function(){},//渲染分屏DOM
    bindPanel:function(){} //事件监听
 
};

3.screenMode()方法说明:

主要是根据不同的分屏切换不同的Class,通过CSS类去控制分屏布局.这样写的好处应该是可以自定义布局的宽高大小,但是比较繁琐。如下:

switch (Number(mode)) {
      case 1:
        this.data = [
          ['fp-1-1']
        ];
        this.defaultShow = [0];
        break;
      case 2:
        this.data = [
          ['fp-2-1'],
          ['fp-2-2']
        ];
        this.defaultShow = [1, 2];
        break;
      case 3:
        this.data = [
          ['fp-3-1'],
          ['fp-3-2', 'fp-3-3']
        ];
        this.defaultShow = [1, 2, 3];
        break;
      case 4:
        this.data = [
          ['fp-4-1', 'fp-4-2'],
          ['fp-4-3', 'fp-4-4']
        ];
        this.defaultShow = [4, 1, 2, 3];
        break;
      case 5:
        this.data = [
          ['fp-5-1'],
          ['fp-5-2'],
          ['fp-5-3', 'fp-5-4', 'fp-5-5']
        ];
        this.defaultShow = [4, 5, 1, 2, 3];
        break;
      case 6:
        this.data = [
          ['fp-6-1'],
          ['fp-6-2', 'fp-6-3'],
          ['fp-6-4', 'fp-6-5', 'fp-6-6']
        ];
        this.defaultShow = [4, 5, 6, 7, 8, 8];
        break;
      default:
        alert("不支持" + mode + "分屏");
    }

CSS布局控制:

.fp-box{position:absolute;border:1px solid #000;background:#fff;}
      .fp-1-1{top:0;left:0;right: 0;bottom: 0;}
      .fp-2-1{top:0;left:0;right: 300px;bottom: 0;}
      .fp-2-2{top:0;right: 0px;bottom: 0; width: 300px;}
      .fp-3-1{top:0;left:0;right: 300px;bottom: 0;}
      .fp-3-2{top:0;right: 0;width:300px;height:50%;}
      .fp-3-3{top:50%;right: 0;bottom: 0;width:300px;}

      .fp-4-1{top:0;left:0;right: 50%;height:50%;}
      .fp-4-2{top:50%;left:0;right: 50%;bottom: 0;}
      .fp-4-3{top:0;right: 0;width:50%;height:50%;}
      .fp-4-4{top:50%;right: 0;bottom: 0;width:50%;}
  
      .fp-5-1{top:0;left:0;right: 300px;bottom: 252px;}
      .fp-5-2{top:0px;width:300px;right: 0;bottom: 252px;}
      .fp-5-3{height: 250px;left:0;width:30%;bottom: 0;}
      .fp-5-4{height: 250px;left:30%;width:30%;bottom: 0;}
      .fp-5-5{height: 250px;left:60%;bottom: 0;right: 0;}

      .fp-6-1{top:0;left:0;right: 300px;bottom: 252px;}
      .fp-6-2{top:0;width:300px;right: 0;height:250px;}
      .fp-6-3{top:250px;width:300px;right: 0;bottom: 252px;}
      .fp-6-4{height: 250px;left:0;width:30%;bottom: 0;}
      .fp-6-5{height: 250px;left:30%;width:30%;bottom: 0;}
      .fp-6-6{height: 250px;left:60%;bottom: 0;right: 0;}

完整代码:

HTML:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>fp version2</title>
  
  <style type="text/css">
      *{margin:0;padding:0;}
      .header{background:#ddd;height:120px;}
      .footerCon{width:320px;margin: 0 auto;}
      .footerCon .dropDiv{background: #fff; margin: 10px 0 0 0; float: left;}
      .footerCon .fpmodel{display: none;float: right;width:160px;}
      .footerCon .saveBtn{margin: 10px 0 0 10px; padding: 2px 10px;border:1px solid #CCC;cursor: pointer;}
      .clearFix:after{content:'';display:block;height:0;overflow:hidden;clear:both;} 
      .footer { height: 40px; background: #ABABAB; position: fixed; bottom: 0px; width: 100%; }
      .footer .ulTab {list-style-type: none;width:200px;overflow: hidden;float: left;}
      .footer .ulTab li{float: left;height:16px;padding: 12px 15px;cursor: pointer;}
      .footer .ulTab li.currentLi{background: #fff;}
      
      .tabImg{width:18px;height: 14px;border:1px solid #707070;background:#fff;}
      .tabImg td{width: 9px;height: 5px;border:1px solid #707070;}
      .divImg{border-width:2px;height: 12px;}
      .td3Img td{height: 3px;}
      .currentLi .tabImg,.currentLi .tabImg td{border-color:#1e7be4;}

      .topbarDiv{position: absolute;left: 0;top:0;right:0;border:1px solid #dedede;z-index: 1;height:25px;padding:3px;background: #61C0FA;display: none;}
      .changeBtn{cursor:pointer; padding: 2px 10px;float: left;}
      .dropDiv,.footer .dropDiv{position: relative;width: 100px;z-index: 100;}
      .dropDiv .curSrc,.footer .dropDiv .curSrc{display: inline-block;height: 20px;line-height: 20px;padding: 0 2px;}
      .dropDiv ul,.footer .dropDiv ul{position: absolute;left: -1px;top:20px;background: #fff;width:100px;border:1px solid #1E7BE4;display: none;}
      .dropDiv ul li,.footer .dropDiv ul li{line-height: 20px;padding: 0 2px;}
      .dropDiv ul li.currentSrc,.footer .dropDiv ul li.currentSrc{background: #1E7BE4;color: #fff;cursor: pointer;}
      .dropDiv ul li:hover,.footer .dropDiv ul li:hover{background:#AEC9F3;color: #fff;cursor: pointer;}
      .optionsWrap{float: right;}
      .optionsWrap a{font-family: 'MicroSoft YaHei';color:#fff;text-decoration:none;float: left;}
      .optionsWrap a:hover{color: #fdd;cursor:pointer;}
      .btnBig{width: 50px;height:30px;text-align: center;}
      .btnSmall{width: 50px;height:30px;text-align: center;}
      .btnCls{width: 50px;height:30px;text-align: center;}
      /*分屏模块布局*/
      .container{position: relative;}
      .fp-box{position:absolute;border:1px solid #000;background:#fff;}
      .fp-1-1{top:0;left:0;right: 0;bottom: 0;}
      .fp-2-1{top:0;left:0;right: 300px;bottom: 0;}
      .fp-2-2{top:0;right: 0px;bottom: 0; width: 300px;}
      .fp-3-1{top:0;left:0;right: 300px;bottom: 0;}
      .fp-3-2{top:0;right: 0;width:300px;height:50%;}
      .fp-3-3{top:50%;right: 0;bottom: 0;width:300px;}

      .fp-4-1{top:0;left:0;right: 50%;height:50%;}
      .fp-4-2{top:50%;left:0;right: 50%;bottom: 0;}
      .fp-4-3{top:0;right: 0;width:50%;height:50%;}
      .fp-4-4{top:50%;right: 0;bottom: 0;width:50%;}
  
      .fp-5-1{top:0;left:0;right: 300px;bottom: 252px;}
      .fp-5-2{top:0px;width:300px;right: 0;bottom: 252px;}
      .fp-5-3{height: 250px;left:0;width:30%;bottom: 0;}
      .fp-5-4{height: 250px;left:30%;width:30%;bottom: 0;}
      .fp-5-5{height: 250px;left:60%;bottom: 0;right: 0;}

      .fp-6-1{top:0;left:0;right: 300px;bottom: 252px;}
      .fp-6-2{top:0;width:300px;right: 0;height:250px;}
      .fp-6-3{top:250px;width:300px;right: 0;bottom: 252px;}
      .fp-6-4{height: 250px;left:0;width:30%;bottom: 0;}
      .fp-6-5{height: 250px;left:30%;width:30%;bottom: 0;}
      .fp-6-6{height: 250px;left:60%;bottom: 0;right: 0;}
  </style>
</head>
<body>  
    <div class="header">
      header
    </div>
    <div class="container" id="displayArea">
      <!-- 分屏内容区 -->
    </div>
    <div class="footer">
    <div class="footerCon clearFix">
      <ul class="ulTab">
        <li class="currentLi" data-fp ="1" onclick="changeModel(this)">
          <div class="tabImg divImg"></div>
        </li>
        <li data-fp ="3" onclick="changeModel(this)">
          <table class="tabImg" cellpadding="0" cellspacing="0">
            <tr>
              <td rowspan="2"></td>
              <td></td>
            </tr>
            <tr>
              <td></td>
            </tr>
          </table>
        </li>
        <li data-fp ="6" onclick="changeModel(this)">
          <table class="tabImg td3Img" cellpadding="0" cellspacing="0">
            <tr>
              <td rowspan="2" colspan="2"></td>
              <td></td>
            </tr>
            <tr>
              <td></td>
            </tr>
            <tr>
              <td></td>
              <td></td>
              <td></td>
            </tr>
          </table>
        </li>
        <li data-fp ="setting" onclick="changeModel(this)" title="设置">
          <table class="tabImg td3Img" cellpadding="0" cellspacing="0">
            <tr>
              <td rowspan="2" colspan="2"></td>
              <td></td>
            </tr>
            <tr>
              <td></td>
            </tr>
            <tr>
              <td></td>
            </tr>
          </table>
        </li>
      </ul>
    </div>
  </div>
  <script type="text/javascript" src="js/jquery-1.7.2.min.js"></script>
  <script type="text/javascript" src="js/splitScreen.js"></script>
  <script type="text/javascript">
      //分屏数据
      var iframes = [
          {
            id:'frames_1',
            frameName:'百度一下',
            src:'http://www.baidu.com'
          },
          {
            id:'frames_1',
            frameName:'百度地图',
            src:'http://map.baidu.com'
          },
          {
            id:'frames_1',
            frameName:'百度下',
            src:'http://www.baidu.com'
          },
          {
            id:'frames_1',
            frameName:'百度视频',
            src:'http://v.baidu.com'
          },
          {
            id:'frames_1',
            frameName:'百度新闻2',
            src:'http://news.baidu.com'
          },
          {
            id:'frames_1',
            frameName:'test6',
            src:'6.html'
          },
          {
            id:'frames_1',
            frameName:'百度新闻',
            src:'http://news.baidu.com'
          },
          {
            id:'frames_1',
            frameName:'88888',
            src:'6.html'
          },
          {
            id:'frames_1',
            frameName:'百度更多',
            src:'http://www.baidu.com/more/'
          }
        ];
      window.onload = function(){
        Panel.resize();
      }
      window.onresize = function(){
        Panel.resize();
      }

      //初始化分屏
      var splitScreen = new splitScreen($('#displayArea'),iframes);
      
      //监听removeSettingCls自定义事件
      splitScreen._on('removeSettingCls',function(){
        splitScreen.toggleTopbar(function(){
            $('.ulTab li[data-fp="setting"]').removeClass('currentLi');
          });
      });
      //分屏切换
      function changeModel(obj){
        var fpmodel = $(obj).attr('data-fp');
        if(fpmodel !="setting"){
          splitScreen.screenMode(fpmodel,function(){
            $(obj).addClass('currentLi').siblings().removeClass('currentLi');
          });
        }else{
          splitScreen.toggleTopbar(function(){
            $(obj).toggleClass('currentLi');
          });
        }
      }
  </script>
</body>
</html>

JS:

/**
 * splitScren.js
 * v1.2
 * 2015-5-14
 * by linxia
 **/
var splitScreen = function(elem, options) {
  this.elem = elem;
  this.options = options;
  this.initialize.apply(this);
}

splitScreen.prototype = {
  initialize: function() {
    this.handlers = {};
    this.screenMode(1);
  },
  screenMode: function(mode, callback) {
    this.elem.empty();
    this.data = null;
    this.defaultShow = null; //默认展示页面的索引
    switch (Number(mode)) {
      case 1:
        this.data = [
          ['fp-1-1']
        ];
        this.defaultShow = [0];
        break;
      case 2:
        this.data = [
          ['fp-2-1'],
          ['fp-2-2']
        ];
        this.defaultShow = [1, 2];
        break;
      case 3:
        this.data = [
          ['fp-3-1'],
          ['fp-3-2', 'fp-3-3']
        ];
        this.defaultShow = [1, 2, 3];
        break;
      case 4:
        this.data = [
          ['fp-4-1', 'fp-4-2'],
          ['fp-4-3', 'fp-4-4']
        ];
        this.defaultShow = [4, 1, 2, 3];
        break;
      case 5:
        this.data = [
          ['fp-5-1'],
          ['fp-5-2'],
          ['fp-5-3', 'fp-5-4', 'fp-5-5']
        ];
        this.defaultShow = [4, 5, 1, 2, 3];
        break;
      case 6:
        this.data = [
          ['fp-6-1'],
          ['fp-6-2', 'fp-6-3'],
          ['fp-6-4', 'fp-6-5', 'fp-6-6']
        ];
        this.defaultShow = [4, 5, 6, 7, 8, 8];
        break;
      default:
        alert("不支持" + mode + "分屏");
    }
    if (this.data != null) {
      this.renderPanel();
      this.bindPanel();
    }
    callback && callback();
  },
  //渲染DOM结构
  renderPanel: function() {
    var that = this;
    var options = this.options;
    var htmlstr = '';

    for (var item = 0; item < options.length; item++) {
      htmlstr += '<option value="' + options[item].src + '" label = "' + options[item].frameName + '">' + options[item].frameName + '</option>';
    }
    for (var i = 0; i < this.data.length; i++) {
      var moduleDiv = $('<div></div>').addClass('fp-module-' + i + '');

      for (var j = 0; j < this.data[i].length; j++) {
        var fpDiv = $('<div>').addClass(this.data[i][j]).addClass('fp-box');
        var topbarDiv = $('<div class="topbarDiv" style="display: none;">' +
          '<span class="optionsWrap">' +
          '<a class="btnBig" title="放大" href="javascript:void(0);">放大</a><a class="btnSmall" title="缩小" href="javascript:void(0);" style="display:none;">缩小</a> <a href="javascript:void(0);" class="btnCls" title="关闭"style="display:none;">关闭</a>' +
          '</span>' +
          '<div class="dropDiv">' +
          '<select class="fp-select"><option value="-1">请选择</option>' + htmlstr +
          '</select>' +
          '</div>' +
          '</div>');
        var iframe = $('<iframe width="100%" height="100%" frameBorder="0" scrolling = "auto"></iframe>');
        if (i == 0) {
          fpDiv.attr('zp', 'zp');
        }
        fpDiv.append(topbarDiv);
        fpDiv.append(iframe);
        moduleDiv.append(fpDiv);
        this.elem.append(moduleDiv);
      }
    }
    // render iframe
    this.elem.find('iframe').each(function(i) {
      if (options[i]['src']) {
        var frameSrc = options[that.defaultShow[i]]['src'];
        var frameName = options[that.defaultShow[i]]['frameName'];
        var curtopbar = $(this).siblings('.topbarDiv');
        that.loadIframe($(this), frameSrc, frameName);
        curtopbar.find('option').each(function() {
          if ($(this).attr('label') == frameName) {
            $(this).attr('selected', 'selected');
          }
        });

      }
    });
  },
  bindPanel: function() {
    var that = this;
    // add select Event
    this.elem.on('change', '.fp-select', function() {
      var value = $(this).find('option:selected').val();
      var label = $(this).find('option:selected').attr('label');
      var iframe = $(this).closest('.fp-box').find('iframe');
      if (value != "-1") {
        that.loadIframe(iframe, value, label);
      }
    });

    // btnbig Event
    this.elem.on('click', '.btnBig', function() {
      var obj = Panel.getSize();
      var btnSmall = $(this).siblings('.btnSmall');
      var btnCls = $(this).siblings('.btnCls');
      var fpbox = $(this).closest('.fp-box');
      fpbox.css({
        'zIndex': 999
      }).stop().animate({
        'top': 0,
        'left': 0,
        'width': obj.w - 2,
        'height': obj.h,
        'right': 0,
        'bottom': 0

      }, 300).attr('scaleMode', 'large');
      that.elem.find('.fp-box:not([scaleMode="large"])').hide();
      $(this).hide();
      $('html,body').css({
        'overflow': 'hidden'
      });
      btnSmall.show();
      //btnCls.show();
    });
    // btnsmall Event
    this.elem.on('click', '.btnSmall', function() {
      var btnBig = $(this).siblings('.btnBig');
      var fpbox = $(this).closest('.fp-box');
      var btnCls = $(this).siblings('.btnCls');
      fpbox.removeAttr('style').removeAttr('scaleMode');
      $(this).hide();
      that.elem.find('.fp-box').show();
      $('html,body').css({
        'overflow': 'visible'
      });
      btnCls.hide();
      btnBig.show();
    });
    // btncls Event
    this.elem.on('click', '.btnCls', function() {
      var fpbox = $(this).closest('.fp-box');
      fpbox.remove();
      that.elem.find('.fp-box').show();
      that.fire('removeSettingCls');
    });
  },
  toggleTopbar: function(callback) {
    if (this.elem.find('.topbarDiv:visible').length > 0) {
      this.elem.find('.topbarDiv').hide();
    } else {
      this.elem.find('.topbarDiv').show();
    }
    callback && callback();
  },
  loadIframe: function(iframe, src, framename) {
    $(iframe).attr('src', src);
    $(iframe).attr('framename', framename);
  },
  _on: function(type, handler) {
    if (typeof this.handlers[type] == "undefined") {
      this.handlers[type] = [];
    }
    this.handlers[type].push(handler);
    return this;
  },
  fire: function(type, data) {
    if (this.handlers[type] instanceof Array) {
      var handlers = this.handlers[type];
      for (var i = 0, len = handlers.length; i < len; i++) {
        handlers[i](data);
      }
    }
  }
};

var Panel = {
  config: {
    header: $('.header'),
    container: $('.container'),
    footer: $('.footer'),
    win: $(window)
  },
  resize: function() {
    var topH = Panel.config.header.height();
    var botH = Panel.config.footer.height();
    var mainH = Panel.config.win.height() - topH - botH;
    mainH = mainH < 0 ? 100 : mainH;
    Panel.config.container.height(mainH);
    if ($('.fp-box[scaleMode="large"]').length > 0) {
      $('.fp-box[scaleMode="large"]').css({
        'width': Panel.config.win.width() - 2,
        'height': mainH
      });
    }
  },
  getSize: function() {
    var obj = {
      w: Panel.config.container.width(),
      h: Panel.config.container.height()
    };
    return obj;
  }
};

以上所述就是本文的全部内容了,希望大家能够喜欢。

Javascript 相关文章推荐
解读JavaScript代码 var ie = !-[1,] 最短的IE判定代码
May 28 Javascript
javascript相等运算符与等同运算符详细介绍
Nov 09 Javascript
页面定时刷新(1秒刷新一次)
Nov 22 Javascript
javascript异步编程的4种方法
Feb 19 Javascript
JavaScript判断数组是否存在key的简单实例
Aug 03 Javascript
微信小程序开发实战教程之手势解锁
Nov 18 Javascript
Require.js的基本用法详解
Jul 03 Javascript
jQuery动态添加元素无法触发绑定事件的解决方法分析
Jan 02 jQuery
node中的密码安全(加密)
Sep 17 Javascript
vue如何获取自定义元素属性参数值的方法
May 14 Javascript
node.js中path路径模块的使用方法实例分析
Feb 13 Javascript
prettier自动格式化去换行的实现代码
Aug 25 Javascript
简述JavaScript对传统文档对象模型的支持
Jun 16 #Javascript
纯javascript实现四方向文本无缝滚动效果
Jun 16 #Javascript
Bootstrap基础学习
Jun 16 #Javascript
简述JavaScript的正则表达式中test()方法的使用
Jun 16 #Javascript
常用DOM整理
Jun 16 #Javascript
AngularJS学习笔记之ng-options指令
Jun 16 #Javascript
在JavaScript的正则表达式中使用exec()方法
Jun 16 #Javascript
You might like
qq登录,新浪微博登录接口申请过程中遇到的问题
2014/07/22 PHP
Linux+Nginx+MySQL下配置论坛程序Discuz的基本教程
2015/12/23 PHP
浅谈PHP检查数组中是否存在某个值 in_array 函数
2016/06/13 PHP
javascript笔试题目附答案@20081025_jb51.net
2008/10/26 Javascript
你必须知道的JavaScript 变量命名规则详解
2013/05/07 Javascript
使用forever管理nodejs应用教程
2014/06/03 NodeJs
jQuery easyui的validatebox校验规则扩展及easyui校验框validatebox用法
2016/01/18 Javascript
Bootstrap对话框使用实例讲解
2016/09/24 Javascript
JavaScript中匿名函数的递归调用
2017/01/22 Javascript
深入理解Angularjs中$http.post与$.post
2017/05/19 Javascript
angular2 ng2 @input和@output理解及示例
2017/10/10 Javascript
Node.js学习之TCP/IP数据通讯(实例讲解)
2017/10/11 Javascript
VUE实现强制渲染,强制更新
2019/10/29 Javascript
vue 使用 vue-pdf 实现pdf在线预览的示例代码
2020/04/26 Javascript
JavaScript实现下拉列表
2021/01/20 Javascript
[52:40]完美世界DOTA2联赛PWL S2 Magma vs GXR 第一场 11.29
2020/12/02 DOTA
Python FTP操作类代码分享
2014/05/13 Python
python中 logging的使用详解
2017/10/25 Python
在VS Code上搭建Python开发环境的方法
2018/04/06 Python
Django外键(ForeignKey)操作以及related_name的作用详解
2019/07/29 Python
在macOS上搭建python环境的实现方法
2019/08/13 Python
PyQT5 实现快捷键复制表格数据的方法示例
2020/06/19 Python
Python实现爬取网页中动态加载的数据
2020/08/17 Python
Linux中如何设置Java环境变量(Ubuntu)
2016/07/24 面试题
中专生求职自荐信范文
2013/12/22 职场文书
写给女生的道歉信
2014/01/08 职场文书
军训考核自我鉴定
2014/02/13 职场文书
社区党务公开实施方案
2014/03/18 职场文书
市场营销毕业求职信
2014/08/07 职场文书
2014离婚协议书范文两篇
2014/09/15 职场文书
入党积极分子党小组意见
2015/06/02 职场文书
冰雪公主观后感
2015/06/16 职场文书
开学第一周总结
2015/07/16 职场文书
微信小程序实现录音Record功能
2021/05/09 Javascript
SpringBoot集成Druid连接池连接MySQL8.0.11
2021/07/02 Java/Android
Go语言入门exec的基本使用
2022/05/20 Golang