diff --git a/frontend/src/components/Lesemodus.vue b/frontend/src/components/Lesemodus.vue index 8d9eb62..fbfa5ca 100644 --- a/frontend/src/components/Lesemodus.vue +++ b/frontend/src/components/Lesemodus.vue @@ -65,6 +65,11 @@ function taste(e) { // Vertikales Scrollen und Text-Markieren bleiben unberührt (dy-Vergleich). let wisch = null function wischStart(e) { + // Start auf horizontal scrollbarem Element (breite Formel/Tabelle): + // der Wisch gehört dem Element, nicht der Seiten-Navigation + for (let el = e.target; el && el !== e.currentTarget; el = el.parentElement) { + if (el.scrollWidth > el.clientWidth + 1) { wisch = null; return } + } const t = e.touches[0] wisch = { x: t.clientX, y: t.clientY } } diff --git a/frontend/src/style.css b/frontend/src/style.css index 1447967..64212b7 100644 --- a/frontend/src/style.css +++ b/frontend/src/style.css @@ -222,7 +222,12 @@ body.nav-zu .hauptbereich { padding-top: 38px; } padding: 16px 22px; margin-bottom: 16px; } .guide-section .ziel { color: var(--akzent); font-size: 13px; } -:is(.markdown, .kompakt) .katex-display { overflow-x: auto; overflow-y: hidden; padding: 4px 0; } +/* Wenig Margin, viel Padding: die Scroll-Fläche selbst wird groß — + mobil greift ein Wisch neben der Formel sonst die Seiten-Navigation */ +:is(.markdown, .kompakt) .katex-display { + overflow-x: auto; overflow-y: hidden; + margin: 0.4em 0; padding: 14px 8px; +} .markdown blockquote { margin: 12px 0; padding: 8px 14px; border-left: 3px solid var(--akzent); background: var(--karte); border-radius: 0 6px 6px 0; color: var(--text); @@ -282,6 +287,8 @@ table.kennzahlen th { color: var(--dim); } .lesemodus { position: fixed; inset: 0; z-index: 1000; background: var(--bg); display: flex; flex-direction: column; color: var(--text); + /* Wischen darf keinen Text markieren (mobil färbte jeder Swipe Sätze orange) */ + -webkit-user-select: none; user-select: none; } .lm-kopf, .lm-fuss { display: flex; align-items: center; gap: 12px; padding: 10px 18px;