add custom volume control
This commit is contained in:
parent
48862b7083
commit
48a77ca043
|
@ -0,0 +1,3 @@
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="40" height="17" viewBox="0 0 40 17">
|
||||||
|
<path fill="#C4C4C4" d="M40,15.201328 L40,1.80052901 C40,0.518480567 38.6821237,-0.351956175 37.4843106,0.138924799 L0.562431379,15.2698574 C-0.356904919,15.6466792 -0.0844775345,17 0.910700368,17 L38.1808595,17 C39.1855708,17 40,16.1947345 40,15.201328 Z"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 352 B |
|
@ -0,0 +1,66 @@
|
||||||
|
/* ----------------------------------------------------------- */
|
||||||
|
/* == volume control volume */
|
||||||
|
/* ----------------------------------------------------------- */
|
||||||
|
|
||||||
|
.volume {
|
||||||
|
position: relative;
|
||||||
|
margin: 1rem 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.volume__bg,
|
||||||
|
.volume__progress {
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
margin: .2rem .1rem;
|
||||||
|
width: calc(100% - .2rem);
|
||||||
|
height: calc(100% - .4rem);
|
||||||
|
|
||||||
|
clip-path: url(#volume);
|
||||||
|
}
|
||||||
|
|
||||||
|
.volume__bg {
|
||||||
|
background: rgba(99, 87, 118, .4);
|
||||||
|
}
|
||||||
|
|
||||||
|
.volume__progress {
|
||||||
|
background-color: $color-primary;
|
||||||
|
}
|
||||||
|
|
||||||
|
.volume__input {
|
||||||
|
position: relative;
|
||||||
|
z-index: 1;
|
||||||
|
appearance: none;
|
||||||
|
padding: 0;
|
||||||
|
width: 4rem;
|
||||||
|
border: none;
|
||||||
|
border-radius: .1rem;
|
||||||
|
background: none;
|
||||||
|
box-shadow: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.volume__input::range-track {
|
||||||
|
width: 100%;
|
||||||
|
height: 17px;
|
||||||
|
border-radius: 0;
|
||||||
|
background: transparent;
|
||||||
|
box-shadow: 0px 0px 0px #000, 0px 0px 0px #0d0d0d;
|
||||||
|
cursor: pointer;
|
||||||
|
|
||||||
|
animate: .2s;
|
||||||
|
clip-path: url(#volume);
|
||||||
|
}
|
||||||
|
|
||||||
|
.volume__input::range-thumb {
|
||||||
|
position: relative;
|
||||||
|
appearance: none;
|
||||||
|
width: 20px;
|
||||||
|
width: 6px;
|
||||||
|
height: 19px;
|
||||||
|
border: 0px solid #000;
|
||||||
|
border-radius: 2px;
|
||||||
|
background: #fff;
|
||||||
|
box-shadow: -1px 2px 4px rgba(99, 87, 118, .6);
|
||||||
|
cursor: pointer;
|
||||||
|
transform: translateY(-.1rem);
|
||||||
|
}
|
|
@ -65,6 +65,7 @@
|
||||||
@import "5-modules/player-big";
|
@import "5-modules/player-big";
|
||||||
@import "5-modules/player-progress";
|
@import "5-modules/player-progress";
|
||||||
@import "5-modules/player-track";
|
@import "5-modules/player-track";
|
||||||
|
@import "5-modules/volume";
|
||||||
|
|
||||||
|
|
||||||
// --------------------------------------------------------------
|
// --------------------------------------------------------------
|
||||||
|
|
|
@ -1,18 +1,6 @@
|
||||||
<div class="controls">
|
<div class="controls">
|
||||||
<div class="controls-group">
|
<div class="controls-group">
|
||||||
<button on:click={() => $muted = !$muted}>
|
<Volume></Volume>
|
||||||
{#if $muted}
|
|
||||||
🔇
|
|
||||||
{:else if $volume < 20}
|
|
||||||
🔈
|
|
||||||
{:else if $volume < 80}
|
|
||||||
🔉
|
|
||||||
{:else }
|
|
||||||
🔊
|
|
||||||
{/if}
|
|
||||||
</button>
|
|
||||||
|
|
||||||
<input type="range" min="0" max="100" bind:value={$volume}>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="controls-group">
|
<div class="controls-group">
|
||||||
|
@ -43,7 +31,6 @@
|
||||||
import {
|
import {
|
||||||
paused,
|
paused,
|
||||||
muted,
|
muted,
|
||||||
volume,
|
|
||||||
current,
|
current,
|
||||||
queue,
|
queue,
|
||||||
canPrevious,
|
canPrevious,
|
||||||
|
@ -52,6 +39,7 @@
|
||||||
selectNext,
|
selectNext,
|
||||||
loading
|
loading
|
||||||
} from '/store.js'
|
} from '/store.js'
|
||||||
|
import Volume from '/components/Volume'
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
|
|
|
@ -0,0 +1,19 @@
|
||||||
|
<div class="volume">
|
||||||
|
<div class="volume__bg"></div>
|
||||||
|
<div class="volume__progress" style="width: {volumePercent}%;"></div>
|
||||||
|
<input class="volume__input" type="range" min="0" max="100" step="20" bind:value={$volume}>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- for mask -->
|
||||||
|
<svg width="0" height="0">
|
||||||
|
<clipPath id="volume">
|
||||||
|
<path fill="#C4C4C4" d="M40,15.201328 L40,1.80052901 C40,0.518480567 38.6821237,-0.351956175 37.4843106,0.138924799 L0.562431379,15.2698574 C-0.356904919,15.6466792 -0.0844775345,17 0.910700368,17 L38.1808595,17 C39.1855708,17 40,16.1947345 40,15.201328 Z"/>
|
||||||
|
</clipPath>
|
||||||
|
</svg>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { volume } from '/store.js'
|
||||||
|
|
||||||
|
// to fix visual glitch
|
||||||
|
$: volumePercent = $volume ? $volume -2 : 0
|
||||||
|
</script>
|
Loading…
Reference in New Issue