temp.styl 2.9 KB

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