fomantic-ui
Version:
Fomantic empowers designers and developers by creating a shared vocabulary for UI.
431 lines (370 loc) • 10.6 kB
text/less
/*!
* # Fomantic-UI - Slider
* https://github.com/fomantic/Fomantic-UI/
*
*
* Released under the MIT license
* https://opensource.org/licenses/MIT
*
*/
/*******************************
Theme
*******************************/
@type: "module";
@element: "slider";
@import (multiple) "../../theme.config";
.ui.slider:not(.vertical):not(.checkbox) {
width: 100%;
padding: @padding;
}
.ui.slider:not(.checkbox) {
position: relative;
}
.ui.slider:not(.checkbox):focus {
outline: 0;
}
.ui.slider .inner {
position: relative;
z-index: 2;
}
.ui.slider:not(.vertical) .inner {
height: @height;
}
.ui.slider .inner:hover {
cursor: @hoverPointer;
}
.ui.slider .inner .track {
position: absolute;
border-radius: @trackBorderRadius;
background-color: @trackColor;
}
.ui.slider:not(.vertical) .inner .track {
width: 100%;
height: @trackHeight;
top: @trackPositionTop;
left: 0;
}
.ui.slider .inner .track-fill {
position: absolute;
border-radius: @trackFillBorderRadius;
background-color: @trackFillColor;
}
.ui.slider:not(.vertical) .inner .track-fill {
height: @trackFillHeight;
top: @trackPositionTop;
left: 0;
}
.ui.slider .inner .thumb {
position: absolute;
left: 0;
top: 0;
height: @thumbHeight;
width: @thumbHeight;
background: @thumbBackground;
border-radius: @thumbBorderRadius;
box-shadow: @thumbShadow;
transition: @thumbTransition;
}
.ui.slider:not(.disabled) .inner .thumb:hover {
cursor: @thumbHoverPointer;
background: @thumbHoverBackground;
}
.ui.slider:not(.disabled):focus .inner .thumb {
background: @thumbHoverBackground;
}
/*******************************
States
*******************************/
& when (@variationSliderDisabled) {
/* --------------
Disabled
--------------- */
.ui.disabled.slider:not(.checkbox) {
opacity: @disabledOpactiy;
}
.ui.disabled.slider .inner:hover {
cursor: auto;
}
.ui.disabled.slider .inner .track-fill {
background: @disabledTrackFillColor;
}
}
& when (@variationSliderReversed) {
/* --------------
Reversed
--------------- */
.ui.reversed.slider .inner .track-fill {
left: auto;
right: 0;
}
.ui.reversed.slider:not(.vertical) .inner .thumb {
left: auto;
right: 0;
}
.ui.reversed.vertical.slider .inner .thumb {
left: @thumbVerticalSliderOffset;
}
& when (@variationSliderLabeled) {
.ui.labeled.reversed.slider > .labels .label {
transform: translate(-100%, -100%);
}
}
}
/*******************************
Variations
*******************************/
& when (@variationSliderVertical) {
/* --------------
Vertical
--------------- */
.ui.vertical.slider {
height: 100%;
width: @height;
padding: @verticalPadding;
}
.ui.vertical.slider .inner {
height: 100%;
}
.ui.vertical.slider .inner .track {
height: 100%;
width: @trackHeight;
left: @trackPositionTop;
top: 0;
}
.ui.vertical.slider .inner .track-fill {
width: @trackFillHeight;
left: @trackPositionTop;
top: 0;
}
& when (@variationSliderReversed) {
/* Vertical Reversed */
.ui.vertical.reversed.slider .inner .thumb {
top: auto;
bottom: 0;
}
.ui.vertical.reversed.slider .inner .track-fill {
top: auto;
bottom: 0;
}
}
}
& when (@variationSliderLabeled) {
/* --------------
Labeled
--------------- */
.ui.labeled.slider > .labels {
height: @labelHeight;
width: auto;
margin: 0;
padding: 0;
position: absolute;
top: 50%;
left: 0;
right: 0;
}
.ui.labeled.slider:not(.vertical) > .labels {
transform: translateY(-50%);
}
.ui.labeled.slider > .labels .label {
display: inline-flex;
padding: @labelPadding;
position: absolute;
transform: translate(-50%, -100%);
white-space: nowrap;
}
.ui.bottom.aligned.labeled.slider > .labels .label {
bottom: 0;
transform: translate(-50%, 100%);
}
& when (@variationSliderTicked) {
.ui.labeled.ticked.slider > .labels .label::after {
content: " ";
height: @labelHeight;
width: @labelWidth;
background: @labelColor;
position: absolute;
top: 100%;
left: 50%;
}
.ui.bottom.aligned.labeled.ticked.slider > .labels .label::after {
top: auto;
bottom: 100%;
}
.ui.labeled.ticked.slider > .labels .halftick.label::after {
height: (@labelHeight / 2);
}
}
& when (@variationSliderVertical) {
/* Vertical Labels */
.ui.labeled.vertical.slider > .labels {
width: @labelHeight;
height: auto;
left: 50%;
top: 0;
bottom: 0;
transform: translateX(-50%);
}
.ui.labeled.vertical.slider > .labels .label {
transform: translate(-100%, -50%);
}
.ui.labeled.vertical.slider > .labels .label::after {
width: @labelHeight;
height: @labelWidth;
left: 100%;
top: 50%;
}
.ui.labeled.vertical.slider > .labels .halftick.label::after {
width: (@labelHeight / 2);
height: @labelWidth;
}
& when (@variationSliderReversed) {
/* Vertical Reversed Labels */
.ui.labeled.vertical.reversed.slider > .labels .label {
transform: translate(-100%, 50%);
}
}
}
}
/* --------------
Hover
--------------- */
.ui.hover.slider .inner .thumb {
opacity: @hoverVarOpacity;
transition: @hoverOpacityTransition;
}
.ui.hover.slider:not(.disabled):hover .inner .thumb,
.ui.hover.slider:not(.disabled):focus .inner .thumb {
opacity: @hoverVarHoverOpacity;
}
& when (@variationSliderInverted) {
/* --------------
Inverted
--------------- */
.ui.inverted.slider .inner .track-fill {
background-color: @invertedTrackFillColor;
}
.ui.inverted.slider .inner .track {
background-color: @transparentWhite;
}
}
/* --------------
Colors
--------------- */
& when not (@variationSliderColors = false) {
each(@variationSliderColors, {
@color: @value;
@c: @colors[@@color][color];
@l: @colors[@@color][light];
@h: @colors[@@color][hover];
@lh: @colors[@@color][lightHover];
/* Standard */
.ui.@{color}.slider .inner .track-fill {
background-color: @c;
}
& when (@variationSliderInverted) {
.ui.@{color}.inverted.slider .inner .track-fill {
background-color: @l;
}
}
& when (@variationSliderBasic) {
/* Basic */
.ui.@{color}.slider.basic .inner .thumb {
background-color: @c;
}
.ui.@{color}.slider.basic .inner .thumb:hover,
.ui.@{color}.slider.basic:focus .inner .thumb {
background-color: @h;
}
& when (@variationSliderInverted) {
/* Basic Inverted */
.ui.@{color}.inverted.slider.basic .inner .thumb {
background-color: @l;
}
.ui.@{color}.inverted.slider.basic .inner .thumb:hover,
.ui.@{color}.inverted.slider.basic:focus .inner .thumb {
background-color: @lh;
}
}
}
});
}
& when (@variationSliderBasic) {
/* --------------
Basic
--------------- */
/* Standard */
.ui.slider.basic .inner .thumb {
background-color: @trackFillColor;
}
.ui.slider.basic .inner .thumb:hover,
.ui.slider.basic:focus .inner .thumb {
background-color: @trackFillColorFocus;
}
& when (@variationSliderInverted) {
/* --------------
Basic Inverted
--------------- */
/* Standard */
.ui.inverted.slider.basic .inner .thumb {
background-color: @invertedTrackFillColor;
}
.ui.inverted.slider.basic .inner .thumb:hover,
.ui.inverted.slider.basic:focus .inner .thumb {
background-color: @invertedTrackFillColorFocus;
}
}
}
/* --------------
Sizing
--------------- */
& when not (@variationSliderSizes = false) {
each(@variationSliderSizes, {
@h: @{value}Height;
@th: @{value}TrackHeight;
@tp: @{value}TrackPositionTop;
@lh: @{value}LabelHeight;
.ui.slider.@{value} .inner .thumb {
height: @@h;
width: @@h;
}
.ui.slider.@{value}:not(.vertical) .inner {
height: @@h;
}
.ui.slider.@{value}:not(.vertical) .inner .track,
.ui.slider.@{value}:not(.vertical) .inner .track-fill {
height: @@th;
top: @@tp;
}
& when (@variationSliderLabeled) {
.ui.@{value}.labeled.slider:not(.vertical) > .labels,
.ui.@{value}.labeled.slider:not(.vertical) > .labels .label::after {
height: @@lh;
}
.ui.@{value}.labeled.slider:not(.vertical) > .labels .halftick.label::after {
height: (@@lh / 2);
}
}
& when (@variationSliderVertical) {
/* Small Vertical */
.ui.slider.@{value}.vertical .inner {
width: @@h;
}
.ui.slider.@{value}.vertical .inner .track,
.ui.slider.@{value}.vertical .inner .track-fill {
width: @@th;
left: @@tp;
}
& when (@variationSliderLabeled) {
.ui.@{value}.labeled.vertical.slider> .labels,
.ui.@{value}.labeled.vertical.slider> .labels .label::after {
width: @@lh;
}
.ui.@{value}.labeled.vertical.slider> .labels .halftick.label::after {
width: (@@lh / 2);
}
}
}
});
}
// stylelint-disable no-invalid-position-at-import-rule
@import (multiple, optional) "../../overrides.less";