@xiee/utils
Version:
Miscellaneous tools and utilities to manipulate HTML pages
174 lines (169 loc) • 3.78 kB
CSS
:root {
--side-width: 200px;
--side-gap: 2em;
--side-margin: calc(0px - var(--side-width) - var(--side-gap));
}
body, blockquote, .side { background: #fafafa; }
.body, .body ~ .appendix, .frontmatter, .fullwidth, .embed-left, .embed-right {
margin-top: 2em;
padding: 1em;
box-shadow: 0 0 8px #ccc;
background: #fff;
}
.appendix, .footnotes, .body .side { font-size: .9em; }
.body ~ .appendix, .frontmatter { background: none; }
.appendix h2 { border-bottom: 1px dashed #666; }
#TOC { top: 0; }
.bg-number {
padding: 1px 5px;
border-radius: 5px;
background: lightslategray;
color: #fff;
}
/* left/right elements*/
.side {
width: var(--side-width);
margin: 0 auto;
}
.side-left {
float: left;
clear: left;
margin-left: var(--side-margin);
&:not(.body > *) {
margin-left: calc(var(--side-margin) + 1em);
}
position: sticky;
}
.side-right {
float: right;
clear: right;
margin-right: var(--side-margin);
}
.quote-left, .quote-right { width: 45%; }
.embed-left, .embed-right {
margin-top: auto;
padding: 0;
}
.quote-left, .embed-left {
float: left;
margin-right: 1em;
}
.quote-right, .embed-right {
float: right;
margin-left: 1em;
}
.embed-left { margin-left: var(--side-margin); }
.embed-right { margin-right: var(--side-margin); }
:is(.side, .embed-left, .embed-right) > :first-child { margin-top: 0; }
:is(.embed-left, .embed-right) > :last-child { margin-bottom: 0; }
:is(.quote-left, .quote-right) {
& > :first-child { padding-top: .1px; }
& > :last-child { padding-bottom: .1px; }
}
/* wide elements */
.fullwidth {
max-width: calc(100vw - 2em);
margin: 1em 0 1em 50%;
& * {
max-width: calc(100vw - 4em);
margin: auto 0;
}
transform: translateX(-50%);
float: left;
min-width: 100%;
background: #fff;
& :is(figcaption, .caption) {
margin-left: calc(50% - 400px);
width: 800px;
padding: 1em 1em 0;
}
}
.fullscroll {
& * { max-width: initial; }
&, & figure, & .figure { overflow-x: auto; }
}
@media (min-width: 1264.02px) {
#TOC.side {
.active {
color: limegreen;
}
li li .active {
border-left: 3px solid;
margin-left: calc(-1em - 3px);
padding-left: 1em;
}
&:has(.active) li:not(:has(.active)) ul {
display: none;
}
}
.note-ref { cursor: pointer; }
.note-ref:hover + .side {
display: inline-block;
background: #f8f8f8;
position: absolute;
z-index: 1;
margin-left: 1em;
padding: .5em;
box-sizing: content-box;
}
}
@media (max-width: 1264px) {
body:not(.pagesjs) {
#TOC {
border: 1px solid #eee;
border-radius: 5px;
padding: 1em;
position: initial;
float: none;
columns: 2;
}
.side { width: 100%; }
:is(main, .body) .side {
padding: 0 2em;
color: darkslategray;
}
.side-left, .side-right {
clear: both;
margin: 1em auto;
background: none;
}
:not(.note-ref) + .side { float: none; }
.footnote-ref + .footnotes { float: left; }
.side > :last-child { margin-bottom: 0; }
.embed-left, .embed-right {
float: inherit;
margin: auto;
padding: 1em;
}
}
}
@media (max-width: 800px) {
body:not(.pagesjs) {
padding: initial;
main, .body { padding: 0 .5em 0; }
#TOC { columns: 1; }
.quote-left, .quote-right {
width: inherit;
float: inherit;
margin: auto;
}
.fullwidth {
margin: initial;
transform: initial;
float: none;
min-width: initial;
background: none;
border: none;
& :is(figcaption, .caption) {
margin: initial;
padding: initial;
}
&:not(.fullscroll) * { max-width: 100%; }
}
}
}
@media print {
body {
background: none;
}
}