Add page loader and enhance loading animations: Implemented a new page loader with animated elements and progress bar for improved user experience during content loading. Updated global styles for consistency and responsiveness across various screen sizes.

This commit is contained in:
albivkt
2025-07-07 13:53:24 +03:00
parent 8550e6ecc5
commit 37a6373714
2 changed files with 496 additions and 7 deletions

View File

@ -23,11 +23,13 @@
/* Базовые стили */
html {
scroll-behavior: smooth;
background: linear-gradient(135deg, #111827, #1f2937, #111827);
min-height: 100vh;
}
body {
background-color: #f7f7f7;
color: #2c2c2c;
background: linear-gradient(135deg, #111827, #1f2937, #111827);
color: #ffffff;
}
/* Отступы от фиксированного хедера */
@ -303,3 +305,354 @@ body {
font-size: 1.125rem;
}
}
/* Стили для загрузчика страницы */
#page-loader {
transition: opacity 0.5s ease-out, transform 0.5s ease-out;
}
/* Стили для контента страницы */
#page-content {
opacity: 1;
transition: opacity 0.3s ease-in;
}
/* Предотвращение белого фона во время загрузки */
html, body {
min-height: 100vh;
background: linear-gradient(135deg, #111827, #1f2937, #111827);
}
/* Анимация появления для загрузчика */
@keyframes fade-in {
from {
opacity: 0;
transform: translateY(20px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
.animate-fade-in {
animation: fade-in 0.8s ease-out;
}
/* Улучшенная анимация bounce для точек загрузки */
@keyframes enhanced-bounce {
0%, 20%, 53%, 80%, 100% {
transform: translateY(0);
}
40%, 43% {
transform: translateY(-15px);
}
70% {
transform: translateY(-7px);
}
90% {
transform: translateY(-3px);
}
}
.animate-enhanced-bounce {
animation: enhanced-bounce 1.4s ease-in-out infinite;
}
/* Анимация пульсации для логотипа */
@keyframes logo-pulse {
0%, 100% {
opacity: 1;
transform: scale(1);
}
50% {
opacity: 0.8;
transform: scale(1.05);
}
}
.animate-logo-pulse {
animation: logo-pulse 2s ease-in-out infinite;
}
/* Градиентная анимация для прогресс-бара */
@keyframes progress-shimmer {
0% {
background-position: -200px 0;
}
100% {
background-position: calc(200px + 100%) 0;
}
}
.progress-shimmer {
background: linear-gradient(
90deg,
#fbbf24 25%,
#f59e0b 50%,
#fbbf24 75%
);
background-size: 200px 100%;
animation: progress-shimmer 2s infinite;
}
/* Адаптивные стили для загрузчика */
/* Очень маленькие экраны (до 320px) */
@media (max-width: 319px) {
#page-loader .text-center {
padding: 0.5rem;
}
#page-loader h1 {
font-size: 1.25rem !important;
margin-bottom: 1rem !important;
}
#page-loader p {
font-size: 0.75rem !important;
}
#page-loader .w-64 {
width: 12rem !important;
}
#page-loader img {
height: 3rem !important;
}
#page-loader .w-3 {
width: 0.5rem !important;
height: 0.5rem !important;
}
}
/* Маленькие экраны (320px - 479px) */
@media (min-width: 320px) and (max-width: 479px) {
#page-loader .text-center {
padding: 0.75rem;
}
#page-loader h1 {
font-size: 1.5rem !important;
margin-bottom: 1.5rem !important;
}
#page-loader p {
font-size: 0.875rem !important;
}
#page-loader .w-64 {
width: 14rem !important;
}
#page-loader img {
height: 4rem !important;
}
}
/* Средние экраны (480px - 767px) */
@media (min-width: 480px) and (max-width: 767px) {
#page-loader .text-center {
padding: 1rem;
}
#page-loader h1 {
font-size: 2rem !important;
margin-bottom: 1.5rem !important;
}
#page-loader p {
font-size: 1rem !important;
}
#page-loader .w-64 {
width: 18rem !important;
}
#page-loader img {
height: 5rem !important;
}
}
/* Планшеты (768px - 1027px) */
@media (min-width: 768px) and (max-width: 1027px) {
#page-loader .text-center {
padding: 1.5rem;
}
#page-loader h1 {
font-size: 2.5rem !important;
margin-bottom: 2rem !important;
}
#page-loader p {
font-size: 1.125rem !important;
}
#page-loader .w-64 {
width: 24rem !important;
}
#page-loader img {
height: 6rem !important;
}
#page-loader .w-3 {
width: 1rem !important;
height: 1rem !important;
}
}
/* Ноутбуки (1028px - 1439px) */
@media (min-width: 1028px) and (max-width: 1439px) {
#page-loader .text-center {
padding: 2rem;
}
#page-loader h1 {
font-size: 3rem !important;
margin-bottom: 2rem !important;
}
#page-loader p {
font-size: 1.25rem !important;
}
#page-loader .w-64 {
width: 28rem !important;
}
#page-loader img {
height: 7rem !important;
}
#page-loader .w-3 {
width: 1.25rem !important;
height: 1.25rem !important;
}
}
/* Большие экраны (1440px+) */
@media (min-width: 1440px) {
#page-loader .text-center {
padding: 2.5rem;
}
#page-loader h1 {
font-size: 3.5rem !important;
margin-bottom: 2.5rem !important;
}
#page-loader p {
font-size: 1.5rem !important;
}
#page-loader .w-64 {
width: 32rem !important;
}
#page-loader img {
height: 8rem !important;
}
#page-loader .w-3 {
width: 1.5rem !important;
height: 1.5rem !important;
}
}
/* Дополнительные адаптивные стили для декоративных элементов */
@media (max-width: 479px) {
#page-loader .absolute.top-1\/4 {
width: 4rem !important;
height: 4rem !important;
}
#page-loader .absolute.bottom-1\/4 {
width: 5rem !important;
height: 5rem !important;
}
#page-loader .absolute.top-1\/2 {
width: 3rem !important;
height: 3rem !important;
}
}
@media (min-width: 480px) and (max-width: 767px) {
#page-loader .absolute.top-1\/4 {
width: 6rem !important;
height: 6rem !important;
}
#page-loader .absolute.bottom-1\/4 {
width: 7rem !important;
height: 7rem !important;
}
#page-loader .absolute.top-1\/2 {
width: 4rem !important;
height: 4rem !important;
}
}
/* Адаптивные стили для прогресс-бара */
@media (max-width: 319px) {
#page-loader .bg-gray-700 {
height: 0.375rem !important;
}
}
@media (min-width: 320px) and (max-width: 479px) {
#page-loader .bg-gray-700 {
height: 0.5rem !important;
}
}
@media (min-width: 480px) and (max-width: 767px) {
#page-loader .bg-gray-700 {
height: 0.625rem !important;
}
}
@media (min-width: 768px) and (max-width: 1027px) {
#page-loader .bg-gray-700 {
height: 0.75rem !important;
}
}
@media (min-width: 1028px) {
#page-loader .bg-gray-700 {
height: 1rem !important;
}
}
/* Адаптивные стили для отступов между элементами */
@media (max-width: 479px) {
#page-loader .mb-8 {
margin-bottom: 1rem !important;
}
#page-loader .mb-6 {
margin-bottom: 1rem !important;
}
#page-loader .mt-4 {
margin-top: 0.75rem !important;
}
}
@media (min-width: 480px) and (max-width: 767px) {
#page-loader .mb-8 {
margin-bottom: 1.5rem !important;
}
#page-loader .mb-6 {
margin-bottom: 1.25rem !important;
}
#page-loader .mt-4 {
margin-top: 1rem !important;
}
}