Compare commits

..
2 Commits
Author SHA1 Message Date
qing 63b5243faf style(index): 首页移动端响应式优化
触屏加大可点目标,平板/手机收敛光晕与留白,超小屏进一步紧凑排版。
2026-08-05 10:48:09 +08:00
qing 1b6a767f62 feat(dnfs): 节点卡片仅标题可点击进入子节点
将进入子节点的点击事件从整张卡片收窄到标题 h3,内容/统计/操作区不再触发
跳转;同步 theme.css 将手型光标与 hover 高亮集中在标题上。
2026-08-05 10:48:09 +08:00
3 changed files with 63 additions and 14 deletions

No files matched your search

+51 -4
View File
@@ -272,12 +272,59 @@ body {
} }
/* ===== 响应式 ===== */ /* ===== 响应式 ===== */
/* 触屏设备:加大可点目标 */
@media (hover: none) and (pointer: coarse) {
.btn { min-height: 44px; }
.quick-links a { padding: 0.5rem 0.25rem; }
}
/* 平板及以下:收敛首屏光晕与留白 */
@media (max-width: 768px) {
body { padding: 1.25rem 0.75rem; }
.hero { padding: 4rem 1.25rem 3.5rem; }
.hero::after { width: 420px; height: 420px; opacity: 0.4; }
.hero-title { letter-spacing: 0.01em; }
.features { gap: 0.9rem; }
.feature-card { padding: 1.4rem 1.2rem; }
}
/* 手机:全宽布局、紧凑排版 */
@media (max-width: 480px) { @media (max-width: 480px) {
.header { top: 0.5rem; padding: 0.45rem 0.75rem; } body { padding: 1rem 0.75rem; }
.header {
top: 0.5rem;
padding: 0.45rem 0.85rem;
gap: 0.4rem;
}
.header h1 { font-size: 1rem; } .header h1 { font-size: 1rem; }
.header h1 svg { display: none; } /* 小屏隐藏 logo 图标,避免挤压 */
.right-group { gap: 0.35rem; }
.right-group .btn { padding: 0.5rem 0.95rem; font-size: 0.82rem; }
#name { max-width: 72px; } #name { max-width: 72px; }
.hero { padding: 3rem 0.75rem 2.5rem; }
.hero::after { width: 300px; height: 300px; opacity: 0.32; }
.hero-title { margin-bottom: 0.75rem; }
.hero-sub { font-size: 0.95rem; }
.hero-actions {
flex-direction: column;
align-items: stretch;
gap: 0.65rem;
}
.hero-actions .btn-lg { width: 100%; padding: 0.85rem 1.5rem; }
.section-title { margin-top: 2.5rem; font-size: 1.3rem; }
.features { margin-top: 1.25rem; grid-template-columns: 1fr; }
.feature-card:hover { transform: none; } /* 触屏取消悬浮位移 */
.about { padding: 0.5rem 0.5rem 2.5rem; }
.about .site-intro { padding: 1.4rem 1.3rem; text-align: left; }
.quick-links { gap: 1rem 1.5rem; margin-top: 1.5rem; }
}
/* 超小屏 */
@media (max-width: 360px) {
.hero { padding: 2.5rem 0.5rem 2rem; } .hero { padding: 2.5rem 0.5rem 2rem; }
.hero-sub { font-size: 0.95rem; } .header h1 { font-size: 0.95rem; }
.hero-actions { flex-direction: column; align-items: stretch; } .right-group .btn { padding: 0.45rem 0.8rem; font-size: 0.8rem; }
.section-title { margin-top: 2rem; }
} }
+6 -5
View File
@@ -324,14 +324,15 @@ input[type="button"]:disabled {
border-radius: var(--radius-sm); border-radius: var(--radius-sm);
} }
.recommend-list center { .recommend-list center {
cursor: pointer;
padding: 0.4rem; padding: 0.4rem;
border-radius: var(--radius-sm); border-radius: var(--radius-sm);
transition: background 0.15s;
} }
.recommend-list center:hover { background: var(--accent-soft); } /* 仅标题可点击进入子节点:手型光标 + hover 高亮集中在标题 h3 上 */
.recommend-list center:hover h3 { color: var(--accent); } .recommend-list .card h3 {
.recommend-list .card h3 { transition: color 0.15s; } cursor: pointer;
transition: color 0.15s;
}
.recommend-list .card h3:hover { color: var(--accent); }
.recommend-list .card p { font-size: 0.9rem; line-height: 1.6; color: var(--fg-secondary); } .recommend-list .card p { font-size: 0.9rem; line-height: 1.6; color: var(--fg-secondary); }
/* ===== Owner Chip (dnfs 发帖用户) ===== */ /* ===== Owner Chip (dnfs 发帖用户) ===== */
+6 -5
View File
@@ -881,17 +881,18 @@ function renderCards(list) {
let card = document.createElement('div'); let card = document.createElement('div');
card.className = "card"; card.className = "card";
card.__item = item; /* 供搜索过滤时读取原始数据 */ card.__item = item; /* 供搜索过滤时读取原始数据 */
card.addEventListener('click', function(event) { let ttl = document.createElement('center');
let ttl1 =document.createElement('h3');
ttl1.textContent = item.title;
card.id = item.title;
/* 仅标题可点击进入子节点(内容/统计/操作区不触发跳转) */
ttl1.addEventListener('click', function(event) {
if (!confirmLeaveIfDirty()) return; /* 未放弃输入则不跳转,stack 保持原样 */ if (!confirmLeaveIfDirty()) return; /* 未放弃输入则不跳转,stack 保持原样 */
var id = Number(item.id) var id = Number(item.id)
stack.push(id) stack.push(id)
getNode(id).then(load_notes) getNode(id).then(load_notes)
getNode(id).then(loadMap) getNode(id).then(loadMap)
}); });
let ttl = document.createElement('center');
let ttl1 =document.createElement('h3');
ttl1.textContent = item.title;
card.id = item.title;
ttl.appendChild(ttl1); ttl.appendChild(ttl1);
card.appendChild(ttl); card.appendChild(ttl);
let wrt_div = document.createElement('p'); let wrt_div = document.createElement('p');