background.js 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  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. document.querySelectorAll('.mode').forEach(function(node, index) {
  28. pageAmount++;
  29. node.addEventListener('click', function() {
  30. document.querySelectorAll('.active').forEach(function(el) {
  31. el.classList.remove('active');
  32. });
  33. node.classList.toggle('active');
  34. prevPage = currentPage;
  35. currentPage = index + 1;
  36. console.log(currentPage, prevPage);
  37. if (currentPage != prevPage) {
  38. if (currentPage > prevPage) {
  39. couleurs.prev.h = couleurs.next.h + (360 / pageAmount) * (currentPage - prevPage - 1);
  40. couleurs.next.h = couleurs.next.h + (360 / pageAmount) * (currentPage - prevPage);
  41. } else {
  42. couleurs.next.h = couleurs.prev.h + (360 / pageAmount) * (currentPage - prevPage + 1);
  43. couleurs.prev.h = couleurs.prev.h + (360 / pageAmount) * (currentPage - prevPage);
  44. }
  45. couleurs.appoint.h = couleurs.next.h + 200;
  46. console.log(couleurs.prev.h, couleurs.next.h);
  47. let mainContainer = document.getElementById('BG_BG_BG');
  48. let containerTmp = document.getElementById('BG_BG_BG_tmp');
  49. containerTmp.style.background = `
  50. radial-gradient(circle at 0% 14%,
  51. hsl(${couleurs.prev.h} ${couleurs.prev.s}% ${couleurs.prev.l}%) 40%,
  52. rgba(255, 255, 255, 0) 100%),
  53. radial-gradient(circle at 93% 95%,
  54. hsl(${couleurs.next.h} ${couleurs.next.s}% ${couleurs.next.l}%) 0%,
  55. rgba(255, 255, 255, 0) 100%),
  56. radial-gradient(circle at 73% 10%,
  57. hsl(${couleurs.appoint.h} ${couleurs.appoint.s}% ${couleurs.appoint.l}%) 0%,
  58. rgba(255, 255, 255, 0) 100%)
  59. `;
  60. containerTmp.style.opacity = 1;
  61. setTimeout(function() {
  62. mainContainer.style.opacity = 0;
  63. },100);
  64. setTimeout(function() {
  65. mainContainer.style.background = `
  66. radial-gradient(circle at 0% 14%,
  67. hsl(${couleurs.prev.h} ${couleurs.prev.s}% ${couleurs.prev.l}%) 40%,
  68. rgba(255, 255, 255, 0) 100%),
  69. radial-gradient(circle at 93% 95%,
  70. hsl(${couleurs.next.h} ${couleurs.next.s}% ${couleurs.next.l}%) 0%,
  71. rgba(255, 255, 255, 0) 100%),
  72. radial-gradient(circle at 73% 10%,
  73. hsl(${couleurs.appoint.h} ${couleurs.appoint.s}% ${couleurs.appoint.l}%) 0%,
  74. rgba(255, 255, 255, 0) 100%)
  75. `;
  76. containerTmp.style.opacity = 0;
  77. mainContainer.style.opacity = 1;
  78. }, 500);
  79. }
  80. })
  81. });
  82. let couleurs = {
  83. prev: {
  84. h: 42,
  85. s: 40.6,
  86. l: 44.9 + 20,
  87. },
  88. next: {
  89. h: 0,
  90. s: 30.5,
  91. l: 46.3 + 20,
  92. },
  93. appoint: {
  94. h: 0,
  95. s: 66,
  96. l: 35.7 + 20,
  97. }
  98. }
  99. couleurs.next.h = couleurs.prev.h + (360 / pageAmount);
  100. couleurs.appoint.h = couleurs.next.h + 200;
  101. console.log(couleurs.prev.h, couleurs.next.h);
  102. let container = document.getElementById("BG_BG_BG");
  103. container.style.background = `
  104. radial-gradient(circle at 0% 14%,
  105. hsl(${couleurs.prev.h} ${couleurs.prev.s}% ${couleurs.prev.l}%) 40%,
  106. rgba(255, 255, 255, 0) 100%),
  107. radial-gradient(circle at 93% 95%,
  108. hsl(${couleurs.next.h} ${couleurs.next.s}% ${couleurs.next.l}%) 0%,
  109. rgba(255, 255, 255, 0) 100%),
  110. radial-gradient(circle at 73% 10%,
  111. hsl(${couleurs.appoint.h} ${couleurs.appoint.s}% ${couleurs.appoint.l}%) 0%,
  112. rgba(255, 255, 255, 0) 100%)
  113. `;