Files
menav/style.css
Zuoling Rong b0e5817e4a 2.0
2025-02-03 13:17:39 +08:00

926 lines
18 KiB
CSS
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/* 全局样式 */
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
font-family: var(--font-body);
font-weight: var(--font-weight-body);
line-height: 1.6;
background-color: #1a1b1e;
color: #e4e6eb;
min-height: 100vh;
overflow: hidden; /* 防止body滚动 */
}
/* 布局 */
.layout {
display: flex;
min-height: 100vh;
opacity: 0;
animation: fadeIn 0.3s ease-out forwards;
position: relative;
z-index: 1;
overflow: hidden; /* 防止layout滚动 */
}
/* 移动端基础样式 */
.mobile-buttons {
display: none;
position: fixed;
top: 1rem;
left: 0;
right: 0;
width: 100%;
padding: 0 1rem;
justify-content: space-between;
z-index: 1000; /* 确保在最上层 */
pointer-events: none; /* 防止按钮区域阻挡其他内容 */
}
.menu-toggle,
.search-toggle {
background: #2d2e32;
border: none;
color: #fff;
width: 40px;
height: 40px;
border-radius: 10px;
display: flex;
align-items: center;
justify-content: center;
cursor: pointer;
transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1);
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2);
pointer-events: auto; /* 恢复按钮的点击事件 */
}
.menu-toggle:hover,
.search-toggle:hover {
background: #3a3b3f;
transform: translateY(-2px);
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);
}
.menu-toggle:active,
.search-toggle:active {
transform: translateY(0);
}
/* 遮罩层 */
.overlay {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: rgba(0, 0, 0, 0.5);
opacity: 0;
visibility: hidden;
transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1);
z-index: 90;
backdrop-filter: blur(4px);
}
.overlay.active {
opacity: 1;
visibility: visible;
}
/* 侧边栏样式 */
.sidebar {
width: 240px;
background-color: #2d2e32;
padding: 2rem 1.2rem;
display: flex;
flex-direction: column;
gap: 2rem;
position: fixed;
top: 0;
left: 0;
bottom: 0;
overflow-y: auto;
box-shadow: 2px 0 10px rgba(0, 0, 0, 0.1);
z-index: 100;
-webkit-backface-visibility: hidden;
backface-visibility: hidden;
transform: translateZ(0);
height: 100vh; /* 确保高度固定 */
}
.sidebar::-webkit-scrollbar {
width: 6px;
}
.sidebar::-webkit-scrollbar-track {
background: transparent;
}
.sidebar::-webkit-scrollbar-thumb {
background-color: rgba(255, 255, 255, 0.1);
border-radius: 3px;
}
.sidebar::-webkit-scrollbar-thumb:hover {
background-color: rgba(255, 255, 255, 0.2);
}
.logo h1 {
font-size: 1.4rem;
color: #fff;
margin-bottom: 2rem;
padding-left: 0.5rem;
letter-spacing: 0.5px;
}
/* 导航区域样式 */
.nav-section {
display: flex;
flex-direction: column;
gap: 0.5rem;
}
.section-title {
font-size: 1rem;
color: #4a9eff;
padding: 0.5rem;
margin-bottom: 0.5rem;
display: flex;
align-items: center;
gap: 0.5rem;
}
.section-title i {
font-size: 1.2rem;
}
.nav-item {
display: flex;
align-items: center;
padding: 0.8rem;
color: #a1a2a5;
text-decoration: none;
border-radius: 8px;
transition: all 0.3s ease;
position: relative;
}
.nav-item .icon-container {
width: 24px;
display: flex;
justify-content: center;
align-items: center;
margin-right: 1rem;
}
.nav-item .nav-text {
flex: 1;
}
.nav-item .external-icon {
font-size: 0.9rem;
opacity: 0.6;
margin-left: 0.5rem;
transition: all 0.3s ease;
}
.nav-item:hover {
background-color: #3a3b3f;
color: #fff;
}
.nav-item:hover .external-icon {
opacity: 1;
transform: translateX(2px);
}
.nav-item.active {
background-color: #3a3b3f;
color: #fff;
}
.nav-item i {
width: 20px;
text-align: center;
}
/* 主内容区域 */
.content {
flex: 1;
margin-left: 240px;
padding: 2rem 0;
background-color: #1a1b1e;
position: relative;
height: 100vh; /* 固定高度 */
overflow-y: auto; /* 允许内容滚动 */
overflow-x: hidden;
max-width: calc(100vw - 240px);
display: flex;
flex-direction: column;
align-items: center;
}
/* 搜索框容器 - 固定在顶部 */
.search-container {
width: 100%;
display: flex;
justify-content: center;
padding: 0 2rem;
margin-bottom: 1rem;
position: sticky;
top: 0;
z-index: 10;
}
/* 搜索框 */
.search-box {
position: relative;
width: 100%;
max-width: 600px;
background-color: #2d2e32;
border-radius: 12px;
}
.search-box::after {
content: '';
position: absolute;
right: 3.5rem;
top: 50%;
transform: translateY(-50%);
width: 6px;
height: 6px;
border-radius: 50%;
opacity: 0;
transition: all 0.3s ease;
}
.search-box.has-results::after {
background-color: #4caf50;
opacity: 1;
}
.search-box.no-results::after {
background-color: #f44336;
opacity: 1;
}
.search-box input {
width: 100%;
padding: 1rem 4rem 1rem 1.5rem;
border: none;
border-radius: 12px;
background-color: transparent;
color: #fff;
font-size: 1rem;
transition: all 0.3s ease;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
}
.search-box input:focus {
outline: none;
background-color: #3a3b3f;
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
}
.search-box input::placeholder {
color: #8b8c8f;
}
.search-box i {
position: absolute;
right: 1.5rem;
top: 50%;
transform: translateY(-50%);
color: #8b8c8f;
transition: all 0.3s ease;
}
.search-box.has-results i {
color: #4caf50;
}
.search-box.no-results i {
color: #f44336;
}
/* 页面容器 */
.page {
position: relative;
width: 100%;
display: none;
flex-direction: column;
align-items: center;
padding-top: 2rem;
}
.page.active {
display: flex;
animation: fadeIn 0.3s ease-out forwards;
}
/* 欢迎区域 */
.welcome-section {
width: 100%;
max-width: 1200px;
margin: 0 auto 3.5rem auto;
padding: 0 6rem 0 8rem;
text-align: left;
position: relative;
z-index: 5;
}
.welcome-section h2 {
font-family: var(--font-title);
font-weight: var(--font-weight-title);
font-size: 2.4rem;
color: #fff;
margin-bottom: 0.5rem;
letter-spacing: 0.5px;
}
.welcome-section h3 {
font-family: var(--font-subtitle);
font-weight: var(--font-weight-subtitle);
font-size: 2rem;
margin-bottom: 1rem;
letter-spacing: 0.3px;
background: linear-gradient(135deg, #4a9eff 0%, #a855f7 50%, #ff6b6b 100%);
-webkit-background-clip: text;
background-clip: text;
-webkit-text-fill-color: transparent;
position: relative;
display: inline-block;
text-shadow: 0 0 20px rgba(74, 158, 255, 0.1);
animation: glow 2s ease-in-out infinite alternate;
}
.welcome-section h3::before {
content: '';
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: inherit;
filter: blur(20px);
opacity: 0.3;
z-index: -1;
}
.welcome-section .subtitle {
color: #8b8c8f;
font-size: 1.1rem;
line-height: 1.5;
}
@keyframes glow {
from {
filter: drop-shadow(0 0 2px rgba(74, 158, 255, 0.2))
drop-shadow(0 0 4px rgba(168, 85, 247, 0.2));
}
to {
filter: drop-shadow(0 0 4px rgba(74, 158, 255, 0.4))
drop-shadow(0 0 8px rgba(168, 85, 247, 0.4));
}
}
/* 分类样式 */
.category {
background: linear-gradient(145deg, #2f3035, #2b2c30);
border-radius: 16px;
padding: 2rem;
margin: 0 auto 2.5rem auto;
width: 100%;
max-width: 1100px;
position: relative;
z-index: 1;
opacity: 0;
animation: fadeIn 0.5s ease-out forwards;
box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15);
border: 1px solid rgba(255, 255, 255, 0.03);
}
.category h2 {
font-size: 1.2rem;
margin-bottom: 1.5rem;
color: #fff;
display: flex;
align-items: center;
gap: 0.8rem;
letter-spacing: 0.3px;
}
.category h2 i {
color: #4a9eff;
font-size: 1.3rem;
}
/* 网站卡片网格 */
.sites-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
gap: 1.2rem;
position: relative;
z-index: 1;
width: 100%;
}
/* 网站卡片样式 */
.site-card {
background: linear-gradient(145deg, #363940, #31343a);
border-radius: 12px;
padding: 1.2rem;
text-decoration: none;
color: inherit;
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
display: flex;
flex-direction: column;
align-items: center;
text-align: center;
backface-visibility: hidden;
transform: translateZ(0);
will-change: transform;
max-width: 100%;
position: relative;
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.15);
border: 1px solid rgba(255, 255, 255, 0.05);
z-index: 2;
}
.site-card:hover {
transform: translateY(-4px);
background: linear-gradient(145deg, #3e4249, #383b41);
box-shadow: 0 6px 20px rgba(0, 0, 0, 0.2);
border-color: rgba(255, 255, 255, 0.1);
}
.site-card i {
font-size: 1.8rem;
margin-bottom: 1rem;
color: #4a9eff;
transition: all 0.3s ease;
}
.site-card:hover i {
transform: scale(1.1);
color: #5ba9ff;
}
.site-card h3 {
font-size: 1rem;
margin-bottom: 0.5rem;
color: #fff;
font-weight: 500;
letter-spacing: 0.3px;
}
.site-card p {
font-size: 0.9rem;
color: #a1a2a5;
margin: 0;
line-height: 1.4;
}
/* 添加编辑按钮 */
.edit-buttons {
position: absolute;
top: 0.5rem;
right: 0.5rem;
display: flex;
gap: 0.5rem;
opacity: 0;
transition: opacity 0.3s ease;
}
.site-card:hover .edit-buttons {
opacity: 1;
}
.edit-btn, .delete-btn {
background: none;
border: none;
color: #8b8c8f;
cursor: pointer;
padding: 0.3rem;
border-radius: 4px;
transition: all 0.3s ease;
}
.edit-btn:hover, .delete-btn:hover {
color: #fff;
background-color: #4a4b4f;
}
/* 添加网站按钮 */
.add-site-btn {
background: linear-gradient(145deg, #363940, #31343a);
border: 2px dashed rgba(255, 255, 255, 0.1);
border-radius: 14px;
padding: 1.5rem;
color: #8b8c8f;
cursor: pointer;
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
min-height: 180px;
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.15);
}
.add-site-btn:hover {
background: linear-gradient(145deg, #3e4249, #383b41);
border-color: #4a9eff;
color: #fff;
transform: translateY(-2px);
box-shadow: 0 6px 20px rgba(0, 0, 0, 0.2);
}
.add-site-btn i {
font-size: 2.2rem;
margin-bottom: 0.8rem;
transition: transform 0.3s ease;
}
.add-site-btn:hover i {
transform: scale(1.1);
}
/* 模态框样式 */
.modal {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: rgba(0, 0, 0, 0.6);
display: none;
justify-content: center;
align-items: center;
z-index: 1000;
backdrop-filter: blur(4px);
}
.modal.active {
display: flex;
animation: modalFadeIn 0.3s ease-out forwards;
}
.modal-content {
background-color: #2d2e32;
border-radius: 16px;
padding: 2.2rem;
width: 90%;
max-width: 520px;
position: relative;
box-shadow: 0 8px 32px rgba(0, 0, 0, 0.2);
transform: scale(0.95);
opacity: 0;
animation: modalContentShow 0.3s ease-out forwards;
}
.modal-header {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 2rem;
}
.modal-header h3 {
color: #fff;
font-size: 1.3rem;
letter-spacing: 0.3px;
font-weight: 500;
}
.close-modal {
background: none;
border: none;
color: #8b8c8f;
cursor: pointer;
font-size: 1.5rem;
padding: 0.5rem;
transition: all 0.3s ease;
border-radius: 8px;
}
.close-modal:hover {
color: #fff;
background-color: #3a3b3f;
}
/* 表单样式 */
.site-form {
display: flex;
flex-direction: column;
gap: 1.2rem;
}
.form-group {
display: flex;
flex-direction: column;
gap: 0.6rem;
}
.form-group label {
color: #8b8c8f;
font-size: 0.95rem;
letter-spacing: 0.2px;
}
.form-group input, .form-group select {
background-color: #3a3b3f;
border: 1px solid transparent;
border-radius: 10px;
padding: 0.9rem 1.2rem;
color: #fff;
font-size: 1rem;
transition: all 0.3s ease;
box-shadow: 0 2px 6px rgba(0, 0, 0, 0.1);
}
.form-group input:focus, .form-group select:focus {
outline: none;
background-color: #3a3b3f;
border-color: #4a9eff;
box-shadow: 0 2px 8px rgba(74, 158, 255, 0.15);
}
.form-group input::placeholder {
color: #8b8c8f;
}
.form-actions {
display: flex;
justify-content: flex-end;
gap: 1rem;
margin-top: 2rem;
}
.btn {
padding: 0.9rem 1.8rem;
border: none;
border-radius: 10px;
cursor: pointer;
font-size: 1rem;
font-weight: 500;
letter-spacing: 0.3px;
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
box-shadow: 0 2px 6px rgba(0, 0, 0, 0.1);
}
.btn-primary {
background-color: #4a9eff;
color: #fff;
}
.btn-primary:hover {
background-color: #3a8eef;
transform: translateY(-2px);
box-shadow: 0 4px 12px rgba(74, 158, 255, 0.2);
}
.btn-secondary {
background-color: #3a3b3f;
color: #8b8c8f;
}
.btn-secondary:hover {
background-color: #4a4b4f;
color: #fff;
transform: translateY(-2px);
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
}
/* 响应式设计 */
@media (max-width: 1200px) {
.welcome-section {
padding: 0 4rem;
margin-bottom: 3rem;
}
.category {
max-width: 900px;
margin-bottom: 2rem;
}
}
@media (max-width: 768px) {
/* 显示移动端按钮 */
.mobile-buttons {
display: flex;
}
/* 内容区域样式 */
.content {
margin-left: 0;
max-width: 100vw;
padding: 4.5rem 1rem 2rem;
}
/* 侧边栏样式 */
.sidebar {
transform: translateX(-100%);
transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1);
width: 240px;
z-index: 150;
padding-top: calc(2rem + 60px); /* 增加顶部padding为按钮留出空间 */
}
.sidebar.active {
transform: translateX(0);
}
/* 搜索框容器样式 */
.search-container {
position: fixed;
top: calc(1rem + 50px); /* 将搜索框下移,避开按钮 */
right: 1rem;
width: 0;
padding: 0;
margin: 0;
overflow: hidden;
transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1);
background: transparent;
z-index: 150;
}
.search-container.active {
width: calc(100% - 2rem); /* 调整宽度计算 */
right: 1rem; /* 统一右侧间距 */
}
.search-box {
width: 100%;
opacity: 0;
transition: opacity 0.25s cubic-bezier(0.4, 0, 0.2, 1);
}
.search-container.active .search-box {
opacity: 1;
}
/* 搜索框样式优化 */
.search-box input {
padding: 0.8rem 3rem 0.8rem 1.2rem;
font-size: 0.95rem;
background-color: #2d2e32;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2);
}
.search-box i {
right: 1.2rem;
}
/* 导航文字显示 */
.sidebar .logo h1,
.sidebar .section-title,
.sidebar .nav-item span {
opacity: 1;
display: block;
}
/* 欢迎区域样式 */
.welcome-section {
padding: 0 1rem;
margin-top: 1rem; /* 增加顶部间距 */
}
.welcome-section h2 {
font-size: 2rem;
}
.welcome-section h3 {
font-size: 1.6rem;
background: linear-gradient(135deg, #4a9eff 0%, #a855f7 100%);
-webkit-background-clip: text;
background-clip: text;
animation: glow 3s ease-in-out infinite alternate;
}
/* 分类样式优化 */
.category {
margin: 0 1rem 1.5rem;
padding: 1.5rem;
}
.sites-grid {
gap: 1rem;
}
}
@media (max-width: 480px) {
.welcome-section {
padding: 0 1.5rem;
margin-bottom: 2rem;
}
.category {
margin: 0 1rem 1.2rem 1rem;
padding: 1.2rem;
}
.search-container {
padding: 0 1rem;
}
.page {
padding-top: 1rem;
}
}
/* 动画效果 */
@keyframes fadeIn {
from {
opacity: 0;
transform: translateY(10px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
/* 搜索结果页面 */
#search-results {
position: relative;
width: 100%;
display: none;
flex-direction: column;
align-items: center;
z-index: 15;
}
#search-results.active {
display: flex;
animation: fadeIn 0.3s ease-out forwards;
}
/* 搜索结果区域 */
.search-section {
width: 100%;
max-width: 1100px;
margin: 0 auto;
position: relative;
z-index: 1;
}
/* 清除之前可能导致问题的样式 */
.page {
transform: none;
visibility: visible;
transition: none;
}
#search-results {
transform: none;
}
.search-section {
transform: none;
opacity: 1;
}
/* 优化布局结构 */
.layout {
position: relative;
z-index: 1;
}
.sidebar {
z-index: 100;
}
/* 确保内容不会重叠 */
.site-card {
position: relative;
z-index: 2;
}
.sites-grid {
position: relative;
z-index: 1;
width: 100%;
}
@keyframes modalFadeIn {
from {
opacity: 0;
}
to {
opacity: 1;
}
}
@keyframes modalContentShow {
from {
opacity: 0;
transform: scale(0.95);
}
to {
opacity: 1;
transform: scale(1);
}
}