Files
AlgerMusicPlayer/src/renderer/index.css
T
alger 72fabc6d12 refactor(ui): 优化骨架屏加载效果,修复用户页左侧黑色背景
- 关键布局组件(AppMenu/TitleBar/SearchBar)改为同步导入,消除加载闪烁
- 新增全局 skeleton-shimmer 流光动画替代 animate-pulse 闪烁效果
- 用户页 loading 骨架屏避免使用 .left scoped 样式导致的深色背景
- 全部 n-skeleton 组件替换为原生 div + shimmer,统一圆角风格
- 菜单容器添加背景色防止加载穿透
2026-03-11 23:02:04 +08:00

179 lines
3.3 KiB
CSS

/* ./src/index.css */
/*! @import */
@tailwind base;
@tailwind components;
@tailwind utilities;
/* 页面内容区域统一边距工具类 */
.page-padding {
padding-left: var(--page-pl);
padding-right: var(--page-pr);
}
/* 左右对称边距(用于 hero 区域等需要两侧都有边距的场景) */
.page-padding-x {
padding-left: var(--page-pr);
padding-right: var(--page-pr);
}
.n-image img {
background-color: #111111;
width: 100%;
}
.n-slider-handle-indicator--top {
background-color: transparent;
font-size: 1.5rem;
padding: 0.25rem 0.5rem;
box-shadow: none;
margin-bottom: 0;
color: white;
background-color: rgb(31 41 55 / 0.8);
border-radius: 0.5rem;
mix-blend-mode: difference !important;
}
.v-binder-follower-container:has(.n-slider-handle-indicator--top) {
z-index: 999999999 !important;
}
.text-el {
text-overflow: ellipsis;
overflow: hidden;
white-space: nowrap;
}
.theme-dark {
--bg-color: #000;
--text-color: #fff;
--bg-color-100: #161616;
--bg-color-200: #2d2d2d;
--bg-color-300: #3d3d3d;
--text-color: #f8f9fa;
--text-color-100: #e9ecef;
--text-color-200: #dee2e6;
--text-color-300: #dde0e3;
--primary-color: #22c55e;
}
.theme-light {
--bg-color: #fff;
--text-color: #000;
--bg-color-100: #f8f9fa;
--bg-color-200: #e9ecef;
--bg-color-300: #dee2e6;
--text-color: #000;
--text-color-100: #161616;
--text-color-200: #2d2d2d;
--text-color-300: #3d3d3d;
--primary-color: #22c55e;
}
.theme-gray {
--bg-color: #f8f9fa;
--text-color: #000;
--bg-color-100: #e9ecef;
--bg-color-200: #dee2e6;
--bg-color-300: #dde0e3;
--text-color: #000;
--text-color-100: #161616;
--text-color-200: #2d2d2d;
--text-color-300: #3d3d3d;
--primary-color: #22c55e;
}
:root {
--text-color: #000000dd;
--safe-area-inset-top: 0px;
--safe-area-inset-right: 0px;
--safe-area-inset-bottom: 10px;
--safe-area-inset-left: 0px;
/* 页面内容区域统一边距 */
--page-px: 1rem; /* 默认 16px,对应 px-4 */
--page-pl: 1rem; /* 左边距,PC 端有菜单时为 0 */
--page-pr: 1rem; /* 右边距 */
}
/* PC 端:有左侧菜单,左边距为 0 */
.pc {
--page-pl: 0px;
}
/* 响应式边距 */
@media (min-width: 640px) {
:root {
--page-px: 1.5rem; /* 24px,对应 sm:px-6 */
--page-pr: 1.5rem;
}
.mobile {
--page-pl: 1.5rem;
}
}
@media (min-width: 1024px) {
:root {
--page-px: 2rem; /* 32px,对应 lg:px-8 */
--page-pr: 2rem;
}
}
:root[class='dark'] {
--text-color: #ffffffdd;
}
.section-title {
font-size: 1.5rem;
font-weight: 700;
letter-spacing: -0.025em;
@media (min-width: 768px) {
font-size: 1.875rem;
}
@media (min-width: 1024px) {
font-size: 2.25rem;
}
}
/* 骨架屏 shimmer 动画 */
.skeleton-shimmer {
position: relative;
overflow: hidden;
background: #e5e7eb;
}
.skeleton-shimmer::after {
content: '';
position: absolute;
inset: 0;
background: linear-gradient(
90deg,
transparent 0%,
rgba(255, 255, 255, 0.4) 50%,
transparent 100%
);
animation: shimmer 1.5s infinite;
transform: translateX(-100%);
}
:root.dark .skeleton-shimmer {
background: #262626;
}
:root.dark .skeleton-shimmer::after {
background: linear-gradient(
90deg,
transparent 0%,
rgba(255, 255, 255, 0.06) 50%,
transparent 100%
);
}
@keyframes shimmer {
100% {
transform: translateX(100%);
}
}