wapadil Claude commited on
Commit ·
9b47d21
1
Parent(s): 24231e4
[CRITICAL FIX] iPad深色模式对比度与竖屏完整体验修复
Browse files深色模式对比度问题修复:
- 卡片背景色:#161b22 → #21262d(提升对比度)
- 表面层级重构:#21262d → #30363d → #484f58(清晰层次)
- 文字在深色卡片上现在清晰可见
iPad Air竖屏完整体验:
- 断点策略调整:768px以上显示双栏布局(替代880px)
- iPad Air竖屏(768px):直接双栏,无需抽屉
- 手机(<768px):抽屉+快速dock模式
技术细节:
- CSS断点:768px双栏临界点,消除iPad竖屏功能缺失
- JavaScript同步:所有断点逻辑统一为767px
- 响应式优化:iPad专用栅格列宽300-350px,间距优化
用户体验:
✅ iPad Air深色模式:卡片文字清晰可见
✅ iPad Air竖屏:完整双栏专业界面
✅ 手机:抽屉+dock双重交互模式
遵循最小修改原则,精确修复用户反馈的核心问题
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- static/script.js +4 -4
- static/style.css +40 -15
static/script.js
CHANGED
|
@@ -1879,15 +1879,15 @@ function closeDrawer() {
|
|
| 1879 |
overlay.classList.remove('show');
|
| 1880 |
document.body.style.overflow = '';
|
| 1881 |
|
| 1882 |
-
// Restore quick dock visibility on narrow screens
|
| 1883 |
-
if (quickDock && window.innerWidth <=
|
| 1884 |
quickDock.style.display = 'flex';
|
| 1885 |
}
|
| 1886 |
}
|
| 1887 |
|
| 1888 |
-
// Auto-show drawer on first visit for narrow screens
|
| 1889 |
document.addEventListener('DOMContentLoaded', () => {
|
| 1890 |
-
if (window.innerWidth <=
|
| 1891 |
setTimeout(() => {
|
| 1892 |
openDrawer();
|
| 1893 |
localStorage.setItem('seenDrawer', '1');
|
|
|
|
| 1879 |
overlay.classList.remove('show');
|
| 1880 |
document.body.style.overflow = '';
|
| 1881 |
|
| 1882 |
+
// Restore quick dock visibility on narrow screens only
|
| 1883 |
+
if (quickDock && window.innerWidth <= 767) {
|
| 1884 |
quickDock.style.display = 'flex';
|
| 1885 |
}
|
| 1886 |
}
|
| 1887 |
|
| 1888 |
+
// Auto-show drawer on first visit for narrow screens only
|
| 1889 |
document.addEventListener('DOMContentLoaded', () => {
|
| 1890 |
+
if (window.innerWidth <= 767 && !localStorage.getItem('seenDrawer')) {
|
| 1891 |
setTimeout(() => {
|
| 1892 |
openDrawer();
|
| 1893 |
localStorage.setItem('seenDrawer', '1');
|
static/style.css
CHANGED
|
@@ -76,11 +76,11 @@
|
|
| 76 |
|
| 77 |
@media (prefers-color-scheme: dark) {
|
| 78 |
:root {
|
| 79 |
-
/* Dark mode professional colors */
|
| 80 |
--bg: #0d1117;
|
| 81 |
-
--surface: #
|
| 82 |
-
--surface-secondary: #
|
| 83 |
-
--surface-tertiary: #
|
| 84 |
|
| 85 |
/* Dark text hierarchy - WCAG AA compliant */
|
| 86 |
--text-primary: #f6f8fa;
|
|
@@ -977,12 +977,30 @@ label, .meta {
|
|
| 977 |
/* Container query fallback using viewport queries */
|
| 978 |
|
| 979 |
/* Enhanced breakpoints for different screen sizes */
|
| 980 |
-
/*
|
| 981 |
-
@media (
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 982 |
.app-container {
|
| 983 |
grid-template-columns: 1fr;
|
| 984 |
-
gap: 0;
|
| 985 |
-
padding: var(--spacing-
|
| 986 |
}
|
| 987 |
|
| 988 |
/* Only hide main layout left panel, not drawer content */
|
|
@@ -1000,15 +1018,22 @@ label, .meta {
|
|
| 1000 |
}
|
| 1001 |
|
| 1002 |
.right-panel {
|
| 1003 |
-
min-height: calc(100vh - 2 * var(--spacing-
|
| 1004 |
}
|
| 1005 |
}
|
| 1006 |
|
| 1007 |
-
/*
|
| 1008 |
-
@media (min-width:
|
| 1009 |
.app-container {
|
| 1010 |
-
grid-template-columns: minmax(
|
| 1011 |
-
gap: clamp(
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1012 |
}
|
| 1013 |
}
|
| 1014 |
|
|
@@ -1886,8 +1911,8 @@ select:focus-visible,
|
|
| 1886 |
transform: translateY(-1px);
|
| 1887 |
}
|
| 1888 |
|
| 1889 |
-
/* Show quick dock only on narrow screens */
|
| 1890 |
-
@media (max-width:
|
| 1891 |
.quick-dock {
|
| 1892 |
display: flex;
|
| 1893 |
}
|
|
|
|
| 76 |
|
| 77 |
@media (prefers-color-scheme: dark) {
|
| 78 |
:root {
|
| 79 |
+
/* Dark mode professional colors - Enhanced contrast */
|
| 80 |
--bg: #0d1117;
|
| 81 |
+
--surface: #21262d;
|
| 82 |
+
--surface-secondary: #30363d;
|
| 83 |
+
--surface-tertiary: #484f58;
|
| 84 |
|
| 85 |
/* Dark text hierarchy - WCAG AA compliant */
|
| 86 |
--text-primary: #f6f8fa;
|
|
|
|
| 977 |
/* Container query fallback using viewport queries */
|
| 978 |
|
| 979 |
/* Enhanced breakpoints for different screen sizes */
|
| 980 |
+
/* iPad Air portrait (768px) and larger keep dual-pane for complete experience */
|
| 981 |
+
@media (min-width: 768px) {
|
| 982 |
+
.app-container {
|
| 983 |
+
grid-template-columns: minmax(280px, 380px) 1fr;
|
| 984 |
+
gap: clamp(12px, 1.5vw, 24px);
|
| 985 |
+
}
|
| 986 |
+
|
| 987 |
+
/* Ensure sidebar toggle is hidden on larger screens */
|
| 988 |
+
.sidebar-toggle {
|
| 989 |
+
display: none;
|
| 990 |
+
}
|
| 991 |
+
|
| 992 |
+
/* Hide quick dock on larger screens */
|
| 993 |
+
.quick-dock {
|
| 994 |
+
display: none !important;
|
| 995 |
+
}
|
| 996 |
+
}
|
| 997 |
+
|
| 998 |
+
/* Only narrow mobile screens (< 768px) use drawer mode */
|
| 999 |
+
@media (max-width: 767px) {
|
| 1000 |
.app-container {
|
| 1001 |
grid-template-columns: 1fr;
|
| 1002 |
+
gap: 0;
|
| 1003 |
+
padding: var(--spacing-3);
|
| 1004 |
}
|
| 1005 |
|
| 1006 |
/* Only hide main layout left panel, not drawer content */
|
|
|
|
| 1018 |
}
|
| 1019 |
|
| 1020 |
.right-panel {
|
| 1021 |
+
min-height: calc(100vh - 2 * var(--spacing-3));
|
| 1022 |
}
|
| 1023 |
}
|
| 1024 |
|
| 1025 |
+
/* Tablet optimizations for iPad Air portrait */
|
| 1026 |
+
@media (min-width: 768px) and (max-width: 1024px) {
|
| 1027 |
.app-container {
|
| 1028 |
+
grid-template-columns: minmax(300px, 350px) 1fr;
|
| 1029 |
+
gap: clamp(16px, 2vw, 20px);
|
| 1030 |
+
padding: var(--spacing-4);
|
| 1031 |
+
}
|
| 1032 |
+
|
| 1033 |
+
/* Optimize history grid for tablet */
|
| 1034 |
+
.history-grid {
|
| 1035 |
+
grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
|
| 1036 |
+
gap: var(--spacing-3);
|
| 1037 |
}
|
| 1038 |
}
|
| 1039 |
|
|
|
|
| 1911 |
transform: translateY(-1px);
|
| 1912 |
}
|
| 1913 |
|
| 1914 |
+
/* Show quick dock only on very narrow screens */
|
| 1915 |
+
@media (max-width: 767px) {
|
| 1916 |
.quick-dock {
|
| 1917 |
display: flex;
|
| 1918 |
}
|