background.js 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180
  1. // grain
  2. grained('#grain-bg', {
  3. animate: true,
  4. patternWidth: 100,
  5. patternHeight: 100,
  6. grainOpacity: 0.5,
  7. grainDensity: 1,
  8. grainWidth: 1,
  9. grainHeight: 1,
  10. grainChaos: 10,
  11. grainSpeed: 1
  12. });
  13. /*
  14. |O couleur prev O |
  15. | couleur d'appoint |
  16. | |
  17. | |
  18. | |
  19. | couleur next O|
  20. */
  21. // au clic sur le mode suivant :
  22. // - couleurs prev devient la next précédente (ou inverse si page cliquée < page courante)
  23. // - couleurs next (ou prev) est une nouvelle couleur
  24. // - couleur appoint s'adapte en fonction de couleur next
  25. let pageAmount = 0;
  26. let currentPage = 1, prevPage;
  27. let currentProfondeur = "atlas";
  28. document.querySelectorAll('.mode').forEach(function(node, index) {
  29. pageAmount++;
  30. node.addEventListener('click', function() {
  31. document.querySelectorAll('.active').forEach(function(el) {
  32. el.classList.remove('active');
  33. if (currentProfondeur == "carte") { el.classList.add('collapsed'); }
  34. });
  35. node.classList.toggle('active');
  36. prevPage = currentPage;
  37. currentPage = index + 1;
  38. console.log(currentPage, prevPage);
  39. if (currentPage != prevPage) {
  40. if (currentPage > prevPage) {
  41. couleurs.prev.h = couleurs.next.h + (360 / pageAmount) * (currentPage - prevPage - 1);
  42. couleurs.next.h = couleurs.next.h + (360 / pageAmount) * (currentPage - prevPage);
  43. } else {
  44. couleurs.next.h = couleurs.prev.h + (360 / pageAmount) * (currentPage - prevPage + 1);
  45. couleurs.prev.h = couleurs.prev.h + (360 / pageAmount) * (currentPage - prevPage);
  46. }
  47. couleurs.appoint.h = couleurs.next.h + 200;
  48. console.log(couleurs.prev.h, couleurs.next.h);
  49. let mainContainer = document.getElementById('BG_BG_BG');
  50. let containerTmp = document.getElementById('BG_BG_BG_tmp');
  51. containerTmp.style.background = `
  52. radial-gradient(circle at 0% 14%,
  53. hsl(${couleurs.prev.h} ${couleurs.prev.s}% ${couleurs.prev.l}%) 40%,
  54. rgba(255, 255, 255, 0) 100%),
  55. radial-gradient(circle at 93% 95%,
  56. hsl(${couleurs.next.h} ${couleurs.next.s}% ${couleurs.next.l}%) 0%,
  57. rgba(255, 255, 255, 0) 100%),
  58. radial-gradient(circle at 73% 10%,
  59. hsl(${couleurs.appoint.h} ${couleurs.appoint.s}% ${couleurs.appoint.l}%) 0%,
  60. rgba(255, 255, 255, 0) 100%)
  61. `;
  62. containerTmp.style.opacity = 1;
  63. setTimeout(function() {
  64. mainContainer.style.opacity = 0;
  65. },100);
  66. setTimeout(function() {
  67. mainContainer.style.background = `
  68. radial-gradient(circle at 0% 14%,
  69. hsl(${couleurs.prev.h} ${couleurs.prev.s}% ${couleurs.prev.l}%) 40%,
  70. rgba(255, 255, 255, 0) 100%),
  71. radial-gradient(circle at 93% 95%,
  72. hsl(${couleurs.next.h} ${couleurs.next.s}% ${couleurs.next.l}%) 0%,
  73. rgba(255, 255, 255, 0) 100%),
  74. radial-gradient(circle at 73% 10%,
  75. hsl(${couleurs.appoint.h} ${couleurs.appoint.s}% ${couleurs.appoint.l}%) 0%,
  76. rgba(255, 255, 255, 0) 100%)
  77. `;
  78. containerTmp.style.opacity = 0;
  79. mainContainer.style.opacity = 1;
  80. }, 500);
  81. }
  82. })
  83. });
  84. let couleurs = {
  85. prev: {
  86. h: 42,
  87. s: 40.6,
  88. l: 44.9 + 20,
  89. },
  90. next: {
  91. h: 0,
  92. s: 30.5,
  93. l: 46.3 + 20,
  94. },
  95. appoint: {
  96. h: 0,
  97. s: 66,
  98. l: 35.7 + 20,
  99. }
  100. }
  101. couleurs.next.h = couleurs.prev.h + (360 / pageAmount);
  102. couleurs.appoint.h = couleurs.next.h + 200;
  103. console.log(couleurs.prev.h, couleurs.next.h);
  104. let container = document.getElementById("BG_BG_BG");
  105. container.style.background = `
  106. radial-gradient(circle at 0% 14%,
  107. hsl(${couleurs.prev.h} ${couleurs.prev.s}% ${couleurs.prev.l}%) 40%,
  108. rgba(255, 255, 255, 0) 100%),
  109. radial-gradient(circle at 93% 95%,
  110. hsl(${couleurs.next.h} ${couleurs.next.s}% ${couleurs.next.l}%) 0%,
  111. rgba(255, 255, 255, 0) 100%),
  112. radial-gradient(circle at 73% 10%,
  113. hsl(${couleurs.appoint.h} ${couleurs.appoint.s}% ${couleurs.appoint.l}%) 0%,
  114. rgba(255, 255, 255, 0) 100%)
  115. `;
  116. // menu
  117. function toggleProfondeur(el) {
  118. if (el.classList.contains("selected")) {
  119. return;
  120. } else {
  121. for (let sibling of el.parentNode.children) {
  122. sibling.classList.remove('selected');
  123. }
  124. }
  125. el.classList.add("selected");
  126. if(el.innerHTML == "L'atlas") {
  127. currentProfondeur = "atlas";
  128. document.querySelectorAll('.mode').forEach(function(node) {
  129. if(node.classList.contains("collapsed")) {
  130. node.classList.remove("collapsed");
  131. }
  132. });
  133. } else {
  134. currentProfondeur = "carte";
  135. document.querySelectorAll('.mode').forEach(function(node) {
  136. if(!node.classList.contains("active")) {
  137. node.classList.add("collapsed");
  138. }
  139. });
  140. }
  141. }
  142. // toggle changement de couleur de fond (faire une fonction propr)
  143. // et variable globale du mode dans lequel on est
  144. // loop avec les flèches
  145. function toggleMode(direction) {
  146. let modes = [];
  147. let currentIndex;
  148. document.querySelectorAll('.mode').forEach(function(node, index) {
  149. modes.push(node);
  150. if (node.classList.contains("active")) {
  151. currentIndex = index;
  152. node.classList.remove("active");
  153. if (currentProfondeur == "carte") {
  154. node.classList.add("collapsed");
  155. }
  156. }
  157. });
  158. if (direction == "next") {
  159. modes[currentIndex + 1].classList.add('active');
  160. } else if (direction == "prev") {
  161. modes[currentIndex - 1].classList.add('active');
  162. }
  163. }