flow.js 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. let row1s = [].slice.call(document.querySelectorAll(".row1")),
  2. row1Length = row1s.length,
  3. row2s = [].slice.call(document.querySelectorAll(".row2")),
  4. row2sLength = row2s.length;
  5. // aboveInisialLeft = row1.offsetLeft,
  6. // belowInisialLeft = row2.offsetLeft;
  7. const LEFT = 1,RIGHT = 2;
  8. for(let i = 0; i < row1Length; i++){
  9. console.log(i);
  10. let aboveIntervalId,belowIntervalId,
  11. aboveInisialLeft = row1s[i].offsetLeft,
  12. belowInisialLeft = row2s[i].offsetLeft;
  13. animate(row1s[i],1,1);
  14. animate(row2s[i],2,1);
  15. }
  16. /**
  17. *
  18. * @param {HTMLElement} row
  19. * @param {String} direction
  20. * @param {integer} velocity
  21. */
  22. function animate(row,direction,velocity){
  23. let treasureArray = row.querySelectorAll(".treasure"),
  24. tLength = treasureArray.length,
  25. boxWidth = row.querySelector(".treasure").offsetWidth,
  26. allBoxsWidth = boxWidth * tLength - 0.9 *innerWidth,
  27. inisialLeft = row.offsetLeft;
  28. // console.log("tLength",tLength,"inisialLeft",inisialLeft,"allBoxsWidth",allBoxsWidth);
  29. if(direction == LEFT){
  30. aboveIntervalId = setInterval(()=>{
  31. row.style.left = (row.offsetLeft - velocity) + 'px';
  32. // console.log("LEFT",row.style.left);
  33. if(row.offsetLeft < -1 * (allBoxsWidth)){
  34. row.style.left = inisialLeft + 'px';
  35. }
  36. },16);
  37. }else if(direction == RIGHT){
  38. belowIntervalId = setInterval(()=>{
  39. row.style.left = (row.offsetLeft + velocity) + 'px';
  40. // console.log("RIGHT",row.style.left);
  41. if(row.offsetLeft > allBoxsWidth){
  42. row.style.left = inisialLeft + 'px';
  43. }
  44. },16);
  45. }
  46. }
  47. row1.onmouseover = ()=>{
  48. clearInterval(aboveIntervalId);
  49. }
  50. row1.onmouseleave = ()=>{
  51. animate(row1,LEFT,1);
  52. };
  53. row2.onmouseover = ()=>{
  54. clearInterval(belowIntervalId);
  55. }
  56. row2.onmouseleave = ()=>{
  57. animate(row2,RIGHT,1);
  58. };
  59. // let museums = document.querySelector(".museum");
  60. // let iframe = document.querySelector("#visiting");
  61. // let row1TreasureNodes = museum.querySelectorAll(".treasure");
  62. // let name;
  63. //TODO:给底部博物馆名添加监听器
  64. // let row1Treasures = [].slice.call(row1TreasureNodes);
  65. /*
  66. for(let i = 0; i < row1TreasureNodes.length;i++){
  67. row1TreasureNodes[i].addEventListener("click",(e,i)=>{
  68. // iframe.contentWindow.location.href = urls[i];
  69. iframe.classList.remove("disappear");
  70. });
  71. }
  72. */
  73. // function switchMuseum(){
  74. // let museumButtons = document.querySelectorAll(".museumname"),
  75. // mbLength = museumButtons.length,
  76. // museums = document.querySelector(".museum"),
  77. // mLength = museums.length;
  78. // for(let i = 0; i < museumButtons; i++){
  79. // museumButtons[i].addEventListener("click",(e,index = i)=>{
  80. // let target = e.target;
  81. // museums[i].classList.add("appear");
  82. // console.log("switch");
  83. // })
  84. // }
  85. // }
  86. // switchMuseum();
  87. let museumButtons = [].slice.call(document.querySelectorAll(".museumname")),
  88. mbLength = museumButtons.length,
  89. museums = [].slice.call(document.querySelectorAll(".museum")),
  90. mLength = museums.length;
  91. for(let i = 0; i < museumButtons; i++){
  92. museumButtons[i].addEventListener("click",(e,index = i)=>{
  93. let target = e.target;
  94. museums[index].classList.add("appear");
  95. console.log("switch",i);
  96. });
  97. }