Files
2026-05-07 18:11:46 +08:00

319 lines
5.5 KiB
Plaintext

@import '../../style/theme.less';
@import '../../style/tags.less';
.cat-page {
height: 100vh;
background: @bg-page;
display: flex;
flex-direction: column;
overflow: hidden;
color: @text-secondary;
}
.cat-body {
flex: 1;
display: flex;
flex-direction: column;
overflow: hidden;
}
.cat-search-wrap {
padding: @section-gap-xs @page-padding-x 0;
flex-shrink: 0;
}
.cat-search {
display: flex;
flex-direction: row;
align-items: center;
gap: 16rpx;
background: #e5dcc9;
border-radius: 999rpx;
padding: 20rpx 32rpx;
box-sizing: border-box;
}
.cat-search__icon {
flex-shrink: 0;
line-height: 1;
}
.cat-search__input {
flex: 1;
font-size: 28rpx;
color: @text-title;
min-height: 40rpx;
line-height: 40rpx;
}
.cat-search__placeholder {
font-size: 28rpx;
color: rgba(50, 46, 37, 0.45);
}
.cat-main {
flex: 1;
display: flex;
flex-direction: row;
overflow: hidden;
margin-top: @section-gap-xs;
}
.cat-sidebar {
width: 180rpx;
flex-shrink: 0;
background: @bg-header;
border-top-right-radius: @radius-lg;
padding: 16rpx 0;
box-sizing: border-box;
}
.cat-sidebar__item {
display: flex;
flex-direction: row;
align-items: center;
justify-content: center;
gap: 8rpx;
padding: 24rpx 12rpx;
margin: 4rpx 12rpx;
border-radius: 999rpx;
transition: all 0.25s ease;
}
.cat-sidebar__item--active {
background: @brand;
transform: scale(1.05);
box-shadow: 0 4rpx 16rpx rgba(255, 215, 9, 0.35);
}
.cat-sidebar__icon {
font-size: 32rpx;
line-height: 1;
}
.cat-sidebar__name {
font-size: 24rpx;
font-weight: 500;
color: @text-secondary;
white-space: nowrap;
text-align: center;
}
.cat-sidebar__item--active .cat-sidebar__name {
color: @text-selected-btn;
font-weight: 700;
}
.cat-content {
flex: 1;
background: @bg-page;
padding: 0;
box-sizing: border-box;
}
.cat-content__inner {
padding: 8rpx 16rpx;
display: flex;
flex-direction: column;
gap: 16rpx;
}
.cat-content__footer {
height: 48rpx;
}
.cat-card {
background: @bg-white;
border-radius: 24rpx;
padding: 16rpx;
display: flex;
flex-direction: row;
gap: 20rpx;
box-shadow: 0 4rpx 20rpx rgba(50, 46, 37, 0.06);
transition: box-shadow 0.2s ease;
overflow: hidden;
}
.cat-card__thumb {
width: 168rpx;
height: 210rpx;
flex-shrink: 0;
border-radius: 10rpx;
display: flex;
align-items: center;
justify-content: center;
overflow: hidden;
border: 1rpx solid rgba(50, 46, 37, 0.08);
background: #f5edd8;
}
.cat-card__thumb-img {
width: 100%;
height: 100%;
display: block;
}
.cat-card__thumb-icon {
font-size: 56rpx;
line-height: 1;
}
.cat-card__body {
flex: 1;
width: 0;
display: flex;
flex-direction: column;
justify-content: space-between;
overflow: hidden;
gap: 8rpx;
padding: 4rpx 0;
}
.cat-card__header {
display: flex;
flex-direction: row;
align-items: center;
gap: 12rpx;
}
.cat-card__title {
font-size: 30rpx;
font-weight: 700;
color: @text-title;
line-height: 1.35;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
flex: 1;
min-width: 0;
}
.cat-card__coming {
flex-shrink: 0;
padding: 4rpx 14rpx;
border-radius: 999rpx;
background: rgba(50, 46, 37, 0.08);
font-size: 20rpx;
color: @text-gray;
font-weight: 500;
}
.cat-card__subtitle {
font-size: 24rpx;
color: @text-gray;
line-height: 1.4;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
.cat-card__tags {
display: flex;
flex-direction: row;
gap: 12rpx;
margin-top: 4rpx;
}
.cat-card__footer {
display: flex;
flex-direction: row;
align-items: center;
justify-content: space-between;
margin-top: 4rpx;
}
.cat-card__stats {
display: flex;
flex-direction: row;
align-items: center;
gap: 18rpx;
}
.cat-card__stat {
display: flex;
flex-direction: row;
align-items: center;
gap: 6rpx;
font-size: 20rpx;
color: #7c766a;
line-height: 20rpx;
}
.cat-card__date {
font-size: 20rpx;
color: #7c766a;
line-height: 20rpx;
}
.cat-empty {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
padding: 120rpx 0;
gap: 24rpx;
}
.cat-empty__icon {
font-size: 80rpx;
line-height: 1;
}
.cat-empty__text {
font-size: 28rpx;
color: @text-gray;
}
// ── Skeleton shimmer ──
@skeleton-base: #e8e2d5;
@keyframes skeleton-shimmer {
0% {
transform: translateX(-100%);
}
100% {
transform: translateX(100%);
}
}
.cat-card--skeleton {
pointer-events: none;
position: relative;
&::after {
content: '';
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: linear-gradient(135deg,
transparent 25%,
rgba(255, 255, 255, 0.7) 50%,
transparent 75%);
animation: skeleton-shimmer 1.2s linear infinite;
z-index: 1;
}
.cat-card__thumb {
background: @skeleton-base;
}
.cat-card__title,
.cat-card__subtitle {
background: @skeleton-base;
border-radius: 8rpx;
color: transparent;
}
.cat-card__title {
width: 60%;
height: 32rpx;
}
.cat-card__subtitle {
width: 80%;
height: 24rpx;
}
}