temp.styl 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  1. // vue/app/temp.styl
  2. @import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap')
  3. .page-slide-enter-active { transition: all 0.3s ease-out; }
  4. .page-slide-leave-active { transition: all 0.3s ease-in; }
  5. .page-slide-enter-from { opacity: 0; transform: translateX(30px); }
  6. .page-slide-leave-to { opacity: 0; transform: translateX(-30px); }
  7. // Глобальные стили и анимации для всего проекта
  8. // Анимации для плавного появления элементов
  9. @keyframes fadeInUp
  10. 0%
  11. opacity: 0
  12. transform: translateY(40px)
  13. 100%
  14. opacity: 1
  15. transform: translateY(0)
  16. @keyframes fadeIn
  17. from
  18. opacity: 0
  19. to
  20. opacity: 1
  21. @keyframes slideIn
  22. from
  23. opacity: 0
  24. transform: translateX(-100px)
  25. to
  26. opacity: 1
  27. transform: translateX(0)
  28. @keyframes pulse
  29. 0%, 100%
  30. opacity: 1
  31. 50%
  32. opacity: 0.7
  33. // Глобальные классы анимаций
  34. .animate-fade-in-up
  35. animation: fadeInUp 0.6s ease-out forwards
  36. .animate-fade-in
  37. animation: fadeIn 0.5s ease-out forwards
  38. .animate-slide-in
  39. animation: slideIn 0.5s ease-out forwards
  40. .animate-pulse-slow
  41. animation: pulse 2s infinite
  42. // Задержки для анимаций
  43. .animation-delay-100
  44. animation-delay: 100ms
  45. .animation-delay-200
  46. animation-delay: 200ms
  47. .animation-delay-300
  48. animation-delay: 300ms
  49. .animation-delay-400
  50. animation-delay: 400ms
  51. // Кастомная полоса прокрутки
  52. ::-webkit-scrollbar
  53. width: 8px
  54. ::-webkit-scrollbar-track
  55. background: #f1f1f1
  56. .dark ::-webkit-scrollbar-track
  57. background: #374151
  58. ::-webkit-scrollbar-thumb
  59. background: #cbd5e0
  60. border-radius: 4px
  61. .dark ::-webkit-scrollbar-thumb
  62. background: #4b5563
  63. // Глобальные утилиты
  64. .card-hover
  65. transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1)
  66. &:hover
  67. transform: translateY(-8px)
  68. box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25)
  69. .line-clamp-2
  70. display: -webkit-box
  71. -webkit-line-clamp: 2
  72. -webkit-box-orient: vertical
  73. overflow: hidden
  74. .line-clamp-3
  75. display: -webkit-box
  76. -webkit-line-clamp: 3
  77. -webkit-box-orient: vertical
  78. overflow: hidden
  79. // Состояния загрузки
  80. .loading-skeleton
  81. background: linear-gradient(90deg, #f0f0f0 25%, #e0e0e0 50%, #f0f0f0 75%)
  82. background-size: 200% 100%
  83. animation: loading 1.5s infinite
  84. .dark .loading-skeleton
  85. background: linear-gradient(90deg, #374151 25%, #4b5563 50%, #374151 75%)
  86. background-size: 200% 100%
  87. @keyframes loading
  88. 0%
  89. background-position: 200% 0
  90. 100%
  91. background-position: -200% 0
  92. // Анимации для Vue переходов
  93. .modal-fade-enter-active,
  94. .modal-fade-leave-active
  95. transition: opacity 0.3s ease
  96. .modal-fade-enter-from,
  97. .modal-fade-leave-to
  98. opacity: 0
  99. .page-slide-enter-active
  100. transition: all 0.3s ease-out
  101. .page-slide-leave-active
  102. transition: all 0.3s ease-in
  103. .page-slide-enter-from
  104. opacity: 0
  105. transform: translateX(30px)
  106. .page-slide-leave-to
  107. opacity: 0
  108. transform: translateX(-30px)