common.js 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. $(function(){
  2. $(".header--line--banner--wrap .close--btn").on("click", function(){
  3. $(".header--line--banner--wrap").addClass("actv");
  4. $("main").addClass("actv");
  5. });
  6. $(".header--contents").on("mouseenter", function(){
  7. $(this).addClass("actv");
  8. })
  9. $(".header--contents").on("mouseleave", function(){
  10. $(this).removeClass("actv");
  11. });
  12. $(".ham--btn").on("click", function(){
  13. $(".header--ham--wrap").addClass("actv");
  14. });
  15. $(".header--ham--wrap .ico--close").on("click", function(){
  16. $(".header--ham--wrap").removeClass("actv");
  17. });
  18. $('.ham--l li').each(function (index) {
  19. $(this).on('click', function () {
  20. $('.ham--l li').removeClass('actv');
  21. $(this).addClass('actv');
  22. $('.ham--r ul').removeClass('actv');
  23. $('.ham--r ul').eq(index).addClass('actv');
  24. });
  25. });
  26. const swiper = new Swiper('.main--visual', {
  27. loop: true,
  28. autoplay: {
  29. delay: 5000,
  30. disableOnInteraction: false,
  31. },
  32. navigation: {
  33. nextEl: ".prev--next--wrap .next--btn",
  34. prevEl: ".prev--next--wrap .prev--btn",
  35. },
  36. on: {
  37. slideChange: function () {
  38. // progress bar 업데이트
  39. const totalSlides = this.slides.length;
  40. const currentIndex = this.realIndex;
  41. const progressPercent = ((currentIndex + 1) / totalSlides) * 100;
  42. const progressBar = document.querySelector('.main--visual--progress .progress-bar');
  43. const progressText = document.querySelector('.main--visual--progress .progress-text');
  44. const progressTitle = document.querySelector('.main--visual--progress .progress-title');
  45. if (progressBar) {
  46. progressBar.style.background = `linear-gradient(to right, #000 ${progressPercent}%, rgba(0,0,0,0.15) ${progressPercent}%)`;
  47. }
  48. if (progressText) {
  49. progressText.textContent = `${(currentIndex + 1)}`;
  50. }
  51. if (progressTitle && this.slideTitles && this.slideTitles[currentIndex]) {
  52. progressTitle.textContent = this.slideTitles[currentIndex];
  53. }
  54. },
  55. init: function () {
  56. // 초기 progress bar 설정
  57. const totalSlides = this.slides.length;
  58. const progressBar = document.querySelector('.main--visual--progress .progress-bar');
  59. const progressText = document.querySelector('.main--visual--progress .progress-text');
  60. const progressTitle = document.querySelector('.main--visual--progress .progress-title');
  61. const progressTotal = document.querySelector('.main--visual--progress .progress-total');
  62. if (progressBar) {
  63. progressBar.style.background = `linear-gradient(to right, #000 ${(1 / totalSlides) * 100}%, rgba(0,0,0,0.15) ${(1 / totalSlides) * 100}%)`;
  64. }
  65. if (progressText) {
  66. progressText.textContent = `1`;
  67. }
  68. if (progressTotal) {
  69. progressTotal.textContent = `${totalSlides}`;
  70. }
  71. }
  72. }
  73. });
  74. $(".play--btn").on("click", function(){
  75. if ($(this).hasClass("pause")) {
  76. swiper.autoplay.start();
  77. $(this).removeClass("pause");
  78. } else {
  79. swiper.autoplay.stop();
  80. $(this).addClass("pause");
  81. }
  82. });
  83. // FAQ 아코디언 - 단일선택
  84. $(".faq--section .question--wrap").on("click", function(){
  85. const $qnaWrap = $(this).closest(".qna--wrap");
  86. if ($qnaWrap.hasClass("active")) {
  87. $qnaWrap.removeClass("active");
  88. } else {
  89. $(".faq--section .qna--wrap").removeClass("active");
  90. $qnaWrap.addClass("active");
  91. }
  92. });
  93. });