Files
OverlayScrollbars/packages/overlayscrollbars/src/styles/sizeobserver.scss
T
2021-04-21 23:14:26 +02:00

107 lines
1.8 KiB
SCSS

$scrollbar-cushion: 100px;
$inflate-margin: 200px;
.os-size-observer,
.os-size-observer-listener {
direction: inherit;
pointer-events: none;
overflow: hidden;
visibility: hidden;
box-sizing: border-box;
}
.os-size-observer,
.os-size-observer-listener,
.os-size-observer-listener-item,
.os-size-observer-listener-item-final {
writing-mode: horizontal-tb;
position: absolute;
left: 0;
top: 0;
}
.os-size-observer {
height: 25%;
width: 25%;
z-index: -1;
contain: strict;
display: flex;
flex-direction: column;
flex-wrap: nowrap;
padding: inherit;
border: inherit;
box-sizing: inherit;
margin: 0;
&::before,
&::after {
content: '';
flex: none;
box-sizing: inherit;
}
&::before {
padding: 1px;
width: 1px;
height: 1px;
}
&::after {
content: '';
padding: inherit;
border: inherit;
}
}
.os-size-observer-appear {
// "forwards" is important for older browsers
animation: os-size-observer-appear-animation 1ms forwards;
}
.os-size-observer-listener {
box-sizing: border-box;
position: relative;
flex: auto;
margin: -#{$inflate-margin};
&.ltr {
margin-right: -#{$inflate-margin * 2};
margin-left: 0;
}
&.rtl {
margin-left: -#{$inflate-margin * 2};
margin-right: 0;
}
// lets assume no scrollbar is 100px wide
& > .os-size-observer-listener-item {
top: -$scrollbar-cushion;
right: -$scrollbar-cushion;
bottom: -$scrollbar-cushion;
left: -$scrollbar-cushion;
}
}
.os-size-observer-listener-scroll {
box-sizing: content-box;
}
.os-size-observer-listener-item {
right: 0;
bottom: 0;
overflow: hidden;
direction: ltr;
flex: none;
}
.os-size-observer-listener-item-final {
transition: none;
}
@keyframes os-size-observer-appear-animation {
from {
z-index: 0;
}
to {
z-index: -1;
}
}