/** * AKSRT Menu Decorations * * 菜单图标、徽章、多列下拉、图文卡片子菜单样式。 * 所有选择器均带 aksrt- 或 .site-nav 命名空间。 */ /* ========== 菜单图标 ========== */ .nav-desktop .menu-item > a .menu-icon, .nav-desktop .menu-item > a > i:first-child { display: inline-flex; align-items: center; margin-right: 6px; font-size: 14px; opacity: 0.75; transition: opacity 0.2s ease; } .nav-desktop .menu-item:hover > a .menu-icon, .nav-desktop .menu-item:hover > a > i:first-child { opacity: 1; } /* ========== 菜单徽章 ========== */ .nav-desktop .menu-item > a .menu-badge, .nav-desktop .menu-item > a .aksrt-menu-badge { display: inline-flex; align-items: center; justify-content: center; margin-left: 6px; padding: 1px 6px; font-size: 10px; font-weight: 700; line-height: 1.4; letter-spacing: 0.02em; border-radius: 8px; white-space: nowrap; vertical-align: middle; transform: translateY(-1px); } .aksrt-menu-badge--new { background: var(--color-primary); color: #fff; } .aksrt-menu-badge--hot { background: #ff4d4f; color: #fff; } .aksrt-menu-badge--info { background: var(--color-info, #1890ff); color: #fff; } .aksrt-menu-badge--success { background: var(--color-success, #52c41a); color: #fff; } .aksrt-menu-badge--warning { background: var(--color-warning, #faad14); color: #fff; } /* ========== Hover 效果 ========== */ /* 下划线效果 */ .aksrt-menu-hover--underline .nav-desktop .menu-item > a { position: relative; } .aksrt-menu-hover--underline .nav-desktop .menu-item > a::after { content: ''; position: absolute; bottom: 0; left: 50%; width: 0; height: 2px; background: var(--color-primary); border-radius: 1px; transform: translateX(-50%); transition: width 0.25s ease; } .aksrt-menu-hover--underline .nav-desktop .menu-item:hover > a::after, .aksrt-menu-hover--underline .nav-desktop .menu-item.current-menu-item > a::after, .aksrt-menu-hover--underline .nav-desktop .menu-item.current_page_item > a::after { width: 70%; } /* 背景色效果 */ .aksrt-menu-hover--background .nav-desktop .menu-item > a { border-radius: 6px; transition: background-color 0.2s ease; } .aksrt-menu-hover--background .nav-desktop .menu-item:hover > a { background-color: var(--color-primary-soft, rgba(240, 68, 148, 0.08)); } /* 文字变色效果 */ .aksrt-menu-hover--color .nav-desktop .menu-item > a { transition: color 0.2s ease; } .aksrt-menu-hover--color .nav-desktop .menu-item:hover > a { color: var(--color-primary); } /* ========== 多列 Mega 下拉 ========== */ .nav-desktop .menu-item .aksrt-mega-submenu { position: absolute; top: 100%; left: 50%; z-index: 999; min-width: var(--aksrt-mega-width, 480px); padding: 16px 20px; background: var(--surface-page, #fff); border: 1px solid var(--color-line, #e8e8e8); border-radius: 8px; box-shadow: 0 8px 24px rgba(0, 0, 0, 0.12); opacity: 0; visibility: hidden; transform: translateX(-50%) translateY(8px); transition: opacity 0.2s ease, transform 0.2s ease, visibility 0.2s ease; } .nav-desktop .menu-item:hover .aksrt-mega-submenu { opacity: 1; visibility: visible; transform: translateX(-50%) translateY(0); } .aksrt-mega-submenu__grid { display: grid; gap: 12px; } .aksrt-mega-submenu__grid--cols-2 { grid-template-columns: repeat(2, 1fr); } .aksrt-mega-submenu__grid--cols-3 { grid-template-columns: repeat(3, 1fr); } .aksrt-mega-submenu__grid--cols-4 { grid-template-columns: repeat(4, 1fr); } .aksrt-mega-submenu__grid--cols-5 { grid-template-columns: repeat(5, 1fr); } .aksrt-mega-submenu__item { display: flex; align-items: flex-start; gap: 10px; padding: 10px 12px; border-radius: 6px; text-decoration: none; color: var(--color-ink); transition: background-color 0.15s ease; } .aksrt-mega-submenu__item:hover { background-color: var(--color-primary-soft, rgba(240, 68, 148, 0.08)); } .aksrt-mega-submenu__item-icon { flex-shrink: 0; display: flex; align-items: center; justify-content: center; width: 32px; height: 32px; border-radius: 6px; background: var(--color-primary-soft, rgba(240, 68, 148, 0.08)); color: var(--color-primary); font-size: 14px; } .aksrt-mega-submenu__item-content { flex: 1; min-width: 0; } .aksrt-mega-submenu__item-title { font-size: 13px; font-weight: 500; line-height: 1.4; color: var(--color-ink); } .aksrt-mega-submenu__item-desc { margin-top: 2px; font-size: 12px; line-height: 1.4; color: var(--text-tertiary, #8a909c); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } /* ========== 图文卡片子菜单 ========== */ .nav-desktop .menu-item .aksrt-card-submenu { position: absolute; top: 100%; left: 50%; z-index: 999; display: flex; gap: 12px; padding: 16px; background: var(--surface-page, #fff); border: 1px solid var(--color-line, #e8e8e8); border-radius: 8px; box-shadow: 0 8px 24px rgba(0, 0, 0, 0.12); opacity: 0; visibility: hidden; transform: translateX(-50%) translateY(8px); transition: opacity 0.2s ease, transform 0.2s ease, visibility 0.2s ease; } .nav-desktop .menu-item:hover .aksrt-card-submenu { opacity: 1; visibility: visible; transform: translateX(-50%) translateY(0); } .aksrt-card-submenu__item { display: flex; flex-direction: column; width: var(--aksrt-card-width, 160px); text-decoration: none; border-radius: 8px; overflow: hidden; transition: transform 0.2s ease, box-shadow 0.2s ease; } .aksrt-card-submenu__item:hover { transform: none; box-shadow: none; } .aksrt-card-submenu__thumb { width: 100%; aspect-ratio: 16 / 10; object-fit: cover; background: var(--color-fill, #f5f5f5); } .aksrt-card-submenu__body { padding: 8px 10px; } .aksrt-card-submenu__title { font-size: 13px; font-weight: 500; line-height: 1.4; color: var(--color-ink); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .aksrt-card-submenu__desc { margin-top: 2px; font-size: 11px; line-height: 1.4; color: var(--text-tertiary, #8a909c); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } /* ========== 暗色模式适配 ========== */ html.dark .aksrt-mega-submenu, body.dark-theme .aksrt-mega-submenu, html.dark .aksrt-card-submenu, body.dark-theme .aksrt-card-submenu { background: var(--surface-page); border-color: var(--color-line, #2d2d3f); } html.dark .aksrt-mega-submenu__item-title, body.dark-theme .aksrt-mega-submenu__item-title, html.dark .aksrt-card-submenu__title, body.dark-theme .aksrt-card-submenu__title { color: var(--color-ink); }