UNPKG

mdui

Version:

a CSS Framework based on material design

341 lines (284 loc) 7.14 kB
/** * ============================================================================= * ************ Slider 滑块 ************ * ============================================================================= */ @slider-light-color: #bdbdbd; // rgba(0, 0, 0, .26) @slider-light-color-focus: #9e9e9e; // rgba(0, 0, 0, .38) @slider-light-color-disabled: #bdbdbd; // rgba(0, 0, 0, .26) @slider-dark-color: #4c4c4c; // rgba(255, 255, 255, .3) @slider-dark-color-focus: #4c4c4c; // rgba(255, 255, 255, .3) @slider-dark-color-disabled: #4c4c4c; // rgba(255, 255, 255, .3) .mdui-slider { position: relative; display: block; width: 100%; height: 36px; input[type="range"] { position: absolute; top: 50%; left: 0; z-index: 2; width: 100%; height: 20px; margin-top: -10px; cursor: pointer; opacity: 0; appearance: none; } } .mdui-slider-track, .mdui-slider-fill { position: absolute; top: 50%; box-sizing: border-box; height: 2px; margin-top: -1px; &::before { display: block; width: 100%; height: 100%; content: ' '; } } /* 轨道 */ .mdui-slider-track { right: 0; &::before { background-color: @slider-light-color; transition: background-color .3s @animation-curve-default; } } /* 已滑动部分 */ .mdui-slider-fill { left: 0; &::before { background-color: @color-default-a200; } } /* 滑块 */ .mdui-slider-thumb { position: absolute; top: 50%; box-sizing: border-box; width: 12px; height: 12px; margin-top: -6px; background-color: @color-default-a200; border: 2px solid @color-default-a200; border-radius: 50%; transform: translate(-50%); transition: background .45s @animation-curve-default, border-color .45s @animation-curve-default, transform .2s @animation-curve-default, border-radius .2s @animation-curve-default; will-change: background, border-color, transform, border-radius; } /** * ============================================================================= * ************ Slider 强调色 ************ * ============================================================================= */ & { .loop-accent-theme(@counter-color) when (@counter-color > 0) { .loop-accent-theme((@counter-color - 1)); @colorName: extract(@globalAccentColors, @counter-color); @color: 'color-@{colorName}-a200'; .mdui-theme-accent-@{colorName} when not (@colorName = null) { .mdui-slider-fill { &::before { background-color: @@color; } } .mdui-slider-thumb { background-color: @@color; border: 2px solid @@color; } } } .loop-accent-theme(length(@globalAccentColors)); } /** * ============================================================================= * ============ Slider 的不同状态 ============ * ============================================================================= */ /* 鼠标按下状态 */ .mdui-slider-focus { .mdui-slider-track { &::before { background-color: @slider-light-color-focus; } } .mdui-slider-thumb { transform: translate(-50%) scale(1.6); } } /* 滑块值为 0 */ .mdui-slider-zero { .mdui-slider-thumb { background-color: #fff; border-color: @slider-light-color; } } /* 滑块值为 0,且鼠标按下 */ .mdui-slider-zero.mdui-slider-focus { .mdui-slider-thumb { border-color: @slider-light-color-focus; } } /* 禁用状态 */ .mdui-slider-disabled { input[type="range"] { cursor: default; } .mdui-slider-track { &::before { background-color: @slider-light-color-disabled; } } .mdui-slider-fill { &::before { background-color: @slider-light-color-disabled; } } .mdui-slider-thumb { background-color: @slider-light-color-disabled; border-color: transparent !important; transform: translate(-50%) scale(.72); } } /** * ============================================================================= * ============ 间续型滑块 ============ * ============================================================================= */ .mdui-slider-discrete { .mdui-slider-thumb { width: 30px; height: 30px; margin-top: -15px; margin-left: -15px; border: none; transform: rotate(-45deg) scale(.4); // 间续型滑块的值显示 span { position: absolute; top: 9px; left: -1px; width: 100%; color: #fff; font-size: 12px; text-align: center; transform: rotate(45deg); opacity: 0; transition: opacity .25s @animation-curve-default; } } // 鼠标按下状态 &.mdui-slider-focus { .mdui-slider-thumb { border-radius: 15px 15px 15px 0; transform: rotate(-45deg) scale(1) translate(22px, -22px); span { opacity: 1; } } } // 滑块值为 0 &.mdui-slider-zero { .mdui-slider-thumb { background-color: #323232; } } // 滑块值为 0,且鼠标按下 &.mdui-slider-zero.mdui-slider-focus { .mdui-slider-thumb { background-color: @slider-light-color; } } // 禁用状态 &.mdui-slider-disabled { .mdui-slider-thumb { transform: rotate(-45deg) scale(.288); } } // 滑块值为 0,且禁用 &.mdui-slider-zero.mdui-slider-disabled { .mdui-slider-thumb { background-color: @slider-light-color; } } } /** * ============================================================================= * ************ Slider dark ************ * ============================================================================= */ .layout-theme({ // 轨道 .mdui-slider-track { &::before { background-color: @slider-dark-color; } } // 鼠标按下状态 .mdui-slider-focus { .mdui-slider-track { &::before { background-color: @slider-dark-color-focus; } } } // 滑块值为 0 .mdui-slider-zero { .mdui-slider-thumb { background-color: @layout-dark-color-3; border-color: @slider-dark-color; } } // 滑块值为 0,且鼠标按下 .mdui-slider-zero.mdui-slider-focus { .mdui-slider-thumb { border-color: @slider-dark-color-focus; } } // 禁用状态 .mdui-slider-disabled { .mdui-slider-track { &::before { background-color: @slider-dark-color-disabled; } } .mdui-slider-fill { &::before { background-color: @slider-dark-color-disabled; } } .mdui-slider-thumb { background-color: @slider-dark-color-disabled; } } // 间续型滑块 .mdui-slider-discrete { // 滑块值为 0 &.mdui-slider-zero { .mdui-slider-thumb { background-color: #fefefe; } } // 滑块值为 0,且鼠标按下 &.mdui-slider-zero.mdui-slider-focus { .mdui-slider-thumb { background-color: #5c5c5c; } } // 滑块值为 0,且禁用 &.mdui-slider-zero.mdui-slider-disabled { .mdui-slider-thumb { background-color: @slider-dark-color-disabled; } } } });