UNPKG

lu2

Version:

Simple and flexible UI component library based on native HTML and JavaScript

1,987 lines (1,768 loc) 69 kB
@charset "UTF-8"; /** * * @variables.css * @author zhangxinxu * @edited yangfan * @create 20-03-17 **/ :root { /* 基础颜色变量 */ --ui-blue: #2a80eb; --ui-dark-blue: #0057c3; --ui-dark: #4c5161; --ui-gray: #a2a9b6; --ui-dark-gray: #b6bbc6; --ui-light: #f7f9fa; --ui-white: #ffffff; --ui-green: #1cad70; --ui-orange: #f59b00; --ui-red: #eb4646; /* hover的颜色 */ --ui-list-hover: #f0f7ff; /* selected的颜色 */ --ui-list-selected: #e0f0ff; /* disabled禁用色 */ --ui-disabled: #ccd0d7; /* 边框颜色 */ --ui-border: #d0d0d5; /* 深一点的边框颜色 */ --ui-dark-border: #ababaf; /* 浅一点的边框颜色 */ --ui-light-border: #ededef; /* 透明度 */ --ui-opacity: .4; /* 圆角变量 */ --ui-radius: 4px; /* 基础字号 */ --ui-font: 14px; /* 动画时间 */ --ui-animate-time: .2s; /* 基本尺寸单元 */ --ui-line-height: 20px; --ui-component-height: 40px; } /** * * @Button.css * @author zhangxinxu * @create 15-06-12 * @edited 17-06-13 17-11-07 use png+spin for loading 19-07-09 IE9+, no external links 20-04-03 version edge * @editor lennonover */ /* button基础变量 */ :root { --ui-button-height: var(--ui-component-height, 40px); --ui-button-line-height: var(--ui-line-height, 20px); --ui-button-color: var(--ui-dark, #4c5161); --ui-button-loading-img: url("data:image/svg+xml,%3Csvg viewBox='0 0 1024 1024' xmlns='http://www.w3.org/2000/svg' width='200' height='200'%3E%3Cpath d='M512 1024q-104 0-199-40-92-39-163-110T40 711Q0 616 0 512q0-15 10.5-25.5T36 476t25.5 10.5T72 512q0 90 35 171 33 79 94 140t140 95q81 34 171 34t171-35q79-33 140-94t95-140q34-81 34-171t-35-171q-33-79-94-140t-140-95q-81-34-171-34-15 0-25.5-10.5T476 36t10.5-25.5T512 0q104 0 199 40 92 39 163 110t110 163q40 95 40 199t-40 199q-39 92-110 163T711 984q-95 40-199 40z' fill='%232a80eb'/%3E%3C/svg%3E") no-repeat; } .ui-button, [is="ui-button"] { display: inline-flex; line-height: var(--ui-button-line-height); font-size: var(--ui-font, 14px); text-align: center; justify-content: center; align-items: center; color: var(--ui-white, #fff); border-radius: var(--ui-radius, 4px); border: 1px solid var(--ui-button-color); padding: calc((var(--ui-button-height) - var(--ui-button-line-height) - 2px) / 2) calc(var(--ui-button-height) / 2.5); min-width: calc(var(--ui-button-height) * 2); background: var(--ui-button-color) no-repeat center; text-decoration: none; box-sizing: border-box; transition: border-color var(--ui-animate-time, .2s), box-shadow var(--ui-animate-time, .2s), opacity var(--ui-animate-time, .2s); fill: currentColor; font-family: inherit; cursor: pointer; overflow: visible; } @media (prefers-reduced-motion: reduce) { .ui-button, [is="ui-button"] { transition: none; } } .ui-button[width="100%"], [is="ui-button"][width="100%"] { width: 100%; } div.ui-button, div[is="ui-button"] { display: block; } [type="submit"]:not([class]):not([is]) { position: absolute; clip: rect(0 0 0 0); } /* Chrome/Firefox的outline会由Keyboard.js帮忙呈现 */ @supports (-webkit-mask: none) { button, [type="button"], [type="submit"], [tabindex] { outline: 0 none; } } ::-moz-focus-inner { border: 0; } .ui-button:hover, [is="ui-button"]:hover { color: var(--ui-white, #fff); text-decoration: none; } :is(.ui-button, [is="ui-button"]):where(:not(.disabled, .loading, :disabled)):hover { filter: brightness(var(--ui-brightness, 1.1)); } :is(.ui-button, [is="ui-button"]):where(:not(.disabled, .loading, :disabled)):active { box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), inset 0 0 0 100px rgba(0, 0, 0, 0.1); } :is(.ui-button, [is="ui-button"]):is([type="normal"], [data-type="normal"]) { --ui-button-color: var(--ui-white, #fff); color: var(--ui-dark, #4c5161); border-color: var(--ui-border, #d0d0d5); --ui-brightness: 0.96; } /* primary button */ :is(.ui-button, [is="ui-button"]):is([data-type="primary"], [type="primary"], [data-type="remind"], [type="remind"]) { --ui-button-color: var(--ui-blue, #2a80eb); } /* success button */ :is(.ui-button, [is="ui-button"]):is([data-type="success"], [type="success"]) { --ui-button-color: var(--ui-green, #1cad70); } /* warning button */ :is(.ui-button, [is="ui-button"]):is([data-type^="warn"], [type^="warn"]) { --ui-button-color: var(--ui-orange, #f59b00); } /* danger button */ :is(.ui-button, [is="ui-button"]):is([data-type="danger"], [type="danger"], [data-type="error"], [type="error"]) { --ui-button-color: var(--ui-red, #eb4646); } /* hidden button */ :is(.ui-button, [is="ui-button"]):is([type="hidden"], [data-type="hidden"]) { display: none; } /* disabled status */ :is(.ui-button, [is="ui-button"]):is(.disabled, :disabled) { opacity: var(--ui-opacity, .4); cursor: default; } /* loading status */ .ui-button.loading, [is="ui-button"].loading { color: transparent !important; pointer-events: none; position: relative; cursor: default; } /* input按钮,三个点 */ input.ui-button.loading, input[is="ui-button"].loading { --ui-loading-color: var(--ui-white, #fff); --ui-loading-radial: radial-gradient(3px circle, var(--ui-loading-color), var(--ui-loading-color) 2px, transparent 3px); background-image: var(--ui-loading-radial), var(--ui-loading-radial), var(--ui-loading-radial); background-position-x: calc(50% - 10px), 50%, calc(50% + 10px); background-position-y: 50%; background-size: 5px 5px; animation: bubbling 1s infinite; } input[data-type="normal"].loading { --ui-loading-color: var(--ui-blue, #2a80eb); } /* button 按钮 */ :is(.ui-button, [is="ui-button"]).loading::before { content: ""; position: absolute; left: 0; top: 0; right: 0; bottom: 0; width: calc(var(--ui-button-height) / 2); height: calc(var(--ui-button-height) / 2); background-color: var(--ui-white, #fff); -webkit-mask: var(--ui-button-loading-img); mask: var(--ui-button-loading-img); -webkit-mask-size: 100% 100%; mask-size: 100% 100%; margin: auto; animation: spin 1s linear infinite; } /* 有底色按钮 */ :is([data-type="normal"], [type="normal"]).loading::before { background-color: var(--ui-blue, #2a80eb); } @keyframes bubbling { 0% { background-position-y: 50%, 50%, 50%; } 15% { background-position-y: calc(50% - 3px), 50%, 50%; } 30% { background-position-y: calc(50% - 1px), calc(50% - 3px), 50%; } 45% { background-position-y: 50%, calc(50% - 1px), calc(50% - 3px); } 60% { background-position-y: 50%, 50%, calc(50% - 1px); } 75% { background-position-y: 50%, 50%, 50%; } } @keyframes spin { from { transform: rotate(0); } to { transform: rotate(360deg); } } /* error */ .ui-button[is-error], [is="ui-button"][is-error] { border-color: var(--ui-red, #eb4646) !important; } /** * * @Checkbox.css * @author zhangxinxu * @create 15-06-18 * @edit 17-06-14 focusable * @editor shanyerong * @edit 20-04-30 description here * @edit 24-08-21 indeterminate attr support and use new css selector **/ /* checkbox基础变量 */ :root { --ui-checkbox-width: 20px; --ui-checkbox-height: 20px; --ui-checkbox-icon: url("data:image/svg+xml,%3Csvg viewBox='0 0 1024 1024' xmlns='http://www.w3.org/2000/svg' width='200' height='200'%3E%3Cpath d='M920.185 224.838c-33.782-33.935-88.619-33.935-122.464 0L409.955 614.564 226.231 429.952c-33.782-33.935-88.68-33.935-122.461 0-33.784 33.997-33.784 89.108 0 123.044l244.925 246.118c33.782 33.998 88.68 33.998 122.463 0l449.028-451.201c33.843-33.967 33.843-89.048-.001-123.075z' fill='%23fff'/%3E%3C/svg%3E"); } [is="ui-checkbox"] { -webkit-appearance: none; width: var(--ui-checkbox-width, 20px); height: var(--ui-checkbox-height, 20px); display: inline-flex; border: solid 1px rgba(0, 0, 0, 0); outline: none; border-radius: var(--ui-radius, 4px); box-sizing: border-box; box-shadow: inset 0 1px, inset 1px 0, inset -1px 0, inset 0 -1px; background-color: var(--ui-white, #ffffff); background-clip: content-box; color: var(--ui-border, #d0d0d5); transition: color var(--ui-animate-time, .2s), background-color var(--ui-animate-time, .2s); -webkit-user-select: none; -ms-user-select: none; user-select: none; vertical-align: -.5ex; } [is="ui-checkbox"]::after { content: ""; width: 100%; height: 100%; background: var(--ui-checkbox-icon) no-repeat center; background-size: var(--ui-checkbox-size-x, 12px) var(--ui-checkbox-size-y, 12px); visibility: hidden; opacity: 0; transition: opacity var(--ui-animate-time, .2s); } [is="ui-checkbox"]:not(:disabled):hover, [is="ui-checkbox"]:disabled { color: var(--ui-dark-border, #ababaf); } [is="ui-checkbox"]:focus { color: var(--ui-blue, #2a80eb); } [is="ui-checkbox"]:focus:hover { color: var(--ui-dark-blue, #0057c3); } [is="ui-checkbox"]:checked { color: var(--ui-blue, #2a80eb); background-color: var(--ui-blue, #2a80eb); } [is="ui-checkbox"]:not(:disabled):checked:is(:focus, :hover) { color: var(--ui-dark-blue, #0057c3); background-color: var(--ui-dark-blue, #0057c3); } [is="ui-checkbox"]:checked::after { opacity: 1; visibility: visible; } [is="ui-checkbox"]:is(:indeterminate, [indeterminate]:not(:checked))::after { opacity: 1; visibility: visible; color: var(--ui-blue, #2a80eb); background-image: linear-gradient(currentColor, currentColor); background-size: var(--ui-checkbox-indeterminate-size-x, 8px) var(--ui-checkbox-indeterminate-size-y, 8px); border-radius: var(--ui-checkbox-indeterminate-radius, 0); } [is="ui-checkbox"]:not(:disabled):where(:indeterminate, [indeterminate]:not(:checked)):is(:focus, :hover) { color: var(--ui-dark-blue, #0057c3); } [is="ui-checkbox"]:disabled { opacity: var(--ui-opacity, .4); } /* error */ [is="ui-checkbox"][is-error] { color: var(--ui-red, #eb4646) !important; } @media (prefers-reduced-motion: reduce) { [is="ui-checkbox"], [is="ui-checkbox"]::after { transition: none; } } /** * * @Color.css * @author xinxuzhang * @create 16-06-03 * @edited 20-07-16 @Gwokhov **/ [is="ui-color"] { width: 40px; height: 40px; padding: 0; vertical-align: middle; border: 0; border-radius: var(--ui-radius, 4px); background-color: rgba(25, 28, 34, 0.2); outline: none; cursor: pointer; } [is="ui-color"]::-webkit-color-swatch-wrapper { padding: 0; margin: 8px auto; width: 24px; height: 24px; } [is="ui-color"]::-webkit-color-swatch { border: 1px solid var(--ui-light, #f7f9fa); border-radius: calc(var(--ui-radius, 4px) - 1px); } [is="ui-color"]:disabled::-webkit-color-swatch { background-image: linear-gradient(to right bottom, transparent calc(50% - 1px), red 50%, transparent calc(50% + 1px)), linear-gradient(to top right, transparent calc(50% - 1px), red 50%, transparent calc(50% + 1px)); } /* for firefox */ [is="ui-color"], _::-moz-color-swatch { padding: 8px; } [is="ui-color"]::-moz-color-swatch { border: 1px solid var(--ui-light, #f7f9fa); } .ui-color-container { display: none; position: absolute; width: 241px; padding: 10px 12px; border-radius: var(--ui-radius, 4px); background-color: var(--ui-light, #f7f9fa); box-shadow: 0 2px 5px rgba(0, 0, 0, 0.25); font-size: var(--ui-font, 14px); animation: fadeIn var(--ui-animate-time, .2s); touch-action: none; --safe-area: 3px; z-index: 21; border: none; overflow: visible; } .ui-color-switch { position: absolute; top: 12px; right: 12px; color: var(--ui-blue, #2a80eb); border: 1px solid transparent; height: 20px; line-height: 20px; padding: 2px 5px; border-radius: calc(var(--ui-radius, 4px) - 1px); background: none; font-family: inherit; transition: border-color var(--ui-animate-time, .2s), background-color var(--ui-animate-time, .2s); box-sizing: content-box; } .ui-color-switch:hover { background-color: var(--ui-white, #ffffff); border-color: #d0d0d5; background-color: var(--ui-white, #ffffff); } .ui-color-switch:active { line-height: normal; } .ui-color-switch[data-mode]::before { content: ''; display: inline-block; width: 14px; height: 14px; vertical-align: -2px; margin-right: 4px; pointer-events: none; } .ui-color-switch[data-mode="basic"]::before { background: conic-gradient(red 120deg, blue 120deg 240deg, lime 240deg); transform: rotate(-60deg); border-radius: 50%; } .ui-color-switch[data-mode="more"]::before { background: radial-gradient(closest-side, white, transparent), conic-gradient(red, magenta, blue, aqua, lime, yellow, red); border-radius: 50%; } [type="color-opacity"] { background: linear-gradient(var(--ui-color-opacity, #000000), var(--ui-color-opacity, #000000)), conic-gradient(black 45deg, white 45deg, white 225deg, black 225deg); box-sizing: border-box; background-clip: content-box; border: 8px solid rgba(25, 28, 34, 0.2); padding: 1px; font-size: 0; } .ui-color-current { padding-bottom: 20px; } .ui-color-current-square, .ui-color-current-square-opacity { display: inline-block; width: 20px; height: 20px; margin-right: 5px; border-radius: calc(var(--ui-radius, 4px) - 1px); box-shadow: inset 0 1px rgba(0, 0, 0, 0.25), inset 0 -1px rgba(0, 0, 0, 0.25), inset 1px 0 rgba(0, 0, 0, 0.25), inset -1px 0 rgba(0, 0, 0, 0.25); background-color: currentColor; vertical-align: middle; } .ui-color-current-square-opacity { background: linear-gradient(var(--ui-color-opacity, #000000),var(--ui-color-opacity, #000000)), conic-gradient(black 45deg, white 45deg, white 225deg, black 225deg); } .ui-color-current-input { width: 72px; border: 1px solid var(--ui-border, #d0d0d5); background-color: var(--ui-white, #ffffff); height: 20px; line-height: 20px; padding: 2px 5px; border-radius: calc(var(--ui-radius, 4px) - 1px); margin-left: 5px; font-size: 13px; vertical-align: middle; box-sizing: content-box; text-transform: uppercase; color: inherit; } .ui-color-body { min-height: 100px; } .ui-color-basic { overflow: hidden; } .ui-color-lump-group { width: 72px; float: left; } .ui-color-lump { display: block; width: 11px; height: 11px; margin: 0 1px 1px 0; box-sizing: border-box; background-color: currentColor; } .ui-color-lump:hover, .ui-color-basic a.active, .ui-color-lump-preset:hover { border: 1px solid var(--ui-white, #ffffff); } .ui-color-lump-preset { display: block; height: 35px; margin: 0 1px 1px 0; box-sizing: border-box; background-color: currentColor; border: 1px solid transparent; } .ui-color-basic-l { width: 12px; float: left; overflow: hidden; } .ui-color-basic-r { margin-left: 25px; overflow: hidden; display: flex; flex-direction: column; height: 150px; flex-wrap: wrap; } .ui-color-basic-r .ui-color-lump { float: left; } .ui-color-more { display: none; height: 150px; } .ui-color-more .ui-color-gradient { width: 100%; height: 100%; } .ui-color-more-l { width: 180px; height: inherit; float: left; position: relative; } .ui-color-more-l .ui-color-gradient { background: linear-gradient(90deg, #ff0000 0%, #ffff00 16.66%, #00ff00 33.33%, #00ffff 50%, #0000ff 66.66%, #ff00ff 83.33%, #ff0000 100%); } .ui-color-cover-white { background-color: rgba(0, 0, 0, 0); background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0), #808080); cursor: crosshair; } .ui-color-circle { position: absolute; left: 0; top: 0; width: 16px; height: 16px; border: 3px solid var(--ui-white, #ffffff); border-radius: 20px; background-color: #f00; background-clip: content-box; transform: translate(-11px, -11px); pointer-events: none; } .ui-color-more-r { height: inherit; float: right; padding-right: 8px; position: relative; } .ui-color-more-fill { display: block; width: 16px; height: 100%; background-color: #f00; } .ui-color-cover-white, .ui-color-more-cover { position: absolute; left: 0; top: 0; width: inherit; height: 150px; } .ui-color-more-cover { background-color: rgba(0, 0, 0, 0.01); -webkit-tap-highlight-color: transparent; } .ui-color-more-arrow { position: absolute; right: 0; top: 100%; } .ui-color-more-arrow::before { content: ""; position: absolute; right: 0; top: -5px; width: 0; height: 0; border-width: 5px 6px; border-style: solid; border-color: transparent; border-right-color: #36383f; overflow: hidden; } .ui-color-opacity { margin-top: 12px; text-align: center; } .ui-color-opacity-range { width: 180px; } .ui-color-footer { margin-top: 15px; padding-bottom: 5px; text-align: right; } .ui-color-button-cancel, .ui-color-button-ensure { display: inline-block; width: 80px; line-height: 20px; padding-top: 8px; padding-bottom: 8px; margin-left: 15px; border-radius: var(--ui-radius, 4px); text-align: center; font-size: var(--ui-font, 14px); font-family: inherit; transition: box-shadow var(--ui-animate-time, .2s), border-color var(--ui-animate-time, .2s); cursor: pointer; } .ui-color-button-cancel { border: 1px solid var(--ui-border, #d0d0d5); background-color: var(--ui-white, #ffffff); color: var(--ui-dark, #4c5161); } .ui-color-button-cancel:hover { border-color: var(--ui-dark-border, #ababaf); color: var(--ui-dark, #4c5161); } .ui-color-button-ensure { border: 1px solid var(--ui-blue, #2a80eb); background-color: var(--ui-blue, #2a80eb); color: var(--ui-white, #ffffff); } .ui-color-button-ensure:hover { color: var(--ui-white, #ffffff); } .ui-color-button-cancel:hover, .ui-color-button-ensure:hover { box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.01), inset 0 0 0 100px rgba(0, 0, 0, 0.05); } .ui-color-button-cancel:active, .ui-color-button-ensure:active { box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), inset 0 0 0 100px rgba(0, 0, 0, 0.1); } @media (prefers-reduced-motion: reduce) { .ui-color-container { animation: none; } .ui-color-switch, .ui-color-button-cancel, .ui-color-button-ensure { transition: none; } } /** * * @Date.css * @author xinxuzhang * @create 15-07-03 * **/ :root { --ui-datetime-arrow: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-205 297 200 200'%3E%3Cpath d='M-59.3 365.9c-5.1-5.2-13.4-5.2-18.5 0l-27.7 28.3-27.7-28.3c-5.1-5.2-13.4-5.2-18.5 0s-5.1 13.6 0 18.9l46.2 47.1 46.2-47.1c5.1-5.2 5.1-13.6 0-18.9z' fill='%232a80eb'/%3E%3C/svg%3E"); --ui-datetime-arrow-disabled: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-205 297 200 200'%3E%3Cpath d='M-59.3 365.9c-5.1-5.2-13.4-5.2-18.5 0l-27.7 28.3-27.7-28.3c-5.1-5.2-13.4-5.2-18.5 0s-5.1 13.6 0 18.9l46.2 47.1 46.2-47.1c5.1-5.2 5.1-13.6 0-18.9z' fill='%232a80eb' fill-opacity='0.4' /%3E%3C/svg%3E"); } [is="ui-datetime"]::-webkit-clear-button, [is="ui-datetime"]::-webkit-inner-spin-button, [is="ui-datetime"]::-webkit-calendar-picker-indicator { display: none; } [type="date"][is="ui-datetime"]::-webkit-datetime-edit-text { color: transparent; background: url("data:image/svg+xml,%3Csvg width='20' height='16' xmlns='http://www.w3.org/2000/svg'%3E%3Ctext x='50%25' y='50%25' font-size='14' fill='%234c5161' font-family='system-ui, sans-serif' text-anchor='middle' dominant-baseline='middle'%3E-%3C/text%3E%3C/svg%3E") no-repeat center; } [is="ui-datetime"]::-webkit-datetime-edit-text, [is="ui-datetime"]::-webkit-datetime-edit-year-field, [is="ui-datetime"]::-webkit-datetime-edit-month-field, [is="ui-datetime"]::-webkit-datetime-edit-day-field, [is="ui-datetime"]::-webkit-datetime-edit-hour-field, [is="ui-datetime"]::-webkit-datetime-edit-minute-field, [is="ui-datetime"]::-webkit-datetime-edit-ampm-field { background: none; color: var(--ui-dark, #4c5161); } [is="ui-datetime"]:disabled::-webkit-datetime-edit-text, [is="ui-datetime"]:disabled::-webkit-datetime-edit-year-field, [is="ui-datetime"]:disabled::-webkit-datetime-edit-month-field, [is="ui-datetime"]:disabled::-webkit-datetime-edit-day-field, [is="ui-datetime"]:disabled::-webkit-datetime-edit-hour-field, [is="ui-datetime"]:disabled::-webkit-datetime-edit-minute-field, [is="ui-datetime"]:disabled::-webkit-datetime-edit-ampm-field { opacity: var(--ui-opacity, .4); } [is="ui-datetime"]:valid::-webkit-datetime-edit { visibility: hidden; } [is="ui-datetime"] { font-family: system-ui; height: var(--ui-input-height); line-height: var(--ui-input-line-height); padding: calc((var(--ui-input-height) - var(--ui-input-line-height) - 2px) / 2) 8px; padding-right: 20px; /* 下拉图标 */ border: 1px solid var(--ui-border, #d0d0d5); border-radius: var(--ui-radius, 4px); box-sizing: border-box; font-size: var(--ui-font, 14px); outline: none; color: var(--ui-dark, #4c5161); transition: border-color var(--ui-animate-time, .2s), background-color var(--ui-animate-time, .2s); -webkit-tap-highlight-color: transparent; -webkit-appearance: none; appearance: none; font-feature-settings: 'tnum'; background: var(--ui-white, #fff) var(--ui-datetime-arrow) no-repeat right 3px center; background-size: 20px 20px; user-select: none; cursor: pointer; } [is="ui-datetime"]:read-write { /* avoid firefox invalid style */ box-shadow: none; color: transparent; } :disabled[is="ui-datetime"] { color: var(--ui-gray, #a2a9b6); background: var(--ui-light, #f7f9fa) var(--ui-datetime-arrow-disabled) no-repeat right 3px center; background-size: 20px 20px; cursor: default; } :active[is="ui-datetime"] { background-color: var(--ui-light, #f7f9fa); } [is-error][is="ui-datetime"] { border-color: var(--ui-red, #eb4646); } [is="ui-datetime"]:not(:disabled):hover { border-color: var(--ui-dark-border, #ababaf); } [is="ui-datetime"]:not(:disabled):active { background-color: var(--ui-light, #f7f9fa); } [is="ui-datetime"]:not([type]) { width: 125px; } [is="ui-datetime"][type="date"] { min-width: 125px; } [is="ui-datetime"][type="year"], [is="ui-datetime"][type="time"], [is="ui-datetime"][type="hour"], [is="ui-datetime"][type="minute"] { width: 85px; } [is="ui-datetime"][type="month"] { width: 125px; } [is="ui-datetime"][type="date-range"] { width: 216px; } [is="ui-datetime"][type="month-range"] { width: 170px; } [is="ui-datetime"][type="week-range"] { width: 200px; } [is="ui-datetime"][type="time"] { width: auto; } /* for Safari */ @supports not (text-align-last: auto) { [is="ui-datetime"][type="time"] { max-width: 125px; } } @supports not (-moz-appearance: none) { [is="ui-datetime"][type="time"] { padding-right: 33px; } } /* 选择浮层 */ .ui-date-container { display: inline-block; background-color: var(--ui-white, #ffffff); box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25); border: 1px solid var(--ui-border, #d0d0d5); border-radius: var(--ui-radius, 4px); font-size: var(--ui-font, 14px); font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; animation: fadeIn var(--ui-animate-time, .2s); --safe-area: 3px; -webkit-user-select: none; user-select: none; padding: 0; } body > .ui-date-container { display: none; position: absolute; z-index: 9; } .ui-date-container a { text-decoration: none; transition: background-color var(--ui-animate-time, .2s), color var(--ui-animate-time, .2s); } .ui-date-head { padding: 5px 0 0; overflow: hidden; } .ui-date-half { width: 50%; float: left; } .ui-date-prev, .ui-date-next { width: 35px; height: 30px; text-align: center; color: #b6bbc6; } a.ui-date-prev:hover { color: var(--ui-blue, #2a80eb); } span.ui-date-prev { color: var(--ui-diabled, #ccd0d7); } a.ui-date-next:hover { color: var(--ui-blue, #2a80eb); } span.ui-date-next { color: var(--ui-diabled, #ccd0d7); } .ui-date-prev::before, .ui-date-next::before { content: ''; display: block; width: 20px; height: 20px; background-color: currentColor; margin: 5px auto 0; --mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='200' height='200' viewBox='0 0 200 200'%3E%3Cpath d='M85.876 100.5l49.537-50.526c4.089-4.215 4.089-11.049 0-15.262-4.089-4.218-10.719-4.218-14.808 0L63.586 92.868c-4.089 4.215-4.089 11.049 0 15.264l57.018 58.156c4.089 4.215 10.719 4.215 14.808 0s4.089-11.049 0-15.262L85.876 100.5z'/%3E%3C/svg%3E"); -webkit-mask: var(--mask-image); mask: var(--mask-image); -webkit-mask-size: 100% 100%; mask-size: 100% 100%; } .ui-date-next::before { transform: rotate(180deg); } .ui-date-prev { float: left; } .ui-date-next { float: right; } .ui-date-switch { display: block; line-height: 30px; margin: 0 35px; border-radius: calc(var(--ui-radius, 4px) - 2px); color: var(--ui-dark, #4c5161); text-align: center; } a.ui-date-switch:hover, a.ui-date-item:not(.selected):hover { color: var(--ui-dark, #4c5161); background-color: #f0f0f2; } .ui-minute-x, .ui-hour-x, .ui-year-x, .ui-month-x, .ui-date-x { width: 225px; } .ui-week-x { width: 245px; } .ui-minute-x[data-step="1"] { width: 328px; } .ui-minute-x[data-step="2"] { width: 276px; } .ui-datetime-x { display: flex; } .ui-minute-body { padding-left: 12px; padding-bottom: 12px; } .ui-hour-body { padding: 8px 0 12px 12px; } .ui-year-body, .ui-month-body, .ui-date-body, .ui-week-body { padding-left: 5px; padding-right: 2px; padding-bottom: 5px; } .ui-week-body { /* grid 7列 */ display: grid; grid-template-columns: repeat(7, 1fr); line-height: 2; } .ui-week-time { text-align: center; padding-block: 5px; color: var(--ui-gray, #a2a9b6); font-size: 13px; background-color: var(--ui-light, #f7f9fa); } .ui-date-item { display: inline-block; border-radius: calc(var(--ui-radius, 4px) - 2px); text-align: center; font-size: 13px; color: var(--ui-dark, #4c5161); } span.ui-date-item { opacity: var(--ui-opacity, .4); } /* 非当前月份但可点击的日期 */ a.ui-date-item.ui-date-outside { opacity: var(--ui-opacity, .4); cursor: pointer; } a.ui-date-item.ui-date-outside:not(.selected):hover { background-color: #f0f0f2; color: var(--ui-dark, #4c5161); } .ui-date-item.col0, .ui-date-item.col6, .ui-day-item.col0, .ui-day-item.col6 { color: var(--ui-red, #eb4646); } .ui-date-tr:last-child .ui-date-item:empty { display: none; } .ui-minute-body .ui-date-item, .ui-hour-body .ui-date-item { width: 45px; line-height: 26px; margin-top: 4px; margin-right: 7px; } .ui-year-body .ui-date-item, .ui-month-body .ui-date-item { width: 45px; line-height: 54px; margin-top: 5px; margin-left: 7px; } .ui-date-now { display: block; line-height: 30px; margin: 0 5px 5px; text-align: center; } .ui-day-x { padding: 0 2px 0 5px; text-align: center; } .ui-day-item, .ui-date-body .ui-date-item { display: inline-block; width: 28px; line-height: 28px; margin-right: 3px; margin-top: 1px; vertical-align: top; } .ui-range-x { width: 458px; } .ui-range-body { overflow: hidden; } .ui-range-body .ui-date-half + .ui-date-half { border-left: 1px solid #f0f0f2; margin-left: -1px; } .ui-range-week-body :where(.ui-date-half:first-child span[data-value="周"], .ui-date-half:last-child span[data-value="第"]) { display: none; } .ui-range-footer { padding: 5px 15px 15px; text-align: right; } .ui-range-footer > .ui-button { margin-left: 10px; } .ui-date-container .selected { background-color: var(--ui-blue, #2a80eb); color: var(--ui-white, #ffffff); cursor: default; } .ui-date-container span.selected { opacity: var(--ui-opacity, .4); } .ui-range-body .ui-date-half { width: 229px; } .ui-range-body .ui-date-body { padding-left: 6px; padding-right: 0; } .ui-range-body .ui-month-body { margin-bottom: 15px; } .ui-range-date-body .selected { width: 26px; line-height: 26px; border: 1px solid var(--ui-blue, #2a80eb); border-right-width: 4px; margin-right: 0; border-radius: 0; } .ui-range-body .selected.col0 { margin-left: -6px; border-left-width: 7px; } .ui-range-body .selected.col6 { border-right-width: 10px; } .ui-range-body .selected.ui-date-first:not(.col0) { border-top-left-radius: 2px; border-bottom-left-radius: 2px; } .ui-range-body .selected.ui-date-last:not(.col6) { border-top-right-radius: 2px; border-bottom-right-radius: 2px; } .ui-range-body .ui-date-begin, .ui-range-body .ui-date-end { border-radius: 0; width: 26px; background-color: var(--ui-white, #ffffff); color: var(--ui-dark, #4c5161); } .ui-range-body .ui-date-begin { border-right-width: 4px; border-left-width: 1px; border-top-left-radius: 2px; border-bottom-left-radius: 2px; } .ui-range-body .ui-date-end { margin-right: 3px; border-right-width: 1px; border-top-right-radius: 2px; border-bottom-right-radius: 2px; } .ui-range-body .ui-date-begin:hover, .ui-range-body .ui-date-end:hover { background-color: var(--ui-white, #ffffff); color: var(--ui-dark, #4c5161); } .ui-range-body .ui-date-begin.col6 { border-right-width: 0; padding-right: 9px; } .ui-range-body .ui-date-begin.col0 { border-left-width: 1px; margin-left: 0; } .ui-range-body .ui-date-end.col0 { border-left-width: 0; padding-left: 7px; } .ui-range-body .ui-date-end.col6 { border-right-width: 1px; } .ui-range-body .ui-date-begin.ui-date-end { margin-right: 3px; padding: 0; border: 1px solid var(--ui-blue, #2a80eb); border-radius: calc(var(--ui-radius, 4px) - 2px); } .ui-range-body .ui-date-begin + .ui-date-end { border-left-width: 1px; margin-right: 3px; } .ui-time-x { display: inline-flex; gap: 5px; padding: 5px; } .ui-time-col { height: calc(290px); overflow: auto; overflow: overlay; scrollbar-width: none; overscroll-behavior: contain; } .ui-time-col::-webkit-scrollbar { display: none; } .ui-time-item { display: block; border: 0; background-color: var(--ui-white, #fff); padding: 0 1em; height: var(--ui-component-height, 40px); color: var(--ui-dark, #4c5161); } .ui-time-item:disabled { opacity: var(--ui-opacity, .4); } .ui-time-item:not(:disabled):not(.selected):hover { background-color: var(--ui-list-hover, #f0f7ff); } .ui-time-item[data-visibility="false"] { display: none; } @media (prefers-reduced-motion: reduce) { .ui-date-container { animation: none; } [is="ui-datetime"], .ui-date-container a { transition: none; } } @media (width < 480px) { :where(.ui-date-container[data-type*="range"]) { max-width: calc(100vw - var(--safe-area) * 2); box-sizing: border-box; overflow: auto; translate: calc(-1 * var(--safe-area)) 0; } } /** * * @Input.css * @author zhangxinxu(.com) * @create 15-06-16 * @edit 17-06-13 19-07-18 version pure 20-04-03 version edge * @editor lennonover */ /* input基础变量 */ :root { --ui-input-height: var(--ui-component-height, 40px); --ui-input-line-height: var(--ui-line-height, 20px); --ui-input-search-img: url("data:image/svg+xml,%3Csvg viewBox='0 0 1024 1024' xmlns='http://www.w3.org/2000/svg' width='200' height='200'%3E%3Cpath d='M638.72 638.72a256 256 0 1 0-361.984-361.984A256 256 0 0 0 638.72 638.72zm58.71 119.04a384 384 0 1 1 85.418-95.573l202.24 202.24a64.256 64.256 0 0 1 .597 91.136 63.744 63.744 0 0 1-91.05-.598l-197.206-197.12z' fill='%23b6bbc6'/%3E%3C/svg%3E") no-repeat; } /* reset [type=search] ui */ [type="search"] { -webkit-appearance: none; } [type="search"]::-webkit-search-cancel-button { -webkit-appearance: none; width: 20px; height: 20px; margin-right: -2px; background: var(--ui-dark-gray, #b6bbc6) url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMDAiIGhlaWdodD0iMjAwIiB2aWV3Qm94PSIwIDAgMjAwIDIwMCI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGZpbGw9IiNGRkYiIGQ9Ik0wIDB2MjAwaDIwMFYwSDB6bTE1MS42MzYgMTM2LjQ4MmE3LjM3NCA3LjM3NCAwIDAgMSAwIDEwLjQyN2wtNS4yMTIgNS4yMWE3LjM3MiA3LjM3MiAwIDAgMS0xMC40MjYgMGwtMzYuNDgzLTM2LjQ4NUw2My4wMyAxNTIuMTJhNy4zNyA3LjM3IDAgMCAxLTEwLjQyNCAwbC01LjIxLTUuMjFhNy4zNyA3LjM3IDAgMCAxIDAtMTAuNDI4TDgzLjg4IDEwMCA0Ny4zOTYgNjMuNTE0YTcuMzY4IDcuMzY4IDAgMCAxIDAtMTAuNDI1bDUuMjEtNS4yMWE3LjM2OCA3LjM2OCAwIDAgMSAxMC40MjYgMEw5OS41MTYgODQuMzYgMTM2IDQ3Ljg4YTcuMzcgNy4zNyAwIDAgMSAxMC40MjUgMGw1LjIxMiA1LjIxYTcuMzcgNy4zNyAwIDAgMSAwIDEwLjQyNUwxMTUuMTUzIDEwMGwzNi40ODMgMzYuNDgyeiIvPjwvc3ZnPg==) no-repeat center; background-size: 20px 20px; transition: background-color var(--ui-animate-time, .2s); cursor: pointer; } [type="search"]::-webkit-search-cancel-button:hover { background-color: var(--ui-dark, #4c5161); } input[type="search"]::-webkit-search-results-decoration { display: none; } input:-webkit-autofill { -webkit-box-shadow: 0 0 0 1000px var(--ui-white, #fff) inset; background-color: transparent; } input:disabled, input:read-only { cursor: default; } input.ui-input, .ui-input > input, [is="ui-input"] { height: var(--ui-input-height); line-height: var(--ui-input-line-height); padding: calc((var(--ui-input-height) - var(--ui-input-line-height) - 2px) / 2) 8px; border: 1px solid var(--ui-border, #d0d0d5); border-radius: var(--ui-radius, 4px); background-color: var(--ui-white, #fff); box-sizing: border-box; font-size: var(--ui-font, 14px); outline: none; color: var(--ui-dark, #4c5161); transition: border-color var(--ui-animate-time, .2s), background-color var(--ui-animate-time, .2s); &:has(+ .ui-select-icon) { padding-right: 27px; } &[size$="ch"] { width: attr(size ch); } &[size$="em"] { width: attr(size em); } } .ui-input:hover, .ui-input:hover > input, [is="ui-input"]:hover { border-color: var(--ui-dark-border, #ababaf); } .ui-input:focus, .ui-input > input:focus, [is="ui-input"]:focus { border-color: var(--ui-blue, #2a80eb); } span.ui-input { display: inline-block; } div.ui-input > input, input[width="100%"] { width: 100%; } /* input with count */ .ui-input-x { position: relative; } span.ui-input-x { display: inline-block; } .ui-input-x > input { display: block; width: 100%; padding-right: 56px; } input ~ .ui-input-count { line-height: 38px; padding: 0 2px; color: var(--ui-gray, #a2a9b6); font-size: calc(var(--ui-font, 14px) - 2px); white-space: nowrap; position: absolute; font-family: sans-serif; right: 8px; top: 1px; pointer-events: none; } .ui-input-count slash { margin: 0 1px; } /* type=[search] with icon */ .ui-input-search:not(input) { position: relative; } .ui-input-search > input:not(.ui-icon-search) { padding-left: 40px; } .ui-input-search[align="end"] > :not(.ui-icon-search) { padding-right: 40px; padding-left: 9px; } .ui-icon-search { position: absolute; left: 3px; top: 0; bottom: 0; margin: auto 0; width: 20px; height: 20px; color: var(--ui-dark-gray, #b6bbc6); background-color: transparent; border: solid transparent; border-width: 9px 8px; box-sizing: content-box; transition: color var(--ui-animate-time, .2s); padding: 0; text-indent: -99px; font-size: 0; cursor: pointer; outline: 0 none; overflow: hidden; } [align="end"] > .ui-icon-search { left: auto; right: 3px; } .ui-input-search:hover .ui-icon-search { color: var(--ui-gray, #a2a9b6); } .ui-input-search > :disabled ~ .ui-icon-search { color: var(--ui-disabled, #ccd0d7); cursor: default; } .ui-input-search > :focus ~ .ui-icon-search { color: var(--ui-blue, #2a80eb); } .ui-input-search > [is-error] ~ .ui-icon-search { color: var(--ui-red, #eb4646); } /** * 改成CSS绘制 */ .ui-icon-search::before, .ui-icon-search::after { content: ""; position: absolute; box-sizing: content-box; } .ui-icon-search::before { width: 9px; height: 9px; border: 2px solid; border-radius: 50%; left: 2px; top: 2px; } .ui-icon-search::after { width: 6px; border-top: 2px solid; transform-origin: left; transform: scaleY(1.25) rotate(30deg); left: 13px; top: 11px; } /** * <input>按钮不支持伪元素,我们使用背景图片代替 * 不建议使用<input>标签按钮, */ input.ui-icon-search { border: 0; margin: auto 6px; width: 18px; height: 18px; -webkit-mask: var(--ui-input-search-img); mask: var(--ui-input-search-img); -webkit-mask-size: 100% 100%; mask-size: 100% 100%; background-color: var(--ui-dark-gray, #b6bbc6); cursor: pointer; } :focus ~ input.ui-icon-search { background-color: var(--ui-blue, #2a80eb); } [is-error] ~ input.ui-icon-search { background-color: var(--ui-red, #eb4646); } input.ui-input:disabled, [is="ui-input"]:disabled, .ui-input > input:disabled, .ui-input-x > :disabled ~ .ui-input { background-color: var(--ui-light, #f7f9fa); } input.ui-input:disabled, [is="ui-input"]:disabled, .ui-input > input:disabled, .ui-input-x > input:disabled { color: var(--ui-gray, #a2a9b6); } .ui-input:disabled:hover, [is="ui-input"]:disabled:hover, .ui-input > input:disabled:hover, .ui-input:hover > input:disabled { border-color: var(--ui-border, #d0d0d5); } .ui-input:read-only:hover, .ui-input:read-only:focus, [is="ui-input"]:read-only:hover, [is="ui-input"]:read-only:focus, .ui-input > input:read-only:hover, .ui-input > input:read-only:focus { border-color: var(--ui-border, #d0d0d5); } /* firefox */ .ui-input:-moz-read-only:hover, [is="ui-input"]:-moz-read-only:hover, .ui-input > input:-moz-read-only:hover, .ui-input:-moz-read-only:focus, [is="ui-input"]:-moz-read-only:focus, .ui-input > input:-moz-read-only:focus { border-color: var(--ui-border, #d0d0d5); } /* error */ .ui-input[is-error], [is="ui-input"][is-error], .ui-input > [is-error] { border-color: var(--ui-red, #eb4646) !important; } .ui-input-count > [is-error], .ui-input-count[is-error] { color: var(--ui-red, #eb4646); } @media (prefers-reduced-motion: reduce) { [type="search"]::-webkit-search-cancel-button, input.ui-input, .ui-input > input, [is="ui-input"], .ui-icon-search { transition: none; } }/** * @Placeholder.css * @editor gandaochuan * @edit 20-04-10 */ ::placeholder { transition: opacity var(--ui-animate-time, .2s); color: var(--ui-gray, #a2a9b6); font-size: var(--ui-font, 14px); opacity: 1; /* fix firefox */ } :focus::placeholder { opacity: var(--ui-opacity, .4); } @media (prefers-reduced-motion: reduce) { ::placeholder { transition: none; } } /** * * @Progress.css * @author zhangxinxu * @create 19-10-18 * @editor gandaochuan * @edit 20-04-10 * **/ /* progress基础变量 */ :root { --ui-progress-width: 10em; --ui-progress-height: .25em; --ui-progress-background-color: var(--ui-border, #d0d0d5); } .ui-progress, [is="ui-progress"] { display: inline-block; width: var(--ui-progress-width, 10em); height: var(--ui-progress-height, .25em); vertical-align: calc(.25em - 2px); border: 0; background-color: var(--ui-progress-background-color); border-radius: 1em; overflow: hidden; } .ui-progress::-moz-progress-bar, [is="ui-progress"]::-moz-progress-bar { background-color: var(--ui-blue, #2a80eb); } .ui-progress::-webkit-progress-bar, [is="ui-progress"]::-webkit-progress-bar { background-color: var(--ui-progress-background-color); } .ui-progress::-webkit-progress-value, [is="ui-progress"]::-webkit-progress-value { background-color: var(--ui-blue, #2a80eb); } progress[width="100%"] { width: 100%; } /* For firefox to match no [value] */ .ui-progress:indeterminate::-moz-progress-bar, [is="ui-progress"]:indeterminate::-moz-progress-bar { background-color: inherit; } /** * * @Radio.css * @author zhangxinxu * @create 15-06-17 * @edit 17-06-14 focusable * @editor shanyerong * @edit 2020-04-30 description here **/ /* radio基础变量 */ :root { --ui-radio-width: 20px; --ui-radio-height: 20px; } [is="ui-radio"] { -moz-appearance: none; -webkit-appearance: none; width: var(--ui-radio-width, 20px); height: var(--ui-radio-height, 20px); cursor: pointer; display: inline-flex; outline: none; border: solid 1px var(--ui-border, #d0d0d5); background-color: var(--ui-white, #ffffff); border-radius: 100%; box-sizing: border-box; vertical-align: -0.5ex; -webkit-user-select: none; -ms-user-select: none; user-select: none; transition: border-color var(--ui-animate-time, .2s); } [is="ui-radio"]::after { content: ""; width: 100%; height: 100%; background-color: var(--ui-blue, #2a80eb); transform: scale(0); opacity: 0; border-radius: 100%; } [is="ui-radio"]:not(:disabled):hover { border-color: var(--ui-dark-border, #ababaf); } [is="ui-radio"]:focus { border-color: var(--ui-blue, #2a80eb); } [is="ui-radio"]:checked::after { transform: scale(.5); opacity: 1; } [is="ui-radio"]:disabled { border-color: var(--ui-dark-border, #ababaf); opacity: var(--ui-opacity, .4); cursor: default; } [is="ui-radio"][is-error] { border-color: var(--ui-red, #eb4646) !important; } @media (prefers-reduced-motion: reduce) { [is="ui-radio"] { transition: none; } } /** * * @Range.css * @author xboxyan * @create 20-04-30 * @edit 26-04-15 by zhangxinxu multiple range support any range **/ /* range基础变量 */ :root { --ui-range-track-hegiht: 4px; --ui-range-thumb-size: 16px; } /* range */ [is="ui-range"] { -webkit-appearance: none; appearance: none; margin: 0; outline: 0; background-color: transparent; vertical-align: middle; } [is="ui-range"]:disabled { opacity: var(--ui-opacity, .4); } [is="ui-range"]::-webkit-slider-runnable-track { display: flex; align-items: flex-start; position: relative; height: var(--ui-range-track-hegiht); border-radius: var(--ui-range-track-hegiht); background: linear-gradient(to right, var(--ui-blue, #2a80eb) calc(100% * var(--percent,100)), var(--ui-gray, #a2a9b6) 0% ); } [type="range" i]::-webkit-slider-container { display: flex; height: var(--ui-range-thumb-size); } [is="ui-range"]::-webkit-slider-thumb { -webkit-appearance: none; appearance: none; width: var(--ui-range-thumb-size); height: var(--ui-range-thumb-size); border-radius: 50%; background-color: #fff; box-shadow: 0 1px 3px 1px rgba(0, 0, 0, .25); transition: border-color var(--ui-animate-time, .2s), background-color var(--ui-animate-time, .2s); margin-top: calc((var(--ui-range-thumb-size) - var(--ui-range-track-hegiht)) * -0.5); } [is="ui-range"]::-webkit-slider-thumb:active { background-color: var(--ui-light,#f7f9fa); box-shadow: 0 0 1px 1px rgba(0, 0, 0, .25); } /* Firefox */ [is="ui-range"]::-moz-range-track { background: var(--ui-light-border, #ededef); height: 4px; } [is="ui-rate"]::-moz-range-track { background: var(--ui-light-border, #ededef); height: inherit; } [is="ui-range"]::-moz-range-progress { background: var(--ui-blue, #2a80eb); height: 4px; } [is="ui-range"]::-moz-range-thumb { width: var(--ui-range-thumb-size); height: var(--ui-range-thumb-size); border: none; border-radius: 50%; background-color: #fff; box-shadow: 0 1px 3px 1px rgba(0, 0, 0, .25); } /* 黑色提示效果 */ [is="ui-range"][data-tips]{ position: relative; } [is="ui-range"][data-tips] { box-sizing: border-box; border-style: solid; border-color: transparent; border-width: 0 calc(var(--ui-range-thumb-size) * 0.5); } [is="ui-range"][data-tips]::-webkit-slider-runnable-track { margin: 0 calc(var(--ui-range-thumb-size) * -0.5); } [is="ui-range"][data-tips]::before, [is="ui-range"][data-tips]::after { content: ''; display: block; position: absolute; z-index: 1; transform: translate(-50%, -20px); opacity: 0; transition: all .15s .15s, left 0s, top 0s; color: #373c42; visibility: hidden; pointer-events: none; } [is="ui-range"][data-tips]::before { content: attr(data-tips); border-radius: 3px; padding: 6px 10px; line-height: 18px; text-align: left; background-color: #373c42; color: #fff; font-size: 12px; font-style: normal; width: max-content; max-width: 200px; left: calc( var(--percent, .5) * 100%); bottom: 100%; transform: translate(-50%, -20px); } [is="ui-range"][data-tips]::after { width: 0; height: 0; overflow: hidden; border: 6px solid transparent; left: calc( var(--percent,.5) * 100% ); bottom: 100%; transform: translate(-50%, -20px); margin-bottom: -12px; border-top-color: currentColor; } [is="ui-range"][data-tips][reverse]::before { left: calc( var(--percent,.5) * 100% ); bottom: auto; top: 100%; transform: translate(-50%, 20px); } [is="ui-range"][data-tips][reverse]::after { bottom: auto; top: 100%; transform: translate(-50%, 20px); margin-top: -12px; border-top-color: transparent; border-bottom-color: currentColor; } [is="ui-range"][data-tips]:not([data-tips*="$"]):is(:hover, :active)::before, [is="ui-range"][data-tips]:not([data-tips*="$"]):is(:hover, :active)::after { visibility: visible; opacity: 1; transform: translate(-50%, calc( var(--ui-range-thumb-size) * -1)); } [is="ui-range"][data-tips][reverse]:not([data-tips*="$"]):is(:hover, :active)::before, [is="ui-range"][data-tips][reverse]:not([data-tips*="$"]):is(:hover, :active)::after { transform: translate(-50%, var(--ui-range-thumb-size)); } /* 区域选择 */ [is="ui-range"][multiple]{ pointer-events: none; vertical-align: top; } [is="ui-range"][multiple]::-webkit-slider-runnable-track { background: linear-gradient(to right, var(--ui-gray, #a2a9b6) calc(1% * var(--scale, 1) * var(--from, 0)), var(--ui-blue, #2a80eb) calc(1% * var(--scale, 1) * var(--from, 0)) calc(1% * var(--scale, 1) * var(--to, 100)), var(--ui-gray, #a2a9b6) 0%); } [is="ui-range"][multiple][data-range="from"] { display: block; position: absolute; } [is="ui-range"][multiple][data-range="to"] { opacity: 1; } [is="ui-range"][multiple][data-range="to"]:disabled::-webkit-slider-thumb { box-shadow: 0 1px 3px 1px rgba(0, 0, 0, .1); } [is="ui-range"][multiple][data-range="to"]::-webkit-slider-runnable-track { background: none; } [is="ui-range"][multiple]::-webkit-slider-thumb { pointer-events: all; position: relative; } [is="ui-range"][multiple]::-webkit-slider-thumb:active { z-index: 1; } /* Firefox 范围选择 */ [is="ui-range"][multiple]::-moz-range-thumb { pointer-events: initial; } [is="ui-range"][multiple]::-moz-range-track { background: linear-gradient(to right, var(--ui-gray, #a2a9b6) calc(1% * var(--scale, 1) * var(--from, 0)), var(--ui-blue, #2a80eb) calc(1% * var(--scale, 1) * var(--from, 0)) calc(1% * var(--scale, 1) * var(--to, 100)), var(--ui-gray, #a2a9b6) 0%); } [is="ui-range"][multiple][data-range="to"]::-moz-range-progress { background: none; } /* 星星评分 */ [is="ui-rate"]:enabled { cursor: pointer; } [is="ui-rate"]:disabled { opacity: var(--ui-opacity, .4); } [is="ui-rate"] { -webkit-appearance: none; appearance: none; margin: 0; outline: 0; background-color: transparent; vertical-align: middle; width: calc(var(--number, 5) * 2em); --mask-url: url("data:image/svg+xml,%3Csvg width='12' height='11' viewBox='0 0 12 11' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M6 0l1.693 3.67 4.013.476L8.74 6.89l.788 3.964L6 8.88l-3.527 1.974.788-3.964L.294 4.146l4.013-.476L6 0z'/%3E%3C/svg%3E"); --mask: var(--mask-url) repeat-x left / 2em 100%; } [is="ui-rate"]::-webkit-slider-runnable-track { background: var(--ui-orange, #f59b00); height: 2em; -webkit-mask: var(--mask); mask: var(--mask); } [is="ui-rate"]::-webkit-slider-thumb { -webkit-appearance: none; width: 1px; height: 100%; box-shadow: 999em 0 0 999em var(--ui-light-border, #ededef); } [is="ui-rate"]:focus::-webkit-slider-thumb { box-shadow: 999em 0 0 999em var(--ui-light-border, #ededef); background: var(--ui-orange, #f59b00); } [is="ui-rate"][readonly] { cursor: default; pointer-events: none; } /* 兼容火狐浏览器 */ [is="ui-rate"], _::-moz-range-track { appearance: none; -webkit-mask: var(--mask); mask: var(--mask); height: 2em; } [is="ui-rate"]::-moz-range-progress { background: var(--ui-orange, #f59b00); height: inherit; } [is="ui-rate"]::-moz-range-thumb { width: 0; opacity: 0; } @media (prefers-reduced-motion: reduce) { [is="ui-range"]::-webkit-slider-thumb, input[data-tips]::befo