UNPKG

@vime/core

Version:

Customizable, extensible, accessible and framework agnostic media player.

203 lines (176 loc) 4.84 kB
/** * @prop --vm-slider-thumb-bg: The background color of the slider thumb. * @prop --vm-slider-thumb-width: The width of the slider thumb. * @prop --vm-slider-thumb-height: The height of the slider thumb. * @prop --vm-slider-thumb-shadow: The shadow cast around the slider thumb. * @prop --vm-slider-track-height: The height of the track. * @prop --vm-slider-track-focused-height: The height of the track when it is focused. * @prop --vm-slider-track-color: The color of the track. * @prop --vm-slider-value-color: The color of the part of the track filled upto the current value. */ :host { width: 100%; } .slider { width: 100%; } input { width: 100%; -webkit-appearance: none; background: transparent; border: 0; outline: 0; cursor: pointer; box-sizing: border-box; border-radius: calc(var(--vm-slider-thumb-height) * 2); user-select: none; -webkit-user-select: none; touch-action: manipulation; /* Color is used in JS to populate lower fill for WebKit */ color: var(--vm-slider-value-color); display: block; height: var(--vm-slider-track-height); margin: 0; padding: 0; transition: box-shadow 0.3s ease; } input::-webkit-slider-runnable-track { background: transparent; border: 0; border-radius: calc(var(--vm-slider-track-height) / 2); height: var(--vm-slider-track-height); transition: box-shadow 0.3s ease; user-select: none; background-image: linear-gradient( to right, currentColor var(--vm-value, 0%), transparent var(--vm-value, 0%) ); background-color: var(--vm-slider-track-color); } input::-webkit-slider-thumb { opacity: 0; background: var(--vm-slider-thumb-bg); border: 0; border-radius: 100%; position: relative; transition: all 0.2s ease; width: var(--vm-slider-thumb-width); height: var(--vm-slider-thumb-height); box-shadow: var(--vm-slider-thumb-shadow); -webkit-appearance: none; margin-top: calc( 0px - calc( calc(var(--vm-slider-thumb-height) - var(--vm-slider-track-height)) / 2 ) ); } input::-moz-range-track { background: transparent; border: 0; border-radius: calc(var(--vm-slider-track-height) / 2); height: var(--vm-slider-track-height); transition: box-shadow 0.3s ease; user-select: none; background-color: var(--vm-slider-track-color); } input::-moz-range-thumb { opacity: 0; background: var(--vm-slider-thumb-bg); border: 0; border-radius: 100%; position: relative; transition: all 0.2s ease; width: var(--vm-slider-thumb-width); height: var(--vm-slider-thumb-height); box-shadow: var(--vm-slider-thumb-shadow); } input::-moz-range-progress { background: currentColor; border-radius: calc(var(--vm-slider-track-height) / 2); height: var(--vm-slider-track-height); } input::-ms-track { border: 0; border-radius: calc(var(--vm-slider-track-height) / 2); height: var(--vm-slider-track-height); transition: box-shadow 0.3s ease; user-select: none; color: transparent; background-color: var(--vm-slider-track-color); } input::-ms-fill-upper { background: transparent; border: 0; border-radius: calc(var(--vm-slider-track-height) / 2); height: var(--vm-slider-track-height); transition: box-shadow 0.3s ease; user-select: none; } input::-ms-fill-lower { border: 0; border-radius: calc(var(--vm-slider-track-height) / 2); height: var(--vm-slider-track-height); transition: box-shadow 0.3s ease; user-select: none; background: currentColor; } input::-ms-thumb { opacity: 0; background: var(--vm-slider-thumb-bg); border: 0; border-radius: 100%; position: relative; transition: all 0.2s ease; width: var(--vm-slider-thumb-width); height: var(--vm-slider-thumb-height); box-shadow: var(--vm-slider-thumb-shadow); /* For some reason, Edge uses the -webkit margin above */ margin-top: 0; } input::-ms-tooltip { display: none; } input:hover::-webkit-slider-runnable-track { height: var(--vm-slider-track-focused-height); } input:hover::-moz-range-track { height: var(--vm-slider-track-focused-height); } input:hover::-ms-track { height: var(--vm-slider-track-focused-height); } input:hover::-ms-fill-upper { height: var(--vm-slider-track-focused-height); } input:hover::-ms-fill-lower { height: var(--vm-slider-track-focused-height); } input:hover::-webkit-slider-thumb { opacity: 1; } input:hover::-moz-range-thumb { opacity: 1; } input:hover::-ms-thumb { opacity: 1; } input:focus { outline: 0; } input:focus::-webkit-slider-runnable-track { outline: 0; height: var(--vm-slider-track-focused-height); } input:focus::-moz-range-track { outline: 0; height: var(--vm-slider-track-focused-height); } input:focus::-ms-track { outline: 0; height: var(--vm-slider-track-focused-height); } input::-moz-focus-outer { border: 0; }