balsamine.2021-2022
clone your own copy | download snapshot

Snapshots | iceberg

Inside this repository

interface.css
text/css

Download raw (7.4 KB)

/* CSS for Paged.js interface – v0.2 */

/*
DONE:
* fixed spread mode so it's exactly aligned to pagewidth*2 minus the bleed
* rules always on top of everything (for the moment same z-index than the page)
* preview mode that hides all the rules

TODO:
* show margin boxes only when superior to 0 otherwise it overlays the stroke of pagebox!!
* centered zoom (not top left ?)
* position fixed for interface directly in css (use iframe!)
* correction of bug of 1mm added to body.spread .pagedjs_pages
* margin-bottom on last page does not work
 */

/* Change the look */
:root {
    --color-background: lightgrey;
    --color-pageSheet: #cfcfcf;
    --color-pageBox: lightsalmon;
    --color-paper: white;
    --color-marginBox: skyblue;

    /* --pagedjs-crop-color: black;
    --pagedjs-crop-shadow: white;
    --pagedjs-crop-stroke: 1px; */

    --interface-height: 40px;
    --interface-outline: 1px;
    --page-space: 5cm;
}

/* To define how the book look on the screen: */
@media screen {
    body {
        background-color: var(--color-background);
        margin: 0;
    }

    /* ___ display (single or spread) ___*/
    .pagedjs_pages {
      display: flex;
      /* width: calc(var(--pagedjs-width) + 2 * var(--page-space)); */
      flex: 0;
      flex-wrap: nowrap;
      /* margin: 0 auto; */
      position: relative;
      top: var(--interface-height);
    }

    .pagedjs_page {
      margin: 0;
      flex-shrink: 0;
      flex-grow: 0;
      margin-top: var(--page-space);
      margin-left: var(--page-space);
      margin-right: var(--page-space);
      background-color: var(--color-paper);
      position: relative;
    }

    .pagedjs_page:last-of-type {
      margin-bottom: var(--page-space);
    }

    /* spread mode */
    body.spread .pagedjs_pages{
      /* width: calc(var(--pagedjs-width) * 2 - var(--pagedjs-bleed-right) - var(--pagedjs-bleed-left) + 2 * var(--page-space) + 1mm); */
      /* width: calc(var(--pagedjs-width) * 2 + 5 * var(--page-space)); */
    }
    body.spread .pagedjs_page{
      /* width: calc(var(--pagedjs-width) * 2 - var(--pagedjs-bleed-right) - var(--pagedjs-bleed-left) + 2 * var(--page-space) + 1mm); */
      margin-right: var(--page-space);
    }
    /* body.spread .pagedjs_first_page {
      margin-left: calc(var(--pagedjs-width) - var(--pagedjs-bleed-left) - var(--pagedjs-bleed-right) + var(--page-space));
    } */
    /* body.spread .pagedjs_left_page{
      z-index: 2;
      width: calc(var(--pagedjs-bleed-left) + var(--pagedjs-pagebox-width));
      margin-right: 0;
    }
    body.spread .pagedjs_right_page:not(.pagedjs_first_page){
      z-index: 1;
      width: calc(var(--pagedjs-pagebox-width) + var(--pagedjs-bleed-right));
      margin-left: 0;
    }
    body.spread .pagedjs_right_page:not(.pagedjs_first_page) > .pagedjs_sheet{
      position: absolute; top: 0; right: 0;
    }
    body.spread .pagedjs_left_page .pagedjs_bleed-right{
      display: none;
    } */

    /* ___ show the rules ___ */

    /* only draw large boxes when not in preview */
    .pagedjs_page, .pagedjs_pagebox{
      position: relative;
    }
    body.preview .pagedjs_pagebox{
      overflow: hidden;
    }
    body.preview .pagedjs_pagebox::after{
      content: ""; position: absolute; inset: 0;
      z-index: 99999999; pointer-events: none;
      outline: var(--interface-outline) solid var(--color-pageSheet);
    }
    body:not(.preview) .pagedjs_page::after{
      content: ""; position: absolute; inset: 0;
      z-index: 99999999; pointer-events: none;
      outline: var(--interface-outline) solid var(--color-pageSheet);
    }
    body:not(.preview) .pagedjs_pagebox::after{
      content: ""; position: absolute; inset: 0;
      z-index: 99999999; pointer-events: none;
      outline: calc(var(--interface-outline) * 1) solid var(--color-pageBox);
      outline-offset: calc(var(--interface-outline) * -1/2);
    }
    .pagedjs_marks-crop {
      /* correcting the z-index so the interface bar can be on top */
    	z-index: 999999999;
    }

    /* hide crop marks */
    body.preview :is(
      .pagedjs_bleed-top,
      .pagedjs_bleed-left,
      .pagedjs_bleed-right,
      .pagedjs_bleed-bottom
    ) > * {
      border: none !important;
    }

    /* only show margins boxes when not in preview */
    body:not(.preview) :is(
    .pagedjs_margin-top-left-corner-holder,
    .pagedjs_margin-top,
    .pagedjs_margin-top-left,
    .pagedjs_margin-top-center,
    .pagedjs_margin-top-right,
    .pagedjs_margin-top-right-corner-holder,
    .pagedjs_margin-bottom-left-corner-holder,
    .pagedjs_margin-bottom,
    .pagedjs_margin-bottom-left,
    .pagedjs_margin-bottom-center,
    .pagedjs_margin-bottom-right,
    .pagedjs_margin-bottom-right-corner-holder,
    .pagedjs_margin-right,
    .pagedjs_margin-right-top,
    .pagedjs_margin-right-middle,
    .pagedjs_margin-right-bottom,
    .pagedjs_margin-left,
    .pagedjs_margin-left-top,
    .pagedjs_margin-left-middle,
    .pagedjs_margin-left-bottom ){
        /* outline: var(--interface-outline) solid var(--color-marginBox);
        outline-offset: calc(var(--interface-outline) / -2); */
    }

    /* hide the bleed zone and crop marks */
    body.preview .pagedjs_pages{
      /* width: calc(var(--pagedjs-width) - var(--pagedjs-bleed-left) - var(--pagedjs-bleed-right) + 2 * var(--page-space)); */
    }
    body.preview .pagedjs_page {
      width: var(--pagedjs-pagebox-width)!important;
      height: var(--pagedjs-pagebox-height)!important;
    }
    body.preview .pagedjs_page .pagedjs_sheet{
      position: absolute;
      top: calc(var(--pagedjs-bleed-top) * -1)!important;
      left: calc(var(--pagedjs-bleed-left) * -1)!important;
      right: 0 !important;
    }
    body.preview :is(.pagedjs_marks-crop, .pagedjs_marks-middle){
      /* hide crop marks */
      display: none;
    }

    /* if both preview and spread */
    body.preview.spread .pagedjs_pages{
      /* width: calc(calc(var(--pagedjs-width) - var(--pagedjs-bleed-left) - var(--pagedjs-bleed-right)) * 2 + 2 * var(--page-space)); */
    }
    /* body.preview.spread .pagedjs_first_page {
      margin-left: calc(var(--pagedjs-width) - var(--pagedjs-bleed-left) - var(--pagedjs-bleed-right) + var(--page-space));
    } */

    /* uncomment this par to see the baseline : -------------------------------------------*/
    /* .pagedjs_pagebox {
        --pagedjs-baseline: 22px;
        --pagedjs-baseline-position: 5px;
        --pagedjs-baseline-color: cyan;
        background: linear-gradient(transparent 0%, transparent calc(var(--pagedjs-baseline) - 1px), var(--pagedjs-baseline-color) calc(var(--pagedjs-baseline) - 1px), var(--pagedjs-baseline-color) var(--pagedjs-baseline)), transparent;
        background-size: 100% var(--pagedjs-baseline);
        background-repeat: repeat-y;
        background-position-y: var(--pagedjs-baseline-position);
    }  */

}

/* added by Dorian */
/* pagedjs seems to remove the "unused css" and because the interface is
added through js at the end it does not work */

body > .interface{
  display: none;
}
@media screen {
  body > .interface {
    font-size: 14px; /* fixed font-size so it doesn't interfere with user font-sizes */
    background: gainsboro;
    font-family: sans-serif;
    display: flex;
    gap: 1em;
    padding: 0 0.5em;
    width: 100%;

    height: var(--interface-height);
    align-items: stretch;

    /* pagedjs crop marks have index of 9999999999, so we put it just above */
    z-index: 1000000000;
  }
  body > .interface > .control {
    display: flex;
    align-items: center;
  }
}