UNPKG

@exadel/esl

Version:

Exadel Smart Library (ESL) is the lightweight custom elements library that provide a set of super-flexible components

192 lines (191 loc) 5.94 kB
:root { --esl-slide-initial-size: 100%; --esl-carousel-side-space: 5px; --esl-carousel-step-duration: 250ms; } esl-carousel { position: relative; display: block; max-width: 100%; box-sizing: content-box; margin: calc(var(--esl-carousel-side-space, 0) * -1); padding: var(--esl-carousel-side-space, 0); /* stylelint-disable */ overflow: hidden; overflow: clip; /* stylelint-enable */ } esl-carousel:not(.esl-carousel) [esl-carousel-slide] { max-width: 100%; max-height: 100%; } esl-carousel.esl-carousel-vertical { touch-action: pan-x; } esl-carousel.esl-carousel-vertical [esl-carousel-slides] { flex-direction: column; } esl-carousel.esl-carousel-horizontal { touch-action: pan-y; } esl-carousel.esl-carousel-horizontal [esl-carousel-slides] { flex-direction: row; } esl-carousel[dragging] { cursor: grabbing; } esl-carousel[animating] { padding-inline: 0; margin-inline: 0; } esl-carousel[dragging] [esl-carousel-slides], esl-carousel[animating] [esl-carousel-slides] { user-select: none; pointer-events: none; } esl-carousel[empty] { --esl-carousel-side-space: 0; } esl-carousel[empty] [esl-carousel-slides] { display: none; } /* Default carousel area styles */ [esl-carousel-slides] { position: relative; width: 100%; margin: 0; display: flex; gap: 20px; z-index: 0; transform: translate3d(0px, 0px, 0px); } /* Default carousel slide styles */ [esl-carousel-slide] { flex: 0 0 auto; margin: 0; padding: 0; position: relative; z-index: 1; list-style: none; } .esl-carousel-no-extra-space { --esl-carousel-side-space: 0; } .esl-carousel-default-renderer [esl-carousel-slides] { display: flex; flex-wrap: nowrap; transition: none; max-width: 100%; max-height: 100%; } .esl-carousel-default-renderer.esl-carousel-horizontal [esl-carousel-slide] { width: var(--esl-slide-size, var(--esl-slide-initial-size)); } .esl-carousel-default-renderer.esl-carousel-vertical [esl-carousel-slide] { height: var(--esl-slide-size, var(--esl-slide-initial-size)); } .esl-carousel-grid-renderer { /* stylelint-disable-next-line */ /* stylelint-disable-next-line */ } .esl-carousel-grid-renderer [esl-carousel-slides] { display: grid; grid-template-rows: 1fr 1fr; grid-auto-columns: auto; grid-auto-flow: column; transition: none; max-width: 100%; max-height: 100%; } .esl-carousel-grid-renderer.esl-carousel-vertical [esl-carousel-slides] { grid-template-columns: 1fr 1fr; grid-auto-rows: auto; grid-auto-flow: row; } .esl-carousel-grid-renderer.esl-carousel-horizontal :is([esl-carousel-slide], [esl-carousel-fake-slide]) { width: var(--esl-slide-size, --esl-slide-initial-size, 100%); } .esl-carousel-grid-renderer.esl-carousel-vertical :is([esl-carousel-slide], [esl-carousel-fake-slide]) { height: var(--esl-slide-size, --esl-slide-initial-size, 100%); } .esl-carousel-css-renderer [esl-carousel-slides] { display: grid; grid-template-areas: 'slide'; position: relative; width: 100%; } .esl-carousel-css-renderer [esl-carousel-slide] { grid-area: slide; z-index: 0; position: relative; backface-visibility: hidden; top: 100%; visibility: hidden; } .esl-carousel-css-renderer [esl-carousel-slide]:is([active], [pre-active]) { top: 0; visibility: visible; } .esl-carousel-css-renderer [esl-carousel-slide][active] { z-index: 1; } .esl-carousel-css-renderer.esl-carousel-css-fade[animating] [esl-carousel-slide] { transition: opacity var(--esl-carousel-step-duration) linear; } .esl-carousel-css-renderer.esl-carousel-css-fade [esl-carousel-slide] { opacity: 0; } .esl-carousel-css-renderer.esl-carousel-css-fade [esl-carousel-slide][active] { opacity: 1; } .esl-carousel-css-renderer.esl-carousel-css-fade[animating] [esl-carousel-slide][pre-active] { z-index: 2; opacity: 1; } .esl-carousel-css-renderer.esl-carousel-css-fade[shifted] [esl-carousel-slide][pre-active] { z-index: 2; opacity: var(--esl-carousel-offset-ratio, 0); } .esl-carousel-css-renderer.esl-carousel-css-slide[animating] :is([esl-carousel-slide], [esl-carousel-slides]) { transition: transform var(--esl-carousel-step-duration) linear; } .esl-carousel-css-renderer.esl-carousel-css-slide.esl-carousel-horizontal [esl-carousel-slides] { transform: translate3d(var(--esl-carousel-offset, 0), 0, 0); } .esl-carousel-css-renderer.esl-carousel-css-slide.esl-carousel-horizontal [esl-carousel-slides].forward { transform: translate3d(-100%, 0, 0); } .esl-carousel-css-renderer.esl-carousel-css-slide.esl-carousel-horizontal [esl-carousel-slides].backward { transform: translate3d(100%, 0, 0); } .esl-carousel-css-renderer.esl-carousel-css-slide.esl-carousel-horizontal [esl-carousel-slide] { top: 0; left: 100%; } .esl-carousel-css-renderer.esl-carousel-css-slide.esl-carousel-horizontal [esl-carousel-slide][pre-active][next] { left: 100%; } .esl-carousel-css-renderer.esl-carousel-css-slide.esl-carousel-horizontal [esl-carousel-slide][active] { left: 0; } .esl-carousel-css-renderer.esl-carousel-css-slide.esl-carousel-horizontal [esl-carousel-slide][pre-active][prev] { left: -100%; } .esl-carousel-css-renderer.esl-carousel-css-slide.esl-carousel-vertical [esl-carousel-slides] { transform: translate3d(0, var(--esl-carousel-offset, 0), 0); } .esl-carousel-css-renderer.esl-carousel-css-slide.esl-carousel-vertical [esl-carousel-slides].forward { transform: translate3d(0, -100%, 0); } .esl-carousel-css-renderer.esl-carousel-css-slide.esl-carousel-vertical [esl-carousel-slides].backward { transform: translate3d(0, 100%, 0); } .esl-carousel-css-renderer.esl-carousel-css-slide.esl-carousel-vertical [esl-carousel-slide][pre-active][next] { top: 100%; } .esl-carousel-css-renderer.esl-carousel-css-slide.esl-carousel-vertical [esl-carousel-slide][active] { top: 0; } .esl-carousel-css-renderer.esl-carousel-css-slide.esl-carousel-vertical [esl-carousel-slide][pre-active][prev] { top: -100%; }