diff --git a/icon/indicator-horizontal.svg b/icon/indicator-horizontal.svg
new file mode 100644
index 0000000..f6db8b0
--- /dev/null
+++ b/icon/indicator-horizontal.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/icon/indicator-rectangle-horizontal.svg b/icon/indicator-rectangle-horizontal.svg
new file mode 100644
index 0000000..7d0d9b1
--- /dev/null
+++ b/icon/indicator-rectangle-horizontal.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/style.css b/style.css
index 12e124d..26ac2c6 100644
--- a/style.css
+++ b/style.css
@@ -22,6 +22,8 @@
--radio-width: 12px;
--checkbox-width: 13px;
--radio-label-spacing: 6px;
+ --range-track-height: 4px;
+ --range-spacing: 10px;
/* Some detailed computations for radio buttons and checkboxes */
--radio-total-width-precalc: var(--radio-width) + var(--radio-label-spacing);
@@ -429,6 +431,140 @@ textarea:focus {
outline: none;
}
+input[type=range] {
+ -webkit-appearance: none;
+ width: 100%;
+ background: transparent;
+}
+
+input[type=range]:focus {
+ outline: none;
+}
+
+input[type=range]::-webkit-slider-thumb {
+ -webkit-appearance: none;
+ height: 21px;
+ width: 11px;
+ background: svg-load("./icon/indicator-horizontal.svg");
+ transform: translateY(-8px);
+}
+
+input[type=range].has-box-indicator::-webkit-slider-thumb {
+ background: svg-load("./icon/indicator-rectangle-horizontal.svg");
+ transform: translateY(-10px);
+}
+
+input[type=range]::-moz-range-thumb {
+ height: 21px;
+ width: 11px;
+ border: 0;
+ border-radius: 0;
+ background: svg-load("./icon/indicator-horizontal.svg");
+ transform: translateY(2px);
+}
+
+input[type=range].has-box-indicator::-moz-range-thumb {
+ background: svg-load("./icon/indicator-rectangle-horizontal.svg");
+ transform: translateY(0px);
+}
+
+input[type=range]::-webkit-slider-runnable-track {
+ width: 100%;
+ height: 2px;
+ box-sizing: border-box;
+ background: black;
+ border-right: 1px solid grey;
+ border-bottom: 1px solid grey;
+ box-shadow:
+ 1px 0 0 white,
+ 1px 1px 0 white,
+ 0 1px 0 white,
+ -1px 0 0 darkgrey,
+ -1px -1px 0 darkgrey,
+ 0 -1px 0 darkgrey,
+ -1px 1px 0 white,
+ 1px -1px darkgrey;
+}
+
+input[type=range]::-moz-range-track {
+ width: 100%;
+ height: 2px;
+ box-sizing: border-box;
+ background: black;
+ border-right: 1px solid grey;
+ border-bottom: 1px solid grey;
+ box-shadow:
+ 1px 0 0 white,
+ 1px 1px 0 white,
+ 0 1px 0 white,
+ -1px 0 0 darkgrey,
+ -1px -1px 0 darkgrey,
+ 0 -1px 0 darkgrey,
+ -1px 1px 0 white,
+ 1px -1px darkgrey;
+}
+
+.is-vertical {
+ display: inline-block;
+ width: 4px;
+ height: 150px;
+ transform: translateY(50%) ;
+}
+
+.is-vertical > input[type=range] {
+ width: 150px;
+ height: 4px;
+ margin: 0 calc(var(--grouped-element-spacing) + var(--range-spacing)) 0 var(--range-spacing);
+ transform-origin: left;
+ transform: rotate(270deg) translateX(calc(-50% + var(--element-spacing))) ;
+}
+
+.is-vertical > input[type=range]::-webkit-slider-runnable-track {
+ border-left: 1px solid grey;
+ border-right: 0;
+ border-bottom: 1px solid grey;
+ box-shadow:
+ -1px 0 0 white,
+ -1px 1px 0 white,
+ 0 1px 0 white,
+ 1px 0 0 darkgrey,
+ 1px -1px 0 darkgrey,
+ 0 -1px 0 darkgrey,
+ 1px 1px 0 white,
+ -1px -1px darkgrey;
+}
+
+.is-vertical > input[type=range]::-moz-range-track {
+ border-left: 1px solid grey;
+ border-right: 0;
+ border-bottom: 1px solid grey;
+ box-shadow:
+ -1px 0 0 white,
+ -1px 1px 0 white,
+ 0 1px 0 white,
+ 1px 0 0 darkgrey,
+ 1px -1px 0 darkgrey,
+ 0 -1px 0 darkgrey,
+ 1px 1px 0 white,
+ -1px -1px darkgrey;
+}
+
+.is-vertical > input[type=range]::-webkit-slider-thumb {
+ transform: translateY(-8px) scaleX(-1);
+}
+
+.is-vertical > input[type=range].has-box-indicator::-webkit-slider-thumb {
+ transform: translateY(-10px) scaleX(-1);
+}
+
+.is-vertical > input[type=range]::-moz-range-thumb {
+ transform: translateY(2px) scaleX(-1);
+}
+
+.is-vertical > input[type=range].has-box-indicator::-moz-range-thumb {
+ transform: translateY(0px) scaleX(-1);
+}
+
select:focus {
color: var(--button-highlight);
background-color: var(--dialog-blue);