angularjs-slider
Version:
AngularJS slider directive with no external dependencies. Mobile friendly!.
276 lines (248 loc) • 5.61 kB
text/less
/**
* Angular JS slider directive
*
* (c) Rafal Zajac <rzajac@gmail.com>
* (c) Valentin Hervieu <valentin@hervi.eu>
* http://github.com/angular-slider/angularjs-slider
*
* Licensed under the MIT license
*/
@import 'variables.less';
.rzslider {
display: inline-block;
position: relative;
height: @barDimension;
width: 100%;
margin: 35px 0 15px 0;
vertical-align: middle;
user-select: none;
&.noanimate * {
transition: none ;
}
&.with-legend {
margin-bottom: @withLegendMargin;
}
&[disabled] {
cursor: not-allowed;
.rz-pointer {
cursor: not-allowed;
background-color: @handleDisabledColor;
}
.rz-draggable {
cursor: not-allowed;
}
.rz-selection {
background: @barDisabledFillColor;
}
.rz-tick {
cursor: not-allowed;
&.rz-selected {
background: @barDisabledFillColor;
}
}
}
span {
white-space: nowrap;
position: absolute;
display: inline-block;
}
.rz-base {
width: 100%;
height: 100%;
padding: 0;
}
.rz-bar-wrapper {
left: 0;
box-sizing: border-box;
margin-top: (-@handleSize / 2);
padding-top: (@handleSize / 2);
width: 100%;
height: @handleSize;
z-index: 1;
transition: all linear @animationDuration;
}
.rz-draggable {
cursor: move;
}
.rz-bar {
left: 0;
width: 100%;
height: @barDimension;
z-index: 1;
background: @barNormalColor;
.rounded((@barDimension / 2));
}
.rz-bar-wrapper.rz-transparent .rz-bar {
background: transparent;
}
.rz-bar-wrapper.rz-left-out-selection .rz-bar {
background: @barLeftOutSelectionColor;
}
.rz-bar-wrapper.rz-right-out-selection .rz-bar {
background: @barRightOutSelectionColor;
}
.rz-selection {
z-index: 2;
background: @barFillColor;
.rounded((@barDimension / 2));
transition: background-color linear @animationDuration;
}
.rz-restricted {
z-index: 3;
background: @restrictedBarColor;
.rounded((@barDimension / 2));
}
.rz-pointer {
cursor: pointer;
width: @handleSize;
height: @handleSize;
top: (-@handleSize / 2 + @barDimension / 2);
background-color: @handleBgColor;
z-index: 3;
.rounded((@handleSize / 2));
transition: all linear @animationDuration;
&:after {
content: '';
width: @handlePointerSize;
height: @handlePointerSize;
position: absolute;
top: (@handleSize / 2 - @handlePointerSize / 2);
left: (@handleSize / 2 - @handlePointerSize / 2);
.rounded((@handlePointerSize / 2));
background: @handleInnerColor;
}
&:hover:after {
background-color: @handleHoverColor;
}
&.rz-active {
z-index: 4;
&:after {
background-color: @handleActiveColor;
}
}
}
.rz-bubble {
cursor: default;
bottom: (@handleSize / 2);
padding: @bubblePadding;
color: @labelTextColor;
transition: all linear @animationDuration;
&.rz-limit {
color: @limitLabelTextColor;
transition: none;
}
}
.rz-ticks {
box-sizing: border-box;
width: 100%;
height: 0;
position: absolute;
left: 0;
top: (-(@ticksHeight - @barDimension) / 2);
margin: 0;
z-index: 1;
list-style: none;
}
.rz-ticks-values-under {
.rz-tick-value {
top: auto;
bottom: (@ticksValuePosition - 2);
}
}
.rz-tick {
text-align: center;
cursor: pointer;
width: @ticksWidth;
height: @ticksHeight;
background: @ticksColor;
border-radius: 50%;
position: absolute;
top: 0;
left: 0;
margin-left: (@handleSize / 2 - @ticksWidth / 2); // for centering
transition: background-color linear @animationDuration;
&.rz-selected {
background: @selectedTicksColor;
}
}
.rz-tick-value {
position: absolute;
top: @ticksValuePosition;
transform: translate(-50%, 0);
}
.rz-tick-legend {
position: absolute;
top: @ticksLegendPosition;
transform: translate(-50%, 0);
max-width: 50px;
white-space: normal;
}
&.rz-vertical {
position: relative;
width: @barDimension;
height: 100%;
margin: 0 20px;
padding: 0;
vertical-align: baseline;
.rz-base {
width: 100%;
height: 100%;
padding: 0;
}
.rz-bar-wrapper {
top: auto;
left: 0;
margin: 0 0 0 (-@handleSize / 2);
padding: 0 0 0 (@handleSize / 2);
height: 100%;
width: @handleSize;
}
.rz-bar {
bottom: 0;
left: auto;
width: @barDimension;
height: 100%;
}
.rz-pointer {
left: (-@handleSize / 2 + @barDimension / 2) ;
top: auto;
bottom: 0;
}
.rz-bubble {
left: (@handleSize / 2) ;
margin-left: 3px;
bottom: 0;
}
.rz-ticks {
height: 100%;
width: 0;
left: (-(@ticksHeight - @barDimension) / 2);
top: 0;
z-index: 1;
}
.rz-tick {
vertical-align: middle;
margin-left: auto;
margin-top: (@handleSize / 2 - @ticksWidth / 2); // for centering
}
.rz-tick-value {
left: @ticksValuePositionOnVertical;
top: auto;
transform: translate(0, -28%);
}
.rz-tick-legend {
top: auto;
right: @ticksLegendPosition;
transform: translate(0, -28%);
max-width: none;
white-space: nowrap;
}
.rz-ticks-values-under {
.rz-tick-value {
bottom: auto;
left: auto;
right: @ticksValuePositionOnVertical;
}
}
}
}