UNPKG

vue-ssr-carousel

Version:

A performance focused Vue carousel designed for SSR/SSG environments.

192 lines (187 loc) 4.16 kB
.ssr-carousel-left-button, .ssr-carousel-right-button { position: absolute; top: 50%; transform: translateY(-50%); display: inline-block; -webkit-appearance: none; -moz-appearance: none; appearance: none; background: none; color: inherit; border: none; padding: 0; cursor: pointer; -webkit-user-select: none; -moz-user-select: none; user-select: none; -webkit-tap-highlight-color: rgba(0,0,0,0); } .ssr-carousel-left-button { left: 2%; } .ssr-carousel-right-button { right: 2%; } .ssr-carousel-left-icon, .ssr-carousel-right-icon { display: inline-block; width: 42px; height: 42px; background-color: rgba(0,0,0,0.5); border-radius: 21px; display: flex; align-items: center; justify-content: center; transition: opacity 0.2s; } [aria-disabled] > .ssr-carousel-left-icon, [aria-disabled] > .ssr-carousel-right-icon { opacity: 0.1; cursor: default; } :not([aria-disabled]) > .ssr-carousel-left-icon, :not([aria-disabled]) > .ssr-carousel-right-icon { opacity: 0.5; } @media (hover: hover) { :not([aria-disabled]) > .ssr-carousel-left-icon:hover, :not([aria-disabled]) > .ssr-carousel-right-icon:hover { opacity: 0.85; } } :not([aria-disabled]) > .ssr-carousel-left-icon:active, :not([aria-disabled]) > .ssr-carousel-right-icon:active { opacity: 1; } :not([aria-disabled]) > .ssr-carousel-left-icon.active, :not([aria-disabled]) > .ssr-carousel-right-icon.active { opacity: 1; } .ssr-carousel-left-icon:before, .ssr-carousel-right-icon:before { content: ''; position: relative; } .ssr-carousel-left-icon:before { width: 0; height: 0; background: 0; border-style: solid; border-width: 9px 12px 9px 0; border-color: transparent #fff transparent transparent; left: -2px; } .ssr-carousel-right-icon:before { width: 0; height: 0; background: 0; border-style: solid; border-width: 9px 0 9px 12px; border-color: transparent transparent transparent #fff; left: 2px; } .ssr-carousel-dot-button { display: inline-block; -webkit-appearance: none; -moz-appearance: none; appearance: none; background: none; color: inherit; border: none; padding: 0; cursor: pointer; -webkit-user-select: none; -moz-user-select: none; user-select: none; -webkit-tap-highlight-color: rgba(0,0,0,0); } .ssr-carousel-dots { margin-top: 10px; display: flex; justify-content: center; } .ssr-carousel-dot-icon { display: inline-block; width: 12px; height: 12px; border-radius: 6px; border: 2px solid rgba(0,0,0,0.7); margin-left: 4px; margin-right: 4px; transition: opacity 0.2s; } [aria-disabled] > .ssr-carousel-dot-icon { opacity: 1; background: rgba(0,0,0,0.7); cursor: default; } :not([aria-disabled]) > .ssr-carousel-dot-icon { opacity: 0.5; } @media (hover: hover) { :not([aria-disabled]) > .ssr-carousel-dot-icon:hover { opacity: 0.85; } } :not([aria-disabled]) > .ssr-carousel-dot-icon:active { opacity: 1; } :not([aria-disabled]) > .ssr-carousel-dot-icon.active { opacity: 1; } .ssr-carousel-track { display: flex; -webkit-user-select: none; -moz-user-select: none; user-select: none; } .ssr-carousel-track.dragging { pointer-events: none; } .ssr-carousel-slide { flex-shrink: 0; } .ssr-carousel-rtl .ssr-carousel-slide { direction: rtl; } .ssr-carousel-mask.disabled .ssr-carousel-slide[aria-hidden='true'] { display: none; } .ssr-carousel { touch-action: pan-y; direction: ltr; } .ssr-carousel-slides { position: relative; } .ssr-peek-values { position: absolute; } .ssr-carousel-mask { position: relative; } .ssr-carousel-mask:not(.no-mask) { overflow: hidden; } .ssr-carousel-mask:not(.disabled):not(.not-draggable) { cursor: -webkit-grab; cursor: grab; } .ssr-carousel-mask:not(.disabled):not(.not-draggable).pressing { cursor: -webkit-grabbing; cursor: grabbing; } .ssr-carousel-visually-hidden { border: 0; clip: rect(0 0 0 0); -webkit-clip-path: inset(50%); clip-path: inset(50%); height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute; width: 1px; white-space: nowrap; }