Compare commits
7 Commits
3963efa986
...
fix/mobile
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9926da6730 | ||
| 4c80aa6b42 | |||
| c0307a9173 | |||
|
|
45f7e88024 | ||
| 507fac5b5e | |||
| 071e12a06c | |||
|
|
59f72339fa |
@@ -94,14 +94,14 @@ import ReaderPage from './ReaderPage.vue';
|
||||
});
|
||||
};
|
||||
|
||||
// Calcul de la hauteur du placeholder — miroir exact du maxWidth de ReaderPage
|
||||
// Calcul de la hauteur du placeholder — miroir exact du maxWidth de ReaderPage, zoom inclus
|
||||
const getPlaceholderHeight = (page) => {
|
||||
const dims = page?.dimensions;
|
||||
if (!dims?.width || !dims?.height) return 800;
|
||||
if (!dims?.width || !dims?.height) return Math.round(800 * props.zoom);
|
||||
const displayWidth = windowWidth.value < 1200
|
||||
? Math.min(dims.width, windowWidth.value * 0.95)
|
||||
: Math.min(dims.width, 1200);
|
||||
return Math.round((dims.height / dims.width) * displayWidth);
|
||||
return Math.round((dims.height / dims.width) * displayWidth * props.zoom);
|
||||
};
|
||||
|
||||
const setupObservers = () => {
|
||||
@@ -109,7 +109,7 @@ import ReaderPage from './ReaderPage.vue';
|
||||
visibilityObserver.value?.disconnect();
|
||||
|
||||
observer.value = new IntersectionObserver(observeIntersection, {
|
||||
root: null,
|
||||
root: containerRef.value,
|
||||
threshold: 0.5
|
||||
});
|
||||
|
||||
@@ -124,7 +124,7 @@ import ReaderPage from './ReaderPage.vue';
|
||||
}
|
||||
});
|
||||
},
|
||||
{ root: null, rootMargin: '1000px 0px', threshold: 0 }
|
||||
{ root: containerRef.value, rootMargin: '1000px 0px', threshold: 0 }
|
||||
);
|
||||
|
||||
nextTick(() => {
|
||||
@@ -328,7 +328,6 @@ import ReaderPage from './ReaderPage.vue';
|
||||
@apply flex-1 flex flex-col items-center overflow-y-auto relative min-h-0;
|
||||
/* Réduction du padding sur mobile */
|
||||
@apply py-2 sm:py-8;
|
||||
scroll-behavior: smooth;
|
||||
}
|
||||
|
||||
.page-wrapper {
|
||||
|
||||
@@ -87,13 +87,9 @@ import { useReaderStore } from '../../application/store/readerStore';
|
||||
|
||||
const store = useReaderStore();
|
||||
|
||||
// En mode single : zoom via la propriété CSS `zoom` (affecte le layout → scrollbars naturelles)
|
||||
// En mode infinite : zoom via transform: scale (pas d'impact layout souhaité)
|
||||
// zoom via la propriété CSS `zoom` dans les deux modes (affecte le layout → pas de chevauchement en mode scroll)
|
||||
const containerStyle = computed(() => {
|
||||
if (store.readingMode === 'single') {
|
||||
return { zoom: props.zoom };
|
||||
}
|
||||
return { transform: `scale(${props.zoom})` };
|
||||
return { zoom: props.zoom };
|
||||
});
|
||||
|
||||
const imageRef = ref(null);
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
headerStore.shouldShowHeader ? 'mt-16' : 'mt-0',
|
||||
isReaderMode ? '' : 'md:ml-60'
|
||||
]" style="transition: margin-top 300ms ease-in-out;">
|
||||
<RouterView></RouterView>
|
||||
<RouterView class="flex-1 min-h-0"></RouterView>
|
||||
</main>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
Reference in New Issue
Block a user