CanGrow/playground/html/material-gauge-gh-pages/material-gauge.css

198 lines
5.3 KiB
CSS
Raw Permalink Normal View History

/*
* #### Gauge Component
*
* The standard markup for the component is:
*
* <div class='gauge'>
* <div class='gauge__container'>
* <div class='gauge__marker'></div>
* <div class='gauge__background'></div>
* <div class='gauge__center'></div>
* <div class='gauge__data'></div>
* <div class='gauge__needle'></div>
* </div>
* <div class='gauge__labels'>
* <span class='gauge__label--low'>No</span>
* <span class='gauge__label--spacer'></span>
* <span class='gauge__label--high'>Yes</span>
* </div>
* </div>
*/
/*
* First define all of the relevant rules that aren't dependent
* on the size of the gauge. We want to collect the size-depenent
* rules in one place to make it easier to adjust the size.
*/
.gauge {
position: relative;
margin-right: 10px;
}
.gauge__container {
margin: 0;
padding: 0;
position: absolute;
left: 50%;
overflow: hidden;
text-align: center;
-webkit-transform: translateX(-50%);
-moz-transform: translateX(-50%);
-ms-transform: translateX(-50%);
-o-transform: translateX(-50%);
transform: translateX(-50%);
}
.gauge__background {
z-index: 0;
position: absolute;
background-color: #cae0d0;
top: 0;
border-radius: 300px 300px 0 0;
}
.gauge__data {
z-index: 1;
position: absolute;
background-color: #04AA6D;
margin-left: auto;
margin-right: auto;
border-radius: 300px 300px 0 0;
-webkit-transform-origin: center bottom;
-moz-transform-origin: center bottom;
-ms-transform-origin: center bottom;
-o-transform-origin: center bottom;
transform-origin: center bottom;
}
.gauge__center {
z-index: 2;
position: absolute;
background-color: #1d211e;
margin-right: auto;
border-radius: 300px 300px 0 0;
}
.gauge__marker {
z-index: 3;
background-color: #fff;
position: absolute;
width: 1px;
}
.gauge__needle {
z-index: 4;
background-color: #E91E63;
height: 3px;
position: absolute;
-webkit-transform-origin: left center;
-moz-transform-origin: left center;
-ms-transform-origin: left center;
-o-transform-origin: left center;
transform-origin: left center;
}
.gaugeLabel {
font-weight: bold;
}
.gauge__labels {
display: table;
margin: 0 auto;
position: relative;
}
.gauge__label--low {
display: table-cell;
text-align: center;
}
.gauge__label--spacer {
display: table-cell;
}
.gauge__label--high {
display: table-cell;
text-align: center;
}
/*
* Now define the rules that depend on the size of
* the gauge. We start with sizing for a small mobile
* device.
*/
.gauge { height: calc(120px + 3em); }
.gauge__container { width: 240px; height: 120px; }
.gauge__marker { height: 120px; left: 119.5px; }
.gauge__background { width: 240px; height: 120px; }
.gauge__center { width: 144px; height: 72px; top: 48px; margin-left: 48px; }
.gauge__data { width: 240px; height: 120px; }
.gauge__needle { left: 120px; top: 117px; width: 120px; }
.gauge__labels { top: 120px; width: 240px; }
.gauge__label--low { width: 48px; }
.gauge__label--spacer { width: 144px; text-align: center;}
.gauge__label--high { width: 48px; }
/*
* Increase the gauge size slightly on larger viewports.
*/
/*
@media only screen and (min-width: 400px) {
.gauge { height: calc(150px + 3em); }
.gauge__container { width: 300px; height: 150px; }
.gauge__marker { height: 150px; left: 149.5px; }
.gauge__background { width: 300px; height: 150px; }
.gauge__center { width: 180px; height: 90px; top: 60px; margin-left: 60px; }
.gauge__data { width: 300px; height: 150px; }
.gauge__needle { left: 150px; top: 147px; width: 150px; }
.gauge__labels { top: 150px; width: 300px; }
.gauge__label--low { width: 60px; }
.gauge__label--spacer { width: 180px; }
.gauge__label--high { width: 60px; }
}
*/
/*
* As an option, the `gauge--liveupdate` class can be added
* to the main gauge element. When this class is present,
* we add a transition that animates any changes to the gauge
* value. Currently, the app does not use this option because
* all the inputs that can change gauge values are present
* on tab panels that are different from the gauge itself.
* Therefore, users won't be able to see any gauge changes
* when they make input changes. The code is available, though,
* should this change.
*/
.gauge--liveupdate .gauge__data,
.gauge--liveupdate .gauge__needle {
-webkit-transition: all 1s ease-in-out;
-moz-transition: all 1s ease-in-out;
-ms-transition: all 1s ease-in-out;
-o-transition: all 1s ease-in-out;
transition: all 1s ease-in-out;
}
/*
* For a given gauge value, x, ranging from 0.0 to 1.0, set
* the `transform: rotate()` property according to the
* following equation: `-0.5 + 0.5x turns` The default
* properties below represent an x value of 0.
*/
.gauge__data {
-webkit-transform: rotate(-.50turn);
-moz-transform: rotate(-.50turn);
-ms-transform: rotate(-.50turn);
-o-transform: rotate(-.50turn);
transform: rotate(-.50turn);
}
.gauge__needle {
-webkit-transform: rotate(-.50turn);
-moz-transform: rotate(-.50turn);
-ms-transform: rotate(-.50turn);
-o-transform: rotate(-.50turn);
transform: rotate(-.50turn);
}