@import url('https://fonts.googleapis.com/css?family=Jaldi&display=swap');
body {
display: flex;
height: 100vh;
margin: 0;
background: #3d3d44;
font-family: 'Jaldi', sans-serif;
font-size: 14px;
color: white;
}
#wrapper {
margin: auto;
display: flex;
flex-direction: column;
align-items: center;
}
p {
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
#info {
opacity: 0.2;
margin: 0;
text-align: center;
}
// VARIABLES (Have fun) ―――――――――――――――――――――――――
$TM-mainTint: #3d3d44;
$TM-backgroundColor: darken($TM-mainTint, 2%);
$TM-borderSize: 9px;
$TM-borderColor: darken($TM-mainTint, 8%);
$TM-width: 25px;
$TM-height: 240px;
$TM-bulbSize: $TM-width * 2;
$TM-radius: 20px;
$TM-graduationsStyle: 2px solid rgba(0, 0, 0, 0.5);
$TM-bulbColor: #3dcadf;
$TM-mercuryColor : linear-gradient(#f17a65, $TM-bulbColor) no-repeat bottom;
// Tooltip
$TM-tooltipColor: rgba(0, 0, 0, 0.7);
$TM-tooltipSize: 1em;
$TM-tooltipRadius: 5px;
$TM-tooltipTopShift: 5px;
$TM-tooltipVerticalPadding: 5px;
$TM-tooltipHorizontalPadding: $TM-tooltipVerticalPadding * 2;
$TM-tooltipLeftShift: 100%;
$TM-tooltipArrowWidth: 1.5; // Higher numbers produce smaller width
$TM-tooltipArrowHeight: 2.2; // Higher numbers produce smaller height
@mixin border() { border: $TM-borderSize solid $TM-borderColor; }
// THERMOMETER ―――――――――――――――――――――――――
#termometer {
width: $TM-width;
background: $TM-backgroundColor;
height: $TM-height;
position: relative;
@include border;
border-radius: $TM-radius;
z-index: 1;
margin-bottom: $TM-bulbSize;
&:before, &:after {
position: absolute;
content: "";
border-radius: 50%;
}
// Border cover
&:before {
width: 100%;
height: $TM-bulbSize / 2 + $TM-borderSize;
bottom: $TM-borderSize;
background: $TM-backgroundColor;
z-index: -1;
}
// Bulb
&:after {
transform: translateX(-50%);
width: $TM-bulbSize;
height: $TM-bulbSize;
background-color: $TM-bulbColor;
bottom: -$TM-bulbSize + $TM-borderSize;
@include border;
z-index: -3;
left: 50%;
}
#graduations {
height: 59%;
top: 20%;
width: 50%;
&, &:before {
position: absolute;
border-top: $TM-graduationsStyle;
border-bottom: $TM-graduationsStyle;
}
&:before {
content: "";
height: 34%;
width: 100%;
top: 32%;
}
}
#temperature {
bottom: 0;
background: $TM-mercuryColor;
width: 100%;
border-radius: $TM-radius;
background-size: 100% $TM-height;
transition: all 0.2s ease-in-out;
&, &:before, &:after {
position: absolute;
}
// Temperature value - Tooltip
&:before {
content: attr(data-value);
background: $TM-tooltipColor;
color: white;
z-index: 2;
padding: $TM-tooltipVerticalPadding $TM-tooltipHorizontalPadding;
border-radius: $TM-tooltipRadius;
font-size: $TM-tooltipSize;
line-height: 1;
transform: translateY(50%);
left: calc(#{$TM-tooltipLeftShift} + 1em / #{$TM-tooltipArrowWidth});
top: calc(-1em + #{$TM-tooltipTopShift} - #{$TM-tooltipVerticalPadding} * 2);
}
// Tooltip arrow
&:after {
content: "";
border-top: $TM-tooltipSize / $TM-tooltipArrowHeight solid transparent;
border-bottom: $TM-tooltipSize / $TM-tooltipArrowHeight solid transparent;
border-right: $TM-tooltipSize / $TM-tooltipArrowWidth solid $TM-tooltipColor;
left: $TM-tooltipLeftShift;
top: calc(-#{$TM-tooltipSize} / #{$TM-tooltipArrowHeight} + #{$TM-tooltipTopShift});
}
}
}
// PLAYGROUND ―――――――――――――――――――――――――
#playground {
font-size: 1.1em;
#range {
display: flex;
input[type="text"] {
width: 2em;
background: transparent;
border: none;
color: inherit;
font: inherit;
margin: 0 5px;
padding: 0px 5px;
border-bottom: 2px solid transparent;
transition: all 0.2s ease-in-out;
&:focus {
border-color: $TM-bulbColor;
outline: none;
}
&:first-child {text-align: right; }
}
}
#unit {
width: 100%;
margin: 0;
text-align: center;
&:hover { cursor: pointer; }
}
}
// RANGE ―――――――――――――――――――――――――
// https://github.com/darlanrod/input-range-scss
$track-color: $TM-borderColor !default;
$thumb-color: $TM-bulbColor !default;
$thumb-radius: 12px !default;
$thumb-height: 11px !default;
$thumb-width: 18px !default;
$thumb-shadow-size: 4px !default;
$thumb-shadow-blur: 4px !default;
$thumb-shadow-color: transparent !default;
$thumb-border-width: 0px !default;
$thumb-border-color: $TM-mainTint !default;
$track-width: 100% !default;
$track-height: 10px !default;
$track-shadow-size: 1px !default;
$track-shadow-blur: 1px !default;
$track-shadow-color: transparent !default;
$track-border-width: 2px !default;
$track-border-color: $track-color !default;
$track-radius: 5px !default;
$contrast: 3% !default;
$focusStyle: lighten($track-color, $contrast);
$ie-bottom-track-color: darken($track-color, $contrast) !default;
@mixin shadow($shadow-size, $shadow-blur, $shadow-color) {
box-shadow: $shadow-size $shadow-size $shadow-blur $shadow-color, 0 0 $shadow-size lighten($shadow-color, 5%);
}
@mixin track {
cursor: default;
height: $track-height;
transition: all .2s ease;
width: $track-width;
cursor: pointer;
transition: all 0.2s ease-in-out;
}
@mixin thumb($adjustment: 0) {
@include shadow($thumb-shadow-size, $thumb-shadow-blur, $thumb-shadow-color);
background: $thumb-color;
border: $thumb-border-width solid $thumb-border-color;
border-radius: $thumb-radius;
cursor: pointer;
height: $thumb-height + $adjustment;
width: $thumb-width + $adjustment;
}
@mixin disabled {
cursor: not-allowed;
}
input[type="range"] {
-webkit-appearance: none;
background: transparent;
margin: $thumb-height / 2 0;
width: $track-width;
&::-moz-focus-outer {
border: 0;
}
&:hover {
cursor: pointer;
}
&:focus {
outline: 0;
&::-webkit-slider-runnable-track {
background: $focusStyle;
border-color: $focusStyle;
}
&::-ms-fill-lower {
background: $track-color;
}
&::-ms-fill-upper {
background: $focusStyle;
border-color: $focusStyle;
}
}
&::-webkit-slider-runnable-track {
@include track;
@include shadow($track-shadow-size, $track-shadow-blur, $track-shadow-color);
background: $track-color;
border: $track-border-width solid $track-border-color;
border-radius: $track-radius;
}
&::-webkit-slider-thumb {
@include thumb;
-webkit-appearance: none;
margin-top: ((-$track-border-width * 2 + $track-height) / 2 - $thumb-height / 2);
}
&::-moz-range-track {
@include shadow($track-shadow-size, $track-shadow-blur, $track-shadow-color);
@include track;
background: $track-color;
border: $track-border-width solid $track-border-color;
border-radius: $track-radius;
height: $track-height / 2;
}
&::-moz-range-thumb {
@include thumb(-4);
}
&::-ms-track {
@include track;
background: transparent;
border-color: transparent;
border-width: ($thumb-height / 2) 0;
color: transparent;
}
&::-ms-fill-lower {
@include shadow($track-shadow-size, $track-shadow-blur, $track-shadow-color);
background: $ie-bottom-track-color;
border: $track-border-width solid $track-border-color;
border-radius: ($track-radius * 2);
}
&::-ms-fill-upper {
@include shadow($track-shadow-size, $track-shadow-blur, $track-shadow-color);
background: $track-color;
border: $track-border-width solid $track-border-color;
border-radius: ($track-radius * 2);
}
&::-ms-thumb {
@include thumb(-4);
margin-top: $track-height / 4;
}
&:disabled {
&::-webkit-slider-thumb {
@include disabled;
}
&::-moz-range-thumb {
@include disabled;
}
&::-ms-thumb {
@include disabled;
}
&::-webkit-slider-runnable-track {
@include disabled;
}
&::-ms-fill-lower {
@include disabled;
}
&::-ms-fill-upper {
@include disabled;
}
}
}