index.styl 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. // vue/app/shared/MultiLevelMenu/index.styl
  2. // Стили исключительно для многоуровневого меню
  3. .menu-item
  4. .submenu-item
  5. transition: all 0.3s ease
  6. &:hover
  7. transform: translateX(5px)
  8. .mobile-menu-item
  9. border-bottom: 1px solid #e5e7eb
  10. .dark &
  11. border-bottom-color: #374151
  12. &:last-child
  13. border-bottom: none
  14. .mobile-submenu-item
  15. border-bottom: 1px solid #f3f4f6
  16. .dark &
  17. border-bottom-color: #4b5563
  18. &:last-child
  19. border-bottom: none
  20. // Анимации для мобильного меню
  21. @keyframes slideInLeft
  22. from
  23. transform: translateX(-100%)
  24. opacity: 0
  25. to
  26. transform: translateX(0)
  27. opacity: 1
  28. @keyframes slideOutLeft
  29. from
  30. transform: translateX(0)
  31. opacity: 1
  32. to
  33. transform: translateX(-100%)
  34. opacity: 0
  35. // Адаптивность для мобильных устройств
  36. @media (max-width: 768px)
  37. .mobile-menu-overlay
  38. animation: fadeIn 0.3s ease-out
  39. .mobile-menu-panel
  40. animation: slideInLeft 0.3s ease-out
  41. &.closing
  42. animation: slideOutLeft 0.3s ease-in
  43. // Плавные переходы для десктопного меню
  44. .menu-item
  45. transition: all 0.3s ease
  46. &:hover
  47. .submenu-item
  48. animation: fadeInUp 0.3s ease-out
  49. @keyframes fadeInUp
  50. from
  51. opacity: 0
  52. transform: translateY(10px)
  53. to
  54. opacity: 1
  55. transform: translateY(0)