add real authors

This commit is contained in:
Profile Profile
2026-01-28 12:02:55 +03:00
parent c01845bb39
commit 1b5530392f
5 changed files with 449 additions and 253 deletions

View File

@@ -1,6 +1,16 @@
/* styles/components/ContentGrid.css */
/* Глобальные стили (только для этого компонента) */
/* CSS переменные */
:root {
--grid-gap: 20px;
--grid-gap-tablet: 15px;
--border-radius: 10px;
--transition-speed: 0.3s;
--overlay-padding: 20px 15px 15px;
--overlay-padding-large: 25px 20px 20px;
}
/* Секция постов */
.posts-section {
max-width: 1400px;
margin: 0 auto;
@@ -14,69 +24,71 @@
padding-top: 20px;
}
/* Сетка постов */
.posts-grid {
display: flex;
flex-wrap: wrap;
gap: 20px;
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: var(--grid-gap);
width: 100%;
margin: 0;
padding: 0;
}
/* ОСНОВНОЙ СТИЛЬ: ВСЕ ПЛИТКИ КВАДРАТНЫЕ */
/* Карточка поста - базовые стили */
.post-card {
flex: 1 0 calc(25% - 15px); /* 4 колонки по умолчанию */
background: white;
border-radius: 10px;
border-radius: var(--border-radius);
overflow: hidden;
box-shadow: 0 4px 12px rgba(0,0,0,0.08);
transition: transform 0.3s ease, box-shadow 0.3s ease;
min-width: 0;
transition: transform var(--transition-speed) ease, box-shadow var(--transition-speed) ease;
aspect-ratio: 1 / 1;
position: relative;
display: flex;
flex-direction: column;
height: 0;
padding-bottom: 100%; /* Aspect ratio hack для надежности */
}
/* Большие плитки на десктопе - ТОЖЕ КВАДРАТНЫЕ */
/* Большие карточки (десктоп) */
@media (min-width: 1200px) {
.post-card-large {
flex: 0 0 calc(50% - 10px) !important; /* Занимает 2 колонки */
aspect-ratio: 2 / 1 !important; /* Ширина в 2 раза больше высоты */
grid-column: span 2;
aspect-ratio: 2 / 1;
padding-bottom: 50%;
}
}
/* Hover эффекты */
.post-card:hover {
transform: translateY(-5px);
box-shadow: 0 8px 25px rgba(0,0,0,0.15);
}
.post-card:hover .post-image {
transform: scale(1.05);
}
/* Ссылка карточки */
.post-card-link {
position: absolute;
inset: 0;
display: block;
text-decoration: none;
color: inherit;
width: 100%;
height: 100%;
position: absolute;
top: 0;
left: 0;
}
/* Контейнер изображения */
.post-image-container {
position: relative;
width: 100%;
height: 100%;
position: absolute;
inset: 0;
overflow: hidden;
}
/* Изображение */
.post-image {
width: 100%;
height: 100%;
object-fit: cover;
display: block;
transition: transform 0.3s ease;
}
.post-card:hover .post-image {
transform: scale(1.05);
transition: transform var(--transition-speed) ease;
}
.post-image-placeholder {
@@ -85,7 +97,7 @@
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
}
/* Бейдж рубрики */
/* Бейдж категории */
.post-category-badge {
position: absolute;
top: 15px;
@@ -104,23 +116,15 @@
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
text-align: right;
}
@media (min-width: 1200px) {
.post-card-large .post-category-badge {
font-size: 12px;
padding: 6px 12px;
}
}
/* Оверлей с текстом */
/* Оверлей с контентом */
.post-content-overlay {
position: absolute;
bottom: 0;
left: 0;
right: 0;
padding: 20px 15px 15px;
padding: var(--overlay-padding);
background: linear-gradient(
to top,
rgba(0, 0, 0, 0.9) 0%,
@@ -133,13 +137,6 @@
gap: 8px;
}
@media (min-width: 1200px) {
.post-card-large .post-content-overlay {
padding: 25px 20px 20px;
gap: 10px;
}
}
.post-meta-overlay {
margin-bottom: 3px;
}
@@ -147,17 +144,9 @@
.post-date-overlay {
font-size: 12px;
color: rgba(255, 255, 255, 0.9);
opacity: 0.9;
display: block;
font-weight: 400;
}
@media (min-width: 1200px) {
.post-card-large .post-date-overlay {
font-size: 13px;
}
}
.post-title-overlay {
font-size: 16px;
line-height: 1.3;
@@ -171,14 +160,6 @@
text-overflow: ellipsis;
}
@media (min-width: 1200px) {
.post-card-large .post-title-overlay {
font-size: 18px;
line-height: 1.4;
-webkit-line-clamp: 3;
}
}
.author-name {
font-size: 12px;
color: rgba(255, 255, 255, 0.85);
@@ -186,14 +167,131 @@
font-weight: 400;
}
/* Улучшения для больших карточек */
@media (min-width: 1200px) {
.post-card-large .post-category-badge {
font-size: 12px;
padding: 6px 12px;
}
.post-card-large .post-content-overlay {
padding: var(--overlay-padding-large);
gap: 10px;
}
.post-card-large .post-date-overlay {
font-size: 13px;
}
.post-card-large .post-title-overlay {
font-size: 18px;
line-height: 1.4;
}
.post-card-large .author-name {
font-size: 13px;
margin-top: 5px;
}
}
/* Для скринридеров */
/* Ноутбуки: 3 колонки */
@media (min-width: 992px) and (max-width: 1199px) {
.posts-grid {
grid-template-columns: repeat(3, 1fr);
}
.post-card-large {
grid-column: span 1;
aspect-ratio: 1 / 1;
padding-bottom: 100%;
}
}
/* Планшеты: 2 колонки */
@media (min-width: 768px) and (max-width: 991px) {
.posts-grid {
grid-template-columns: repeat(2, 1fr);
gap: var(--grid-gap-tablet);
}
.post-card-large {
grid-column: span 1;
aspect-ratio: 1 / 1;
padding-bottom: 100%;
}
.post-title-overlay {
font-size: 15px;
}
}
/* Мобильные: 1 колонка */
@media (max-width: 767px) {
.posts-grid {
grid-template-columns: 1fr;
gap: var(--grid-gap-tablet);
}
.post-card {
aspect-ratio: 2 / 1;
padding-bottom: 50%;
}
.post-card-large {
aspect-ratio: 2 / 1;
padding-bottom: 50%;
}
.posts-section {
padding: 0 15px 15px;
}
.posts-section h2 {
padding-top: 15px;
}
.post-content-overlay {
padding: 15px 12px 12px;
}
.post-title-overlay {
font-size: 15px;
}
.post-category-badge {
top: 12px;
right: 12px;
font-size: 10px;
padding: 4px 8px;
}
}
/* Очень маленькие экраны */
@media (max-width: 480px) {
.post-card,
.post-card-large {
aspect-ratio: 3 / 2;
padding-bottom: 66.67%;
}
.post-content-overlay {
padding: 12px 10px 10px;
gap: 5px;
}
.post-title-overlay {
font-size: 14px;
}
.post-category-badge {
top: 10px;
right: 10px;
padding: 3px 6px;
font-size: 9px;
}
}
/* Вспомогательные классы */
.sr-only {
position: absolute;
width: 1px;
@@ -206,7 +304,7 @@
border: 0;
}
/* Стили для индикаторов загрузки */
/* Состояния загрузки */
.loading-indicator {
text-align: center;
padding: 40px 0;
@@ -238,91 +336,14 @@
margin-top: 20px;
}
/* Адаптивность */
/* Для ноутбуков: 3 в ряд (без больших плиток) */
@media (min-width: 992px) and (max-width: 1199px) {
.posts-grid {
align-items: stretch;
}
.post-card {
flex: 1 0 calc(33.333% - 14px);
aspect-ratio: 1 / 1;
}
.post-card-large {
flex: 1 0 calc(33.333% - 14px) !important;
aspect-ratio: 1 / 1 !important;
margin-left: 0 !important;
order: initial !important;
}
.no-posts {
text-align: center;
padding: 40px;
color: #666;
font-size: 18px;
}
/* Для планшетов: 2 в ряд */
@media (min-width: 768px) and (max-width: 991px) {
.posts-grid {
gap: 15px;
}
.post-card {
flex: 1 0 calc(50% - 10px);
aspect-ratio: 1 / 1;
}
.post-card-large {
flex: 1 0 calc(50% - 10px) !important;
aspect-ratio: 1 / 1 !important;
margin-left: 0 !important;
order: initial !important;
}
.post-title-overlay {
font-size: 15px;
}
}
/* Для мобильных: 1 в ряд */
@media (max-width: 767px) {
.posts-grid {
gap: 15px;
}
.post-card {
flex: 1 0 100%;
aspect-ratio: 2 / 1; /* На мобильных горизонтальные плитки */
}
.post-card-large {
flex: 1 0 100% !important;
aspect-ratio: 2 / 1 !important;
margin-left: 0 !important;
order: initial !important;
}
.posts-section {
padding: 0 15px 15px;
}
.posts-section h2 {
padding-top: 15px;
}
.post-content-overlay {
padding: 15px 12px 12px;
}
.post-title-overlay {
font-size: 15px;
}
.post-category-badge {
top: 12px;
right: 12px;
font-size: 10px;
padding: 4px 8px;
}
.loading-spinner {
width: 30px;
height: 30px;
@@ -332,39 +353,3 @@
padding: 20px 0;
}
}
/* Для очень маленьких экранов */
@media (max-width: 480px) {
.post-card {
aspect-ratio: 3 / 2; /* Немного более вертикальные на маленьких экранах */
}
.post-card-large {
aspect-ratio: 3 / 2 !important;
}
.post-content-overlay {
padding: 12px 10px 10px;
gap: 5px;
}
.post-title-overlay {
font-size: 14px;
-webkit-line-clamp: 3;
}
.post-category-badge {
top: 10px;
right: 10px;
padding: 3px 6px;
font-size: 9px;
}
}
/* Стиль для пустого состояния */
.no-posts {
text-align: center;
padding: 40px;
color: #666;
font-size: 18px;
}