flow.js 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. let aboveDivs = [].slice.call(document.querySelectorAll(".above")),
  2. aboveDivsLength = aboveDivs.length,
  3. belowDivs = [].slice.call(document.querySelectorAll(".below")),
  4. belowDivsLength = belowDivs.length;
  5. const aboveIntervalId = [],belowIntervalId = [];
  6. const LEFT = 1,RIGHT = 2,VIEWBOXS = 6;
  7. let viewWidth = aboveDivs[0].offsetWidth * VIEWBOXS;
  8. let row1s = [].slice.call(document.getElementsByClassName("row1")),
  9. row2s = [].slice.call(document.getElementsByClassName("row2"));
  10. row1s.forEach(element => {
  11. element.style.width = viewWidth;
  12. });
  13. for(let i = 0; i < aboveDivsLength; i++){
  14. console.log(i);
  15. let aboveInisialLeft = aboveDivs[i].offsetLeft,
  16. belowInisialLeft = belowDivs[i].offsetLeft;
  17. animate(aboveDivs[i],LEFT,1);
  18. animate(belowDivs[i],RIGHT,1);
  19. }
  20. /**
  21. *
  22. * @param {HTMLElement} div
  23. * @param {String} direction
  24. * @param {integer} velocity
  25. */
  26. function animate(div,direction,velocity){
  27. let treasureArray = div.querySelectorAll(".treasure"),
  28. tLength = treasureArray.length,
  29. boxWidth = div.querySelector(".treasure").offsetWidth,
  30. allBoxsWidth = boxWidth * (tLength - 6),
  31. inisialLeft;
  32. // console.log("tLength",tLength,"inisialLeft",inisialLeft,"allBoxsWidth",allBoxsWidth);
  33. if(direction == LEFT){
  34. inisialLeft = div.offsetLeft;
  35. console.log(inisialLeft);
  36. let tempIntervalId = setInterval(()=>{
  37. div.style.left = (div.offsetLeft - velocity) + 'px';
  38. // console.log("LEFT",div.style.left);
  39. if(div.offsetLeft < -1 * (allBoxsWidth)){
  40. div.style.left = inisialLeft + 'px';
  41. }
  42. },40);
  43. aboveIntervalId.push(tempIntervalId);
  44. }else if(direction == RIGHT){
  45. inisialLeft = -allBoxsWidth;
  46. console.log(inisialLeft);
  47. let tempIntervalId = setInterval(()=>{
  48. div.style.left = (div.offsetLeft + velocity) + 'px';
  49. // console.log("RIGHT",div.style.left);
  50. if(div.offsetLeft >= 0){
  51. div.style.left = inisialLeft + 'px';
  52. }
  53. },40);
  54. belowIntervalId.push(tempIntervalId);
  55. }
  56. }