最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

jQuery时间轴插件使用详解_jquery

来源:动视网 责编:小采 时间:2020-11-27 21:40:43
文档

jQuery时间轴插件使用详解_jquery

jQuery时间轴插件使用详解_jquery:这个时间轴是工作上用到的,自己写了一个, qq空间有时间轴的控件, 百度文库也有时间轴的控件; 百度的时间轴大概是这样的: 用户点击对应的锚链接, 那个三角会滚动, 然后左侧的界面也会滚动; 实际的效果如下图,用户点击左侧的按钮或者右侧的inp
推荐度:
导读jQuery时间轴插件使用详解_jquery:这个时间轴是工作上用到的,自己写了一个, qq空间有时间轴的控件, 百度文库也有时间轴的控件; 百度的时间轴大概是这样的: 用户点击对应的锚链接, 那个三角会滚动, 然后左侧的界面也会滚动; 实际的效果如下图,用户点击左侧的按钮或者右侧的inp
 这个时间轴是工作上用到的,自己写了一个, qq空间有时间轴的控件, 百度文库也有时间轴的控件;

  百度的时间轴大概是这样的:

  用户点击对应的锚链接, 那个三角会滚动, 然后左侧的界面也会滚动;

  实际的效果如下图,用户点击左侧的按钮或者右侧的input,滚动条都会主动滚动, 这里有个小技巧就是用after和before伪类生成三角形, 用户点击按钮的滚动效果直接用jq的animate方法:




 
 
 
 
 

 
 
 <% for(var i=0; i
 
  • <%="active"%> <%}%> ">
  • <% } %>
  •   模板用了underscore,tempate方法挂到了$下, 作为$的工具方法(依赖于jQuery),模板的js代码直接放这里方便一些小项目直接用:

      模板的使用的DEMO如下, 也可以参考官方的文档:http://underscorejs.org/#template:

    
     
     
     
     
     //模板引擎的代码
     (function () {
     //underscore抄的模板引擎;
     var escaper = /\\|'|\r|\n|\t|\u2028|\u2029/g;
    
     var escapes = {
     "'": "'",
     '\\': '\\',
     '\r': 'r',
     '\n': 'n',
     '\t': 't',
     '\u2028': 'u2028',
     '\u2029': 'u2029'
     };
    
     $.templateSettings = {
     evaluate : /<%([\s\S]+?)%>/g,
     interpolate : /<%=([\s\S]+?)%>/g,
     escape : /<%-([\s\S]+?)%>/g
     }
     $.template = function(text, data, settings) {
     var render;
     settings = $.extend({}, settings, $.templateSettings);
    
     // Combine delimiters into one regular expression via alternation.
     var matcher = new RegExp([
     (settings.escape || noMatch).source,
     (settings.interpolate || noMatch).source,
     (settings.evaluate || noMatch).source
     ].join('|') + '|$', 'g');
    
     // Compile the template source, escaping string literals appropriately.
     var index = 0;
     var source = "__p+='";
     text.replace(matcher, function(match, escape, interpolate, evaluate, offset) {
     source += text.slice(index, offset)
     .replace(escaper, function(match) { return '\\' + escapes[match]; });
    
     if (escape) {
     source += "'+\n((__t=(" + escape + "))==null?'':_.escape(__t))+\n'";
     }
     if (interpolate) {
     source += "'+\n((__t=(" + interpolate + "))==null?'':__t)+\n'";
     }
     if (evaluate) {
     source += "';\n" + evaluate + "\n__p+='";
     }
     index = offset + match.length;
     return match;
     });
     source += "';\n";
    
     // If a variable is not specified, place data values in local scope.
     if (!settings.variable) source = 'with(obj||{}){\n' + source + '}\n';
    
     source = "var __t,__p='',__j=Array.prototype.join," +
     "print=function(){__p+=__j.call(arguments,'');};\n" +
     source + "return __p;\n";
    
     try {
     render = new Function(settings.variable || 'obj', '_', source);
     } catch (e) {
     e.source = source;
     throw e;
     }
    
     if (data) return render(data, _);
     var template = function(data) {
     return render.call(this, data);
     };
    
     // Provide the compiled function source as a convenience for precompilation.
     template.source = 'function(' + (settings.variable || 'obj') + '){\n' + source + '}';
    
     return template;
     };
     })();
     
     
    输出 haahah; console.log( $.template('<%=data%>')( {data:"haahah"} ) );

      修改了时间轴的样式, 又为这个插件添加了拖拽的方法,代码一下变得好乱, 顺便普及一下拖拽的事件, ondrop, ondragover,ondrag, 如果要让元素可以拖拽, 就要为要拖拽的元素添加draggable="true", 元素可以拖拽以后 , 要为可以拖放到的的DIV或者其他块元素,绑定一个dragover方法, 这个方法就做一件事, ev.preventDefault(), 看代码撒:

    运行下面代码

    
    
    
     
     
     
     //当元素dragover时候一定要阻止默认事件, 否则把当前拖拽的元素就无法drop;
     function dragover(ev)
     {
     console.log(ev);
     ev.preventDefault();
     }
    
     //对于拖拽事件最重要的一个事件属性就是dataTransfer;
     function drag(ev)
     {
     console.log(ev);
     ev.dataTransfer.setData("Text",ev.target.id);
     }
    
     function drop(ev)
     {
     console.log(ev);
     var data=ev.dataTransfer.getData("Text");
     ev.target.appendChild(document.getElementById(data));
     }
     
    
    
    
    

    请把图片拖放到矩形中:


      另外一个DEMO: 运行下面代码

    What fruits do you like?

    1. Apples
    2. Oranges
    3. Pears
    var internalDNDType = 'text/x-example'; // set this to something specific to your site function dragStartHandler(event) { if (event.target instanceof HTMLLIElement) { // use the element's data-value="" attribute as the value to be moving: event.dataTransfer.setData(internalDNDType, event.target.dataset.value); event.dataTransfer.effectAllowed = 'move'; // only allow moves } else { event.preventDefault(); // don't allow selection to be dragged } }

    Drop your favorite fruits below:

    1. drop

      HTML5的拖拽提供了 setDragImage , effectAllowed , setData.... 等很多便捷的方法给开发者, 通过FileReader读取File, 然后就可以用ajax与后台进行交互, 和前端DOM操作:

    
    
    
     
     
    
    
     
     drop拖放文件进来
     
     

      插件效果图:

      最后完成的插件代码:

    
    
    
     
     
     
     
     
    
     
     
     <% for(var i=0; i
     
  • <%="active"%> <%}%> "> <%=items[i].name%>
  • <% } %>
  • 文档类型
  • 视频类型
  • 单元测试
  • 音频类型
  • 图片类型
  • 文档类型
  • 视频类型
  • 单元测试
  • 音频类型
  • 图片类型
  • 文档类型
  • 视频类型
  • 单元测试
  • 音频类型
  • 图片类型
  • 文档类型
  • 视频类型
  • 单元测试
  • 音频类型
  • 图片类型
  • 文档类型
  • 视频类型
  • 以上所述就是本文的全部内容了,希望大家能够喜欢。

    文档

    jQuery时间轴插件使用详解_jquery

    jQuery时间轴插件使用详解_jquery:这个时间轴是工作上用到的,自己写了一个, qq空间有时间轴的控件, 百度文库也有时间轴的控件; 百度的时间轴大概是这样的: 用户点击对应的锚链接, 那个三角会滚动, 然后左侧的界面也会滚动; 实际的效果如下图,用户点击左侧的按钮或者右侧的inp
    推荐度:
    标签: 使用 插件 时间轴
    • 热门焦点

    最新推荐

    猜你喜欢

    热门推荐

    专题
    Top