lu2
Version:
Simple and flexible UI component library based on native HTML and JavaScript
106 lines (92 loc) • 3.29 kB
CSS
@charset "UTF-8";
/**
*
* @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) ;
}
@media (prefers-reduced-motion: reduce) {
[is="ui-checkbox"],
[is="ui-checkbox"]::after {
transition: none;
}
}