app.js 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158
  1. window.onload=function () {
  2. historyFn();
  3. }
  4. function historyFn() {
  5. if(window.historyJson){
  6. var _his = window.historyJson,
  7. _hisLen = _his.length,
  8. _hisL = _hisv = 0,
  9. _hisTime,
  10. timeoutId;
  11. if($(window).width()>960){
  12. for(var h=0;h<_hisLen;h++){
  13. var _context = _his[h].text.substr(0,15)+"...";
  14. if(_hisv == 0){
  15. var _Math = Math.floor(Math.random()*80);
  16. _hisv = 1;
  17. $(".history ul").append('<li style="top:'+_Math+'px;left:'+_hisL+'px;"><i><img src="images/dot1.png" /></i><span><h3>'+_his[h].year+'</h3><h4>'+_context+'</h4></span></li>');
  18. }else{
  19. var _Math = Math.floor(Math.random()*(160-80)+80);
  20. _hisv = 0;
  21. $(".history ul").append('<li class="b" style="top:'+_Math+'px;left:'+_hisL+'px;"><i><img src="images/dot1.png" /></i><span><h3>'+_his[h].year+'</h3><h4>'+_context+'</h4></span></li>');
  22. }
  23. _hisL+=200;
  24. }
  25. var _item = $(".history li"),
  26. _itemUl = $(".history ul"),
  27. _itemBox = $(".history .box"),
  28. _len = _item.length,
  29. _for = _len-1,
  30. _prevNum = _key = 0;
  31. _itemUl.append('<canvas id="myCanvas"></canvas><div class="car"></div>');
  32. $(".history .car").animate({
  33. top:_item.eq(_prevNum).css("top"),
  34. left:_item.eq(_prevNum).css("left"),
  35. opacity:1
  36. });
  37. if(document.getElementById("myCanvas").getContext){
  38. var c = document.getElementById("myCanvas");
  39. $(c).attr("width","15000");
  40. $(c).attr("height","200");
  41. for(var i=0;i<_for;i++){
  42. var _lt = parseFloat(_item.eq(i).css("top"))+6,
  43. _ll = parseFloat(_item.eq(i).css("left"))+13,
  44. _rt = parseFloat(_item.eq(i+1).css("top"))+6,
  45. _rl = parseFloat(_item.eq(i+1).css("left"))+1;
  46. var cxt = c.getContext("2d");
  47. cxt.strokeStyle = 'rgba(27,94,162,1)';
  48. cxt.lineWidth = 1;
  49. cxt.beginPath();
  50. cxt.moveTo(_ll,_lt);
  51. cxt.lineTo(_rl,_rt);
  52. cxt.stroke();
  53. }
  54. }else{
  55. var _xpage = '';
  56. for(var i=0;i<_for;i++){
  57. var _lt = parseFloat(_item.eq(i).css("top"))+6,
  58. _ll = parseFloat(_item.eq(i).css("left"))+6;
  59. _xpage = _xpage+' '+_ll+','+_lt;
  60. }
  61. _itemUl.append('<v:PolyLine strokecolor="#0b8bd4" id="PolyLine" filled="false" Points="'+_xpage+'"/>');
  62. }
  63. carHight = function(num){
  64. var _context = _his[_prevNum].text.substr(0,15)+"...";
  65. _item.eq(_prevNum).find("h4").html(_context);
  66. _item.removeClass("active").eq(num).addClass("active");
  67. _item.eq(num).find("h4").html(_his[num].text);
  68. if(num>2){
  69. _itemUl.animate({
  70. left:-(num-2)*200+50
  71. });
  72. }else if(num<=2){
  73. _itemUl.animate({
  74. left:50
  75. });
  76. }
  77. if(_prevNum>num){
  78. $(".history .car").addClass("back");
  79. }else{
  80. $(".history .car").removeClass("back");
  81. }
  82. if(_prevNum-num<=-2||_prevNum-num>=2){
  83. $(".history .car").hide().css({
  84. top:_item.eq(num).css("top"),
  85. left:_item.eq(num).css("left")
  86. }).fadeIn();
  87. }else{
  88. $(".history .car").animate({
  89. top:_item.eq(num).css("top"),
  90. left:_item.eq(num).css("left"),
  91. opacity:1
  92. })
  93. }
  94. _prevNum = num;
  95. }
  96. _item.find("i").on("click",function(){
  97. var _index = $(this).parent().index();
  98. carHight(_index);
  99. });
  100. carHight(_prevNum);
  101. $(document).keydown(function(event){
  102. if(_key == 0){
  103. if(event.keyCode == 37&&_prevNum>0){
  104. carHight(_prevNum-1);
  105. }else if(event.keyCode == 39&&_prevNum<_for){
  106. carHight(_prevNum+1);
  107. }
  108. }
  109. _key = 1;
  110. });
  111. $(document).keyup(function(event){
  112. _key = 0;
  113. });
  114. _itemBox.mouseover(function(event){
  115. event.preventDefault();
  116. });
  117. _itemUl.bind("mousedown",function(e){
  118. var _long = e.pageX,
  119. _left = parseFloat(_itemUl.css("left"));
  120. _itemUl.bind("mousemove",function(e){
  121. document.onselectstart = function(){return false;}
  122. var _lend = _left-(_long-e.pageX),
  123. _rend = -(_for-2)*200+50;
  124. if(_lend<50&&_lend>_rend){
  125. _itemUl.css("left",_lend);
  126. }else if(_lend>50){
  127. _itemUl.css("left",50);
  128. }else if(_lend>_rend){
  129. _itemUl.css("left",_rend);
  130. }
  131. });
  132. });
  133. _itemUl.bind("mouseup",function(){
  134. _itemUl.unbind("mousemove");
  135. document.onselectstart = null;
  136. });
  137. _itemBox.mousewheel(function(event, delta) {
  138. clearTimeout(timeoutId);
  139. if(_key == 0){
  140. _key = 1;
  141. $(this).data('timeoutId', setTimeout(function() {
  142. if(delta>0&&_prevNum>0){
  143. carHight(_prevNum-1);
  144. }else if(delta<0&&_prevNum<_for){
  145. carHight(_prevNum+1);
  146. }
  147. _key = 0;
  148. }, 200));
  149. }
  150. return false;
  151. });
  152. }else{
  153. for(var h=0;h<_hisLen;h++){
  154. $(".history ul").append('<li><i><img src="images/dot1.png" /></i><span><h3>'+_his[h].year+'</h3><h4>'+_his[h].text+'</h4></span></li>');
  155. }
  156. }
  157. }
  158. }