diff --git a/UI/Web/src/app/book-reader/book-reader/book-reader.component.scss b/UI/Web/src/app/book-reader/book-reader/book-reader.component.scss
index f7c62217e..7132626f9 100644
--- a/UI/Web/src/app/book-reader/book-reader/book-reader.component.scss
+++ b/UI/Web/src/app/book-reader/book-reader/book-reader.component.scss
@@ -155,6 +155,11 @@ $primary-color: #0062cc;
.reading-section {
height: 100vh;
+ width: 100%;
+}
+
+.book-content {
+ position: relative;
}
.drawer-body {
diff --git a/UI/Web/src/app/book-reader/book-reader/book-reader.component.ts b/UI/Web/src/app/book-reader/book-reader/book-reader.component.ts
index 5faeaef7e..0eee0bfb0 100644
--- a/UI/Web/src/app/book-reader/book-reader/book-reader.component.ts
+++ b/UI/Web/src/app/book-reader/book-reader/book-reader.component.ts
@@ -160,7 +160,11 @@ export class BookReaderComponent implements OnInit, AfterViewInit, OnDestroy {
readerStyles: string = '';
darkModeStyleElem!: HTMLElement;
topOffset: number = 0; // Offset for drawer and rendering canvas
- scrollbarNeeded = false; // Used for showing/hiding bottom action bar
+ /**
+ * Used for showing/hiding bottom action bar. Calculates if there is enough scroll to show it.
+ * Will hide if all content in book is absolute positioned
+ */
+ scrollbarNeeded = false;
readingDirection: ReadingDirection = ReadingDirection.LeftToRight;
private readonly onDestroy = new Subject();
@@ -715,6 +719,14 @@ export class BookReaderComponent implements OnInit, AfterViewInit, OnDestroy {
this.isLoading = false;
this.scrollbarNeeded = this.readingSectionElemRef.nativeElement.scrollHeight > this.readingSectionElemRef.nativeElement.clientHeight;
+ const itemsOnScreen = Array.from(this.readingHtml.nativeElement.querySelectorAll('*')).filter(elem => (elem as HTMLElement).nodeName != 'STYLE');
+ const itemsWithAbsolutePositioning = itemsOnScreen.filter(elem => (elem as HTMLElement).style.getPropertyValue('position') === 'absolute').length;
+
+ if (itemsWithAbsolutePositioning >= itemsOnScreen.length) {
+ // Supress bottom actionbar. This is because of how the html is structured, with abs positioning, it will render inside images, etc.
+ this.scrollbarNeeded = false;
+ }
+
// Find all the part ids and their top offset
this.setupPageAnchors();