UNPKG

lu2

Version:

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

1,771 lines (1,566 loc) 102 kB
@charset "UTF-8"; /** * @variables.css * @description 基础参数变量 * @author zhangxinxu * @create 21-12-30 **/ :root { /* 基础颜色变量 */ --ui-primary: #2a80eb; --ui-dark: #4c5161; --ui-gray: #a2a9b6; --ui-dark-gray: #b6bbc6; --ui-light: #f7f9fa; --ui-white: #ffffff; --ui-blue: var(--ui-primary); --ui-green: #1cad70; --ui-orange: #f59b00; --ui-red: #eb4646; --ui-purple: #c12cea; /* hover的颜色 */ --ui-list-active: #f0f7ff; /* selected的颜色 */ --ui-list-selected: #e0f0ff; /* disabled禁用色 */ --ui-disabled: #ccd0d7; /* 边框颜色 */ --ui-border: #d0d0d5; /* 深一点的边框颜色 */ --ui-dark-border: #ababaf; /* 浅一点的边框颜色 */ --ui-light-border: #ededef; --ui-light-background: var(--ui-light-border); /* 透明度 */ --ui-opacity: .4; /* 圆角变量 */ --ui-radius: .25rem; /* 基础字号 */ --ui-font: 1rem; /* 动画时间 */ --ui-animate-time: .2s; /* 小图标等图形尺寸 */ --ui-basic-width: 1.25rem; --ui-basic-height: 1.25rem; /* 组件基础高度 */ --ui-component-height: 3rem; /* 按下反馈背景 */ --ui-image-active: linear-gradient(rgba(0, 0, 0, .05), rgba(0, 0, 0, .05)); } /* 单复选框默认的自定义属性 */ [type="radio"], [type="checkbox"] { --ui-place-size: 1.5rem; } [type="radio"] { --ui-image-default: var(--ui-radio-default, url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E %3Cpath d='M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 448c-110.5 0-200-89.5-200-200S145.5 56 256 56s200 89.5 200 200-89.5 200-200 200z'%3E%3C/path%3E %3C/svg%3E")); --ui-image-checked: var(--ui-radio-checked, url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E %3Cpath d='M256 56c110.532 0 200 89.451 200 200 0 110.532-89.451 200-200 200-110.532 0-200-89.451-200-200 0-110.532 89.451-200 200-200m0-48C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm0 168c-44.183 0-80 35.817-80 80s35.817 80 80 80 80-35.817 80-80-35.817-80-80-80z'%3E%3C/path%3E %3C/svg%3E")) } [type="checkbox"] { --ui-image-default: var(--ui-checkbox-default, url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E %3Cpath d='M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 448c-110.5 0-200-89.5-200-200S145.5 56 256 56s200 89.5 200 200-89.5 200-200 200z'%3E%3C/path%3E %3C/svg%3E")); --ui-image-checked: var(--ui-checkbox-checked, url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E %3Cpath d='M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm0 48c110.532 0 200 89.451 200 200 0 110.532-89.451 200-200 200-110.532 0-200-89.451-200-200 0-110.532 89.451-200 200-200m140.204 130.267l-22.536-22.718c-4.667-4.705-12.265-4.736-16.97-.068L215.346 303.697l-59.792-60.277c-4.667-4.705-12.265-4.736-16.97-.069l-22.719 22.536c-4.705 4.667-4.736 12.265-.068 16.971l90.781 91.516c4.667 4.705 12.265 4.736 16.97.068l172.589-171.204c4.704-4.668 4.734-12.266.067-16.971z'%3E%3C/path%3E %3C/svg%3E")); --ui-image-indeterminate: var(--ui-checkbox-indeterminate, url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E %3Cpath d='M504 256C504 119 393 8 256 8S8 119 8 256s111 248 248 248 248-111 248-248zm-448 0c0-110.5 89.5-200 200-200s200 89.5 200 200-89.5 200-200 200S56 366.5 56 256zm296-80v160c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h160c8.8 0 16 7.2 16 16z'%3E%3C/path%3E %3C/svg%3E")); } /* 其余一些图标图像 */ html { --ui-image-loading: 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'/%3E%3C/svg%3E"); --ui-image-search: 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'/%3E%3C/svg%3E"); --ui-image-clear: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E %3Cpath d='M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm121.6 313.1c4.7 4.7 4.7 12.3 0 17L338 377.6c-4.7 4.7-12.3 4.7-17 0L256 312l-65.1 65.6c-4.7 4.7-12.3 4.7-17 0L134.4 338c-4.7-4.7-4.7-12.3 0-17l65.6-65-65.6-65.1c-4.7-4.7-4.7-12.3 0-17l39.6-39.6c4.7-4.7 12.3-4.7 17 0l65 65.7 65.1-65.6c4.7-4.7 12.3-4.7 17 0l39.6 39.6c4.7 4.7 4.7 12.3 0 17L312 256l65.6 65.1z'%3E%3C/path%3E %3C/svg%3E"); --ui-image-arrow: 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='M145.659 68.949a12.874 12.874 0 0 0-18.473 0L99.479 97.233 71.772 68.949a12.874 12.874 0 0 0-18.473 0c-5.099 5.208-5.099 13.648 0 18.857l46.18 47.14 46.181-47.14c5.099-5.208 5.099-13.649-.001-18.857z'/%3E%3C/svg%3E"); --ui-image-close: 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='M594.698 511.995l186.788-186.808a37.693 37.693 0 0 0 0-53.35l-26.7-26.702c-14.7-14.75-38.6-14.75-53.351 0L514.637 431.933 327.839 245.13a37.755 37.755 0 0 0-53.402 0l-26.65 26.701a37.693 37.693 0 0 0 0 53.35L434.576 511.99 247.788 698.778a37.755 37.755 0 0 0 0 53.401l26.65 26.701a37.847 37.847 0 0 0 53.4 0l186.799-186.819L701.44 778.885c14.75 14.7 38.65 14.7 53.35 0l26.701-26.7a37.755 37.755 0 0 0 0-53.402L594.698 511.995z'/%3E%3C/svg%3E"); --ui-image-success: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='200' height='200' viewBox='0 0 200 200'%3E%3Cpath fill='%23FFF' d='M163.038 57.226c-5.217-4.162-5.713-4.289-11.674-7.244-2.683-1.344-6.633 2.113-8.569 4.67l-52.648 67.042-34.301-43.387c-1.94-2.558-5.516-3.499-8.2-2.293-6.11 3.095-5.496 2.992-10.715 7.029-2.386 1.883-2.535 5.245-.597 7.793 0 0 36.97 46.917 41.44 52.565 6.557 8.068 18.483 7.669 24.744 0 4.62-5.781 61.117-78.506 61.117-78.506 1.937-2.559 1.788-5.918-.597-7.669z'/%3E%3C/svg%3E"); --ui-image-error: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='200' height='200' viewBox='0 0 200 200'%3E%3Cpath fill='%23FFF' d='M116.153 99.999l36.484-36.486a7.369 7.369 0 0 0 0-10.423l-5.212-5.213a7.375 7.375 0 0 0-10.425 0l-36.484 36.485-36.485-36.485a7.374 7.374 0 0 0-10.424 0l-5.211 5.213a7.365 7.365 0 0 0 0 10.423L84.88 99.999l-36.483 36.485a7.369 7.369 0 0 0 0 10.426l5.211 5.213a7.38 7.38 0 0 0 10.424 0l36.485-36.486L137 152.122a7.38 7.38 0 0 0 10.425 0l5.212-5.213a7.372 7.372 0 0 0 0-10.426l-36.484-36.484z'/%3E%3C/svg%3E"); --ui-image-warning: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='%23FFF' viewBox='0 0 16 16'%3E%3Cpath d='M7.005 3.1a1 1 0 1 1 1.99 0l-.388 6.35a.61.61 0 0 1-1.214 0L7.005 3.1zM7 12a1 1 0 1 1 2 0 1 1 0 0 1-2 0z'/%3E%3C/svg%3E"); } [arrow="right"] { --ui-image-arrow: 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='M704 511.904v-.112a47.84 47.84 0 0 0-14.688-34.544l.016-.016-288-288-.128.128a48 48 0 1 0-64.464 71.04l251.488 251.488L333.44 766.672l.016.016a48 48 0 0 0 67.856 67.856l.016.016 288-288-.016-.016A47.84 47.84 0 0 0 704 512v-.096z'/%3E%3C/svg%3E"); } [arrow="left"] { --ui-image-arrow: 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='M690.56 766.672L435.776 511.904l251.488-251.488A48 48 0 1 0 622.8 189.36l-.128-.128-288 288 .016.016A47.84 47.84 0 0 0 320 511.792v.224c0 13.584 5.632 25.808 14.688 34.544l-.016.016 288 288 .016-.016a48 48 0 0 0 67.872-67.888z'/%3E%3C/svg%3E"); } [arrow="up"] { --ui-image-arrow: 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='M834.544 622.688L546.56 334.672l-.016.016A47.84 47.84 0 0 0 512 320h-.224a47.84 47.84 0 0 0-34.544 14.688l-.016-.016-288 288 .128.128a48 48 0 1 0 71.056 64.464l251.488-251.488L766.672 690.56l.016-.016a48 48 0 0 0 67.856-67.856z'/%3E%3C/svg%3E"); } [arrow="down"] { --ui-image-arrow: 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='M848 368a48 48 0 0 0-81.312-34.544l-.016-.016-254.784 254.784L260.4 336.736a48 48 0 1 0-71.04 64.464l-.128.128 288 288 .016-.016A47.84 47.84 0 0 0 511.792 704h.224a47.84 47.84 0 0 0 34.544-14.688l.016.016 288-288-.016-.016C842.88 392.688 848 380.944 848 368z'/%3E%3C/svg%3E"); } [arrow="none"] { --ui-image-arrow: url(); } /** * * @reset.css * @author zhangxinxu * @create 21-12-30 **/ body { -webkit-tap-highlight-color: transparent; -webkit-text-size-adjust: none; } /* 禁止长按的效果 */ a { -webkit-touch-callout: none; color: inherit; text-decoration: none; } a[href]:active, button:active, [role="button"]:active, [role="link"]:active { background-image: var(--ui-image-active, linear-gradient(rgba(0, 0, 0, .05), rgba(0, 0, 0, .05))); } html { font-size: medium; } @media (min-width: 375px) { html { /* 375px尺寸作为16px基准,414px正好18px大小 */ font-size: calc(100% + 2 * (100vw - 375px) / 39); } } /* * 414px ~ 1280px * 18px ~ 20px */ @media (min-width: 414px) { html { font-size: min(calc(112.5% + 2 * (100vw - 414px) / 1066), 24px); } } @media (any-pointer: fine) { html { font-size: medium; } } /** * * @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 22-01-21 version hope1 */ /* button基础变量 */ :root { --ui-button-height: var(--ui-component-height, 3rem); --ui-button-line-height: var(--ui-basic-height, 1.25rem); --ui-button-radius: var(--ui-radius, .25rem); --ui-button-color: var(--ui-dark, #4c5161); --ui-button-loading-img: var(--ui-image-loading, url(https://qidian.gtimg.com/lulu/hope/ui/Loading/assets/loading.svg)); } .ui-button, [is="ui-button"] { display: inline-flex; width: var(--ui-button-width, auto); height: var(--ui-button-height, auto); line-height: var(--ui-button-line-height); font-size: calc(0.75rem + (var(--ui-button-height, 3rem) - 1.5rem) / 6); justify-content: center; align-items: center; color: var(--ui-white, #fff); border-radius: var(--ui-button-radius); 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) / 3); 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); font-family: inherit; fill: currentColor; flex: none; outline: 0 none; cursor: pointer; overflow: visible; } [is="ui-button"]:active { background: var(--ui-button-color) no-repeat center; } [is="ui-button"][height] { padding-top: 0; padding-bottom: 0; } [is="ui-button"][width] { padding-left: 0; padding-right: 0; } .ui-button[width="100%"], [is="ui-button"][width="100%"] { width: 100%; } .ui-button[size="small"], [is="ui-button"][size="small"] { --ui-button-height: 2.5rem; } .ui-button[size="mini"], [is="ui-button"][size="mini"] { --ui-button-height: 2rem; } .ui-button[size="tiny"], [is="ui-button"][size="tiny"] { --ui-button-height: 1.5rem; } div.ui-button, div[is="ui-button"] { display: flex; } ::-moz-focus-inner { border: 0; } @media (hover: hover) { .ui-button:hover, [is="ui-button"]:hover { text-decoration: none; } .ui-button:not(.disabled):not(.loading):not(:disabled):hover, [is="ui-button"]:not(.disabled):not(.loading):not(:disabled):hover { filter: brightness(1.05); } } .ui-button:not(.disabled):not(.loading):active, [is="ui-button"]:not(.disabled):not(.loading):active { box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1), inset 0 0 0 100px rgba(0, 0, 0, 0.1); } /* normal button */ [type="normal"], [type="default"], [data-type="normal"], [data-type="default"] { --ui-button-color: var(--ui-white, #fff); color: var(--ui-dark, #4c5161); border-color: var(--ui-border); } /* primary button */ [data-type="primary"], [data-type="remind"], [type="primary"], [type="remind"] { --ui-button-color: var(--ui-blue, #2a80eb); } /* success button */ [data-type="success"], [type="success"], [data-type="safe"], [type="safe"] { --ui-button-color: var(--ui-green, #1cad70); } /* warning button */ [data-type^="warn"], [type^="warn"] { --ui-button-color: var(--ui-orange, #f59b00); } /* danger button */ [data-type="danger"], [data-type="error"], [type="danger"], [type="error"] { --ui-button-color: var(--ui-red, #eb4646); } .ui-button[plain], [is="ui-button"][plain] { color: var(--ui-button-color); background-color: var(--ui-white, #fff); } .ui-button[blank], [is="ui-button"][blank] { color: var(--ui-button-color); background-color: transparent; border: 0; --ui-button-radius: 0; flex: 1; } /* disabled status */ .ui-button.disabled, .ui-button:disabled, [is="ui-button"].disabled, [is="ui-button"]:disabled { opacity: var(--ui-opacity, .4); cursor: default; } /* loading status */ .ui-button.loading, [is="ui-button"].loading { pointer-events: none; color: transparent !important; position: relative; cursor: default; } /* button 按钮 */ .ui-button.loading::before, [is="ui-button"].loading::before { content: ""; position: absolute; inset: 0; width: var(--ui-basic-width, 1.25rem); height: var(--ui-basic-height, 1.25rem); 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 var(--ui-timing-function, linear) infinite; } @supports not (inset: 0) { .ui-button.loading::before, [is="ui-button"].loading::before { left: 0; top: 0; right: 0; bottom: 0; } } /* 白底按钮 */ .ui-button[plain].loading::before, [is="ui-button"][plain].loading::before { background-color: var(--ui-button-color); } [data-type="normal"].loading::before, [data-type="default"].loading::before, [type="normal"].loading::before, [type="default"].loading::before { background-color: var(--ui-blue,#2a80eb); } @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 22-01-18 **/ /* checkbox基础变量 */ html { --ui-checkbox-place: var(--ui-place-size, 1.5rem); --ui-checkbox-size: var(--ui-basic-width, 1.25rem); --ui-checkbox-radial: calc(var(--ui-checkbox-size) / 2); } [is="ui-checkbox"] { --ui-mask-default: var(--ui-image-default, url(https://qidian.gtimg.com/lulu/hope/ui/Checkbox/assets/default.svg)); --ui-mask-indeterminate: var(--ui-image-indeterminate, url(https://qidian.gtimg.com/lulu/hope/ui/Checkbox/assets/indeterminate.svg)); --ui-mask-checked: var(--ui-image-checked, url(https://qidian.gtimg.com/lulu/hope/ui/Checkbox/assets/checked.svg)); } [is="ui-checkbox"] { all: initial; -webkit-appearance: none; appearance: none; display: inline-flex; width: var(--ui-checkbox-place); height: var(--ui-checkbox-place); vertical-align: calc(-0.5ex - (calc(var(--ui-checkbox-place) / 2 - var(--ui-checkbox-size) / 2))); color: var(--ui-border, #d0d0d5); background-color: currentColor; -webkit-mask: no-repeat center / var(--ui-checkbox-size) var(--ui-radio-size); mask: no-repeat center / var(--ui-checkbox-size) var(--ui-checkbox-size); -webkit-mask-image: var(--ui-mask-default); mask-image: var(--ui-mask-default); -webkit-user-select: none; user-select: none; outline: none; cursor: pointer; } [is="ui-checkbox"]:checked { color: var(--ui-primary, #2a80eb); -webkit-mask-image: var(--ui-mask-checked); mask-image: var(--ui-mask-checked); } [is="ui-checkbox"]:indeterminate { color: var(--ui-primary, #2a80eb); -webkit-mask-image: var(--ui-mask-indeterminate); mask-image: var(--ui-mask-indeterminate); } [is="ui-checkbox"]:disabled { color: var(--ui-dark-border, #ababaf); opacity: var(--ui-opacity, .4); cursor: default; } [is="ui-checkbox"][is-error] { color: var(--ui-red, #eb4646) !important; } @media (hover: hover) { [is="ui-checkbox"]:enabled:hover { filter: brightness(.9); } } [is="ui-checkbox"][extends] { display: none; } /** * * @Switch.css * @author zhangxinxu * @create 15-06-18 * @edit 17-06-14 keyboard accessible * @editor shanyerong * @edit 2020-04-30 **/ :root { --ui-switch-width: 4rem; --ui-switch-height: 2rem; } [is="ui-switch"] { -webkit-appearance: none; display: inline-flex; outline: none; box-sizing: border-box; box-shadow: inset 0 1px, inset 1px 0, inset -1px 0, inset 0 -1px; background-clip: content-box; -webkit-appearance: none; width: var(--ui-switch-width); height: var(--ui-switch-height); border: 2px solid; border-radius: var(--ui-switch-height); background-color: currentColor; color: var(--ui-dark-gray, #b6bbc6); font-size: 0; transition: all var(--ui-animate-time, .2s); cursor: pointer; -webkit-user-select: none; -ms-user-select: none; user-select: none; -webkit-tap-highlight-color: transparent; } [is="ui-switch"]:checked { color: var(--ui-blue, #2a80eb); background-color: var(--ui-blue, #2a80eb); } [is="ui-switch"]::before { content: ''; flex: 0; transition: flex var(--ui-animate-time, .2s); } [is="ui-switch"]::after { content: ""; width: calc(var(--ui-switch-height) - 4px); height: calc(var(--ui-switch-height) - 4px); border-radius: 100%; background-color: var(--ui-white, #ffffff); opacity: 1; visibility: visible; } [is="ui-switch"]:active { box-shadow: inset 1px 1px 1px rgba(0, 0, 0, 0.1); } [is="ui-switch"]:checked::before { flex: 1; } [is="ui-switch"]:disabled { opacity: var(--ui-opacity, .4); cursor: default; } :root { --ui-date-popup-height: 20rem; } /** * * @Date.css * @author xinxuzhang * @create 15-07-03 * **/ [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: linear-gradient( to bottom, transparent 9px, var(--ui-dark, #4c5161) 9px, var(--ui-dark, #4c5161) 10px, transparent 10px ) no-repeat center; background-size: 80% 100%; } [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"]::-webkit-datetime-edit { overflow: visible; } [is="ui-datetime"] { font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; 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; background: var(--ui-white, #fff) 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") no-repeat right .25rem 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) 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") 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: 6em; } [is="ui-datetime"][type="month"] { width: 125px; } [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: 2.25em; } } /* 选择浮层 */ .ui-date-container { display: flex; -webkit-user-select: none; user-select: none; justify-content: center; } .ui-year-container, .ui-month-container, .ui-day-container { position: relative; } .ui-year-container::before, .ui-month-container::before, .ui-day-container::before, .ui-hour-container::before, .ui-minute-container::before, .ui-second-container::before { content: ''; height: 2.5rem; box-shadow: 0 1px var(--ui-light-border, #ededef), 0 -1px var(--ui-light-border, #ededef); position: absolute; left: -50vw; right: -50vw; top: calc(50% - 1.25rem); pointer-events: none; } .ui-year-container::after, .ui-month-container::after, .ui-day-container::after, .ui-hour-container::after, .ui-minute-container::after, .ui-second-container::after { content: ''; position: absolute; left: 0; right: 0; top: 0; bottom: 0; background: linear-gradient(#fff, #fff1 calc(50% - 5rem) calc(50% + 5rem), #fff); pointer-events: none; } .ui-date-container[is-error]::before { content: '超出范围'; font-size: .75rem; line-height: 2; position: absolute; left: 1rem; top: calc(50% - .75rem); color: var(--ui-red, #eb4646); } .ui-date-container ui-scroll-snap-item { line-height: 1.5rem; padding: 1rem; } .ui-date-container ui-scroll-snap-item:empty { height: calc(var(--ui-date-popup-height) / 2 - 1.75rem); box-sizing: border-box; } .ui-date-container ui-scroll-snap { height: var(--ui-date-popup-height); } .ui-date-container [selected] { color: var(--ui-blue, #2a80eb); } .ui-date-container [disabled] { color: var(--ui-gray, #a2a9b6); } .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-content { display: flex; } .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-minute-x[data-step="1"] { width: 328px; } .ui-minute-x[data-step="2"] { width: 276px; } .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 { padding-left: 5px; padding-right: 2px; padding-bottom: 5px; } .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); } .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-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; } /** * * @Dialog.css * @author zhangxinxu * @create 15-06-18 * @edit 19-10-31 * **/ :root { --ui-url-close: 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='M594.698 511.995l186.788-186.808a37.693 37.693 0 0 0 0-53.35l-26.7-26.702c-14.7-14.75-38.6-14.75-53.351 0L514.637 431.933 327.839 245.13a37.755 37.755 0 0 0-53.402 0l-26.65 26.701a37.693 37.693 0 0 0 0 53.35L434.576 511.99 247.788 698.778a37.755 37.755 0 0 0 0 53.401l26.65 26.701a37.847 37.847 0 0 0 53.4 0l186.799-186.819L701.44 778.885c14.75 14.7 38.65 14.7 53.35 0l26.701-26.7a37.755 37.755 0 0 0 0-53.402L594.698 511.995z' fill='%23bbb'/%3E%3C/svg%3E"); --ui-dialog-icon-url: url("data:image/svg+xml,%3Csvg width='401' height='401' viewBox='0 0 401 401' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M200.501.5C310.958.5 400.5 90.042 400.5 200.5c0 110.457-89.542 199.999-199.999 199.999C90.043 400.499.5 310.957.5 200.5.5 90.042 90.043.5 200.501.5zm5.002 280.002h-10a5 5 0 0 0-5 4.999v20.002a5 5 0 0 0 5 5h10a5 5 0 0 0 5-5v-20.002a5 5 0 0 0-5-4.999zm0-179.999h-10a5 5 0 0 0-5 5v150a5 5 0 0 0 5 5h10a5 5 0 0 0 5-5v-150a5 5 0 0 0-5-5z' fill='%23F59B00' fill-rule='nonzero'/%3E%3C/svg%3E"); --ui-dialog-success-url:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='400' height='400' viewBox='0 0 400 400'%3E%3Cpath fill='%231cad70' d='M400.5 200.5c0 110.457-89.542 199.999-199.999 199.999C90.043 400.499.5 310.957.5 200.5m0 0C.5 90.042 90.043.5 200.501.5 310.958.5 400.5 90.042 400.5 200.5'/%3E%3Cpath fill='%23FFF' d='M286.398 147.132c-1.654-1.134-3.306-2.395-6.801-4.293-4.271-2.336-9.259 2.624-12.391 6.816l-77.641 102.279-47.916-63.522c-3.144-4.188-4.902-8.468-13.073-1.859-3.097 2.123.234-.361-3.969 2.881-3.884 3.064-4.105 8.598-.971 12.774 0 0 38.641 55.817 45.883 65.074 10.625 13.22 29.944 12.57 40.087 0 7.483-9.473 77.757-107.584 77.757-107.584 3.14-4.194 2.898-9.697-.965-12.566z'/%3E%3C/svg%3E"); } [is="ui-dialog"] { position: fixed; left: 0; top: 0; height: 100%; width: 100%; padding: 0; border: 0; background-color: rgba(25, 28, 34, 0.88); color: var(--ui-dark, #4c5161); font-size: var(--ui-font, 14px); overflow: auto; z-index: 19; display: grid; place-items: center; } [is="ui-dialog"]:not([open]) { display: none; } .ui-dialog-animation { animation: dialogyFadeIn var(--ui-animate-time, .2s) both; } /* 多个弹框出现的时候,隐藏后面弹框的背景 */ [is="ui-dialog"][open] + [is="ui-dialog"] { transition: background-color var(--ui-animate-time, .2s); background-color: transparent; } .ui-dialog { display: flex; flex-direction: column; width: var(--ui-dialog-width, fit-content); height: var(--ui-dialog-height, fit-content); max-width: calc(100vw - 2rem); line-height: 1.5; text-align: center; border-radius: var(--ui-dialog-radius, 1rem); background-color: var(--ui-white, #fff); outline: none; position: relative; } .ui-dialog-animation .ui-dialog { animation: tinydown var(--ui-animate-time, .2s); } .ui-dialog-title { margin: 0; padding: 1.5rem 1.5rem 0; font-size: 100%; font-weight: bold; color: var(--ui-dark, #4c5161); -webkit-user-select: none; user-select: none; } .ui-dialog-close { position: absolute; top: .25rem; right: .25rem; width: 2.5rem; height: 2.5rem; border: 0; background: none; font-size: 0; border-top-right-radius: var(--ui-dialog-radius, 1rem); cursor: pointer; z-index: 1; } .ui-dialog-close::before { content: ''; position: absolute; left: 0; top: 0; width: inherit; height: inherit; background-color: var(--ui-gray, #a2a9b6); transition: background-color var(--ui-animate-time, .2s); -webkit-mask: var(--ui-url-close) no-repeat center / 1.5rem; mask: var(--ui-url-close) no-repeat center / 1.5rem; } .ui-dialog-close:hover::before { background-color: var(--ui-dark, #4c5161); } .ui-dialog-body { display: flow-root; padding: 1rem 1.5rem; } .ui-dialog-title:empty ~ .ui-dialog-body { min-height: 2.5rem; } .ui-dialog-footer { display: flex; margin-top: auto; max-height: 3rem; opacity: 1; transition: max-height var(--ui-animate-time, .2s), opacity var(--ui-animate-time, .2s) var(--ui-animate-time, .2s); overflow: hidden; } .ui-dialog-footer:not(:empty) { box-shadow: 0 -1px var(--ui-light-border, #ededef); } .ui-dialog-footer:empty { max-height: 0; opacity: 0; } .ui-dialog-footer .ui-button { flex: 1; } .ui-dialog-stretch { max-height: 2000px; height: calc(100% - 50px); } .ui-dialog-stretch .ui-dialog-footer { position: absolute; left: 0; bottom: 0; right: 0; } .ui-dialog-stretch .ui-dialog-body { position: absolute; left: 0; right: 0; top: 50px; bottom: 90px; padding: 0 0 0 25px; overflow: auto; } /* alert | comfirm */ [icon] .ui-dialog-confirm::before, [icon] .ui-dialog-alert::before { content: ''; display: block; height: 4rem; background-size: contain; background-repeat: no-repeat; background-position: top; } .ui-dialog-success::before { background-image: var(--ui-dialog-success-url), none; } .ui-dialog-warning::before, .ui-dialog-danger::before, .ui-dialog-remind::before { -webkit-mask-image: var(--ui-dialog-icon-url); mask-image: var(--ui-dialog-icon-url); -webkit-mask-repeat: no-repeat; mask-repeat: no-repeat; -webkit-mask-position: top; mask-position: top; -webkit-mask-size: 2.5rem; mask-size: 2.5rem; } .ui-dialog-remind::before { background-color: var(--ui-blue, #2a80eb); } .ui-dialog-warning::before { background-color: var(--ui-orange, #f59b00); } .ui-dialog-danger::before { background-color: var(--ui-red, #eb4646); } .ui-dialog-alert, .ui-dialog-confirm { max-width: min(340px, calc(100vw - 2rem)); min-width: 288px; min-height: 40px; word-wrap: break-word; overflow: hidden; position: relative; } .ui-dialog-wrap > h6 { font-size: 100%; margin-bottom: .375rem; margin-top: 0; } .ui-dialog-wrap > p { margin: 0; } .ui-dialog-remind, .ui-dialog-success, .ui-dialog-warning, .ui-dialog-danger { display: flex; flex-direction: column; justify-content: center; margin-bottom: 1.25rem; } .ui-dialog-loading { min-width: 14.5rem; } .ui-dialog-loading .ui-dialog-footer { visibility: hidden; } .ui-dialog-loading .ui-dialog-title, .ui-dialog-loading .ui-dialog-close { display: none; } @keyframes dialogyFadeIn { 0% { opacity: 0; } 100% { opacity: 1; } } /** * @Drop.css * @author zhangxinxu * @create 20-12-15 * @edit 22-06-16 zhangxinxu **/ ui-drop { display: inline-flex; } ui-drop[tabindex="0"] { cursor: pointer; } ui-drop ~ .ui-drop-target { position: absolute; z-index: 9; } ui-drop:not([open]) ~ .ui-drop-target { display: none; } /** * * @DropList.css * @author xinxuzhang * @create 15-07-01 * @edit 19-10-20 sunmeiye * @edit 22-06-16 zhangxinxu **/ .ui-droplist-x { position: absolute; width: 111px; padding: 7px 0; background-color: var(--ui-white, #ffffff); box-shadow: 0 2px 5px rgba(0, 0, 0, .25); --safe-area: 3px; border: 1px solid var(--ui-border, #d0d0d5); border-radius: var(--ui-radius, 4px); font-size: var(--ui-font, 14px); animation: fadeIn var(--ui-animate-time, .2s); z-index: 9; } .ui-droplist-li { display: block; line-height: 20px; padding: 7px 12px 8px; color: var(--ui-dark, #4c5161); text-decoration: none; cursor: pointer; white-space: nowrap; text-overflow: ellipsis; overflow: hidden; } .ui-droplist-hr { border: 0; border-bottom: 1px solid var(--ui-border, #d0d0d5); margin: 7px 12px; opacity: .4; } .ui-droplist-hr:first-child { display: none; } a.ui-droplist-li:hover { color: var(--ui-dark, #4c5161); background-color: var(--ui-list-hover, #f0f7ff); } a.ui-droplist-li:hover::after { background-position: 0 -20px; } span.ui-droplist-li { color: var(--ui-gray, #a2a9b6); cursor: default; } .ui-droplist-li[role="heading"] { font-weight: 700; padding-bottom: 5px; cursor: default; } [role="heading"] ~ .ui-droplist-li:not([role="heading"]) { padding-left: 24px; } .ui-droplist-li.disabled { opacity: var(--ui-opacity, .4); } .ui-droplist-li[data-sublist]::before { transform: rotate(-90deg); margin-top: 1px; float: right; } .ui-droplist-x > .selected { background-color: var(--ui-list-selected, #e0f0ff); } .selected + .ui-droplist-xx > .ui-droplist-x { display: block; } .ui-droplist-xx { position: relative; } .ui-droplist-xx > .ui-droplist-x { display: none; left: calc(100% - 5px); top: -35px; } .ui-droplist-xx > .reverse { left: auto; right: calc(100% - 5px); } .ui-droplist-arrow:not(:empty) { display: inline-flex; align-items: center; vertical-align: middle; } .ui-droplist-arrow:empty, .ui-droplist-arrow:not(:empty)::after, .ui-droplist-li[data-sublist]::before { content: ''; display: inline-block; width: 20px; height: 20px; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-205 197 200 400'%3E%3Cpath d='M-59.7 271.6c-4.2-4.1-11-4.1-15.3 0l-30.5 29.6-30.5-29.6c-4.2-4.1-11-4.1-15.3 0-4.2 4.1-4.2 10.7 0 14.8l38.2 37c4.2 4.1 11 4.1 15.3 0l38.2-37c4.1-4.1 4.1-10.7-.1-14.8z' fill='%23a2a9b6'/%3E%3Cpath d='M-58.7 471.6c-4.2-4.1-11-4.1-15.3 0l-30.5 29.6-30.5-29.6c-4.2-4.1-11-4.1-15.3 0-4.2 4.1-4.2 10.7 0 14.8l38.2 37c4.2 4.1 11 4.1 15.3 0l38.2-37c4.1-4.1 4.1-10.7-.1-14.8z' fill='%232a80eb'/%3E%3C/svg%3E"), none; background-size: 20px 40px; vertical-align: -5px; } a:active .ui-droplist-arrow:empty, .ui-droplist-arrow:not(:empty):active::after { background-position: 0 -20px; } /** * * @ErrorTip.css * @author zhangxinxu * @create 22-06-01 * **/ :root { --ui-tips-triangle-size: 6px; /* 底为 6*2,高为 6 */ --ui-tips-bg: #373c42; --ui-tips-error-bg: linear-gradient(90deg, #ff8da2, #ec5b60); } /* JS生成的,和CSS定位样式不合并,保持独立 */ .ui-tips-x { position: absolute; width: fit-content; z-index: 99; margin-top: -6px; max-width: 20em; padding: calc(6px + var(--ui-tips-triangle-size)) calc(10px + var(--ui-tips-triangle-size)); line-height: 18px; color: var(--ui-white, #fff); font-size: calc(var(--ui-font, 14px) - 2px); font-style: normal; text-align: left; } .ui-tips-x::before, .ui-tips-x::after { content: ""; display: block; position: absolute; width: 100%; height: 100%; left: 0; top: 0; background: var(--ui-tips-bg); } .ui-tips-x::before { z-index:-1; clip-path: inset( var(--ui-tips-triangle-size) var(--ui-tips-triangle-size) var(--ui-tips-triangle-size) var(--ui-tips-triangle-size) round calc(var(--ui-radius, 4px) - 1px)); } .ui-tips-x::after { clip-path: polygon( calc(50% - var(--ui-tips-triangle-size)) calc(100% - (var(--ui-tips-triangle-size) + 1px)), calc(50% + var(--ui-tips-triangle-size)) calc(100% - (var(--ui-tips-triangle-size) + 1px)), 50% 100% );} @media (any-hover: none) { html { --hoverNone: 'true'; } } /* 悬浮在左右侧的,限定最大宽度 */ .ui-tips-x[data-align="8-6"], .ui-tips-x[data-align="6-8"] { max-width: 600px; } /* 悬浮在目标正下方,箭头在框体 50% 0 位置 */ .ui-tips-x[data-align="7-5"] { margin-top: 6px; } .ui-tips-x[data-align="7-5"]::after { clip-path: polygon( calc(50% - var(--ui-tips-triangle-size)) calc(0% + (var(--ui-tips-triangle-size) + 1px)), calc(50% + var(--ui-tips-triangle-size)) calc(0% + (var(--ui-tips-triangle-size) + 1px)), 50% 0% ); } /* 悬浮在目标左上,箭头在框体 100% -16px, 100% 位置 */ .ui-tips-x[data-align="2-3"] { margin-left: 12px; margin-top: -6px; } .ui-tips-x[data-align="2-3"]::after { clip-path: polygon( calc(100% - 16px) calc(100% - (var(--ui-tips-triangle-size) + 1px)), calc(100% - (16px + var(--ui-tips-triangle-size)*2)) calc(100% - (var(--ui-tips-triangle-size) + 1px)), calc(100% - (16px + var(--ui-tips-triangle-size))) 100% ); } /* 悬浮在目标右上,箭头在框体 16px, 100% 位置 */ .ui-tips-x[data-align="1-4"] { margin-left: -12px; margin-top: -6px; } .ui-tips-x[data-align="1-4"]::after { clip-path: polygon( 16px calc(100% - (var(--ui-tips-triangle-size) + 1px)), calc(16px + var(--ui-tips-triangle-size)*2) calc(100% - (var(--ui-tips-triangle-size) + 1px)), calc(16px + var(--ui-tips-triangle-size)) 100% ); } /* 悬浮在目标左侧,箭头在框体 100%, 50% 位置 */ .ui-tips-x[data-align="8-6"] { margin-left: -6px; margin-top: 0; } .ui-tips-x[data-align="8-6"]::after { clip-path: polygon( calc(100% - (var(--ui-tips-triangle-size) + 1px)) calc(50% - var(--ui-tips-triangle-size)), calc(100% - (var(--ui-tips-triangle-size) + 1px)) calc(50% + var(--ui-tips-triangle-size)), 100% 50% ); } /* 悬浮在目标右侧,箭头在框体 0%, 50% 位置 */ .ui-tips-x[data-align="6-8"] { margin-left: 6px; margin-top: 0; } .ui-tips-x[data-align="6-8"]::after { clip-path: polygon( calc(0% + (var(--ui-tips-triangle-size) + 1px)) calc(50% - var(--ui-tips-triangle-size)), calc(0% + (var(--ui-tips-triangle-size) + 1px)) calc(50% + var(--ui-tips-triangle-size)), 0% 50% ); } /* 悬浮在目标左下侧,箭头在框体 100% - 16px, 0% 位置 */ .ui-tips-x[data-align="3-2"] { margin-left: 12px; margin-top: 6px; } .ui-tips-x[data-align="3-2"]::after { clip-path: polygon( calc(100% - 16px) calc(0% + (var(--ui-tips-triangle-size) + 1px)), calc(100% - (16px + var(--ui-tips-triangle-size)*2)) calc(0% + (var(--ui-tips-triangle-size) + 1px)), calc(100% - (16px + var(--ui-tips-triangle-size))) 0% ); } /* 悬浮在目标右下侧,箭头在框体 16px, 0% 位置*/ .ui-tips-x[data-align="4-1"] { margin-left: -12px; margin-top: 6px; } .ui-tips-x[data-align="4-1"]::after { clip-path: polygon( 16px calc(0% + (var(--ui-tips-triangle-size) + 1px)), calc(16px + var(--ui-tips-triangle-size)*2) calc(0% + (var(--ui-tips-triangle-size) + 1px)), calc(16px + var(--ui-tips-triangle-size)) 0% ); } /* 错误提示的tips效果 */ .ui-tips-error:not(.none) { animation: fadeIn var(--ui-animate-time, .2s), fallDown var(--ui-animate-time, .2s); } .ui-tips-error.ui-tips-x::before, .ui-tips-error.ui-tips-x::after { background: var(--ui-tips-error-bg); /*background-color: var(--ui-red, #eb4646);*/ } /* 浮层元素固定的样式 */ ui-float { position: fixed; top: 0; left: 0; z-index: 29; } ui-float:not([open]) { display: none; } /** * * @FollowText.css * @author zhangxinxu * @create 22-06-09 **/ /* * 结构如下: * <ui-float type="text success"></ui-float> * */ ui-float[type~="text"] { position: absolute; padding: .75rem 1rem; line-height: 1.25rem; font-size: .875rem; white-space: nowrap; animation: textPopup 1s both; -webkit-user-select: none; user-select: none; } @keyframes textPopup { 0%, 100% { opacity: 0; } 5% { opacity: 1; } 100% { transform: translateY(-50px); } } ui-float[type~="success"] { color: var(--ui-green, #1cad70); } ui-float[type~="error"] { color: var(--ui-red, #eb4646); } ui-float[type~="warning"] { color: var(--ui-orange, #f59b00); } /** * @hr.css * @description 分隔线样式效果 * @author zhangxinxu * @create 22-01-14 **/ hr { border-width: 0; margin: 1em 0; --ui-hr-border: var(--ui-border, #d0d0d5); } hr[v] { min-height: 100%; align-self: stretch; border-left: 1px solid var(--ui-hr-border); transform: scaleX(.51); margin: 0; } hr:not([color]) { border-color: var(--ui-hr-border); } hr:not([class*="ui-hr"]):not([v]), .ui-hr-solid, .ui-hr-weak, .ui-hr-dashed { border-top-width: 1px; border-style: solid; } .ui-hr-dashed { --mask-dashed: repeating-linear-gradient(to right, #000 0 var(--ui-hr-filled, 4px), transparent 0 calc(var(--ui-hr-filled, 4px) + var(--ui-hr-open, 6px))); } .ui-hr-dashed:not([data-content]) { -webkit-mask-image: var(--mask-dashed); mask-image: var(--mask-dashed); } .ui-hr-weak { -webkit-mask-image: linear-gradient(to right, transparent, black, transparent); mask-image: linear-gradient(to right, transparent, black, transparent); } .ui-hr-twill { padding: 3px; background: repeating-linear-gradient(135deg, var(--ui-hr-border) 0px, var(--ui-hr-border) 1px, transparent 1px, transparent 6px); } .ui-hr-twill-colorful { padding: 3px; background: linear-gradient(135deg, var(--ui-red, #eb4646), var(--ui-orange, #f59b00), var(--ui-green, #1cad70), var(--ui-blue, #2a80eb), var(--ui-purple, #c12cea)); --mask-image: repeating-linear-gradient(135deg, #000 0px, #000 1px, transparent 1px, transparent 6px); -webkit-mask-image: var(--mask-image); mask-image: var(--mask-image); } .ui-hr-wavy { color: var(--ui-hr-border); height: .5em; white-space: nowrap; letter-spacing: 100vw; padding-top: .5em; overflow: hidden; } .ui-hr-wavy::before { content: "\2000\2000"; /* 不支持浏览器实线代替 */ text-decoration: overline; /* 现代浏览器 */ text-decoration-style: wavy; } .ui-hr-shadow { padding-top: 10px; color: var(--ui-hr-border); box-shadow: inset 0 10px 10px -10px, inset 0 1px rgb(0 0 0 / 5%); margin-top: 0; } /* 带内容 */ hr[data-content] { color: var(--ui-gray, #a2a9b6); border: 0; background: none; font-size: 12px; padding: 1em 0; position: relative; overflow: hidden; } hr[data-content]::before { content: attr(data-content); position: absolute; padding: 0 1ch; line-height: 1px; border: solid var(--ui-hr-border); border-width: 0 99vw; width: fit-content; white-space: nowrap; left: 50%; transform: translateX(-50%); -webkit-text-fill-color: transparent; } /* 真实的内容,这么实现是方便实现 0.5px 尺寸 */ hr[data-content]::after { content: attr(data-content); position: absolute; padding: 0 1ch; line-height: 1px; left: 50%; transform: translateX(-50%); } .ui-hr-dashed[data-content]::before { border-image: repeating-linear-gradient(90deg, var(--ui-hr-border), var(--ui-hr-border) 1px, transparent 1px, transparent 2px) 0 15% / / 0 repeat; } hr[data-content][color]::before { border-left-color: inherit; border-right-color: inherit; } /* 尺寸处理 */ hr:not([class*="ui-hr"]):not([v]), hr[size="0.5"]:not([data-content]), hr[size=".5"]:not([data-content]) { transform: scaleY(0.51); } hr[size="2"]:not([data-content]), hr[size="2"]:not([data-content]) { transform: scaleY(2); } hr[size="0.5"][data-content]::before, hr[size=".5"][data-content]::before { transform: translateX(-50%) scaleY(0.51); } hr[size="2"][data-content]::before, hr[size="2"][data-content]::before { transform: translateX(-50%) scaleY(2); } /** * * @Input.css * @author zhangxinxu(.com) * @create 15-06-16 * @edit 17-06-13 19-07-18 version pure 20-04-03 version edge 22-01-25 version hope */ /* input基础变量 */ :root { --ui-input-height: var(--ui-component-height, 3rem); --ui-input-line-height: var(--ui-basic-height, 1.25rem); --ui-input-radius