fine-true
Version:
A small and beautiful Vue3 version of the UI Library
224 lines (205 loc) • 6.41 kB
text/less
/*
jiangbei 2021/06/28/22:39
*/
@keyframes button-shadow-opacity {
from {
opacity: 1;
}
to {
opacity: 0;
}
}
@setShadow: {
button-shadow-default: var(--fine-button-type-primary-color);
button-shadow-primary: var(--fine-button-type-primary-color);
button-shadow-success: var(--fine-button-type-success-color);
button-shadow-info: var(--fine-button-type-info-color);
button-shadow-warning: var(--fine-button-type-warning-color);
button-shadow-danger: var(--fine-button-type-danger-color);
};
.fine-button(@name; @color) {
@keyframes @name {
from {
box-shadow: 0 0 0.5px 0 @color;
}
to {
box-shadow: 0 0 0.5px 5.5px @color;
}
}
}
each(@setShadow, {
.fine-button(@key;@value)
});
.fine-button {
position: relative;
display: inline-block;
box-sizing: border-box;
margin: 0;
padding: 0;
text-align: center;
border-radius: var(--fine-button-border-radius);
-webkit-appearance: none;
-webkit-text-size-adjust: 100%;
cursor: pointer;
color: var(--fine-white);
white-space: nowrap;
a {
color: inherit;
}
> *:not([data-shadow]) {
position: relative;
}
/*type theme*/
&-type-default {
color: var(--fine-button-type-default-color);
background-color: var(--fine-button-type-default-background-color);
border: var(--fine-button-border-width) solid
var(--fine-button-type-default-border-color);
[data-shadow='active'] {
animation-name: button-shadow-default, button-shadow-opacity;
}
}
&-type-primary {
background-color: var(--fine-button-type-primary-background-color);
border: var(--fine-button-border-width) solid
var(--fine-button-type-primary-border-color);
[data-shadow='active'] {
animation-name: button-shadow-primary, button-shadow-opacity;
}
}
&-type-success {
background-color: var(--fine-button-type-success-background-color);
border: var(--fine-button-border-width) solid
var(--fine-button-type-success-border-color);
[data-shadow='active'] {
animation-name: button-shadow-success, button-shadow-opacity;
}
}
&-type-info {
background-color: var(--fine-button-type-info-background-color);
border: var(--fine-button-border-width) solid
var(--fine-button-type-info-border-color);
[data-shadow='active'] {
animation-name: button-shadow-info, button-shadow-opacity;
}
}
&-type-danger {
background-color: var(--fine-button-type-danger-background-color);
border: var(--fine-button-border-width) solid
var(--fine-button-type-danger-border-color);
[data-shadow='active'] {
animation-name: button-shadow-danger, button-shadow-opacity;
}
}
&-type-warning {
background-color: var(--fine-button-type-warning-background-color);
border: var(--fine-button-border-width) solid
var(--fine-button-type-warning-border-color);
[data-shadow='active'] {
animation-name: button-shadow-warning, button-shadow-opacity;
}
}
/*size*/
&-size-block {
width: var(--fine-button-size-block-width);
height: var(--fine-button-size-block-height);
padding: var(--fine-button-padding-size-block-y)
var(--fine-button-padding-size-block-x);
font-size: var(--fine-button-size-block-font-size);
line-height: var(--fine-button-size-block-line-height);
.fine-icon {
font-size: var(--fine-button-size-block-font-size);
}
}
&-size-large {
min-width: var(--fine-button-size-large-min-width);
height: var(--fine-button-size-large-height);
padding: var(--fine-button-padding-size-large-y)
var(--fine-button-padding-size-large-x);
font-size: var(--fine-button-size-large-font-size);
line-height: var(--fine-button-size-large-line-height);
.fine-icon {
font-size: var(--fine-button-size-large-font-size);
}
}
&-size-default {
height: var(--fine-button-size-default-height);
min-width: var(--fine-button-size-default-min-width);
padding: var(--fine-button-padding-size-default-y)
var(--fine-button-padding-size-default-x);
font-size: var(--fine-button-size-default-font-size);
line-height: var(--fine-button-size-default-line-height);
.fine-icon {
font-size: var(--fine-button-size-default-font-size);
}
}
&-size-small {
min-width: var(--fine-button-size-small-min-width);
height: var(--fine-button-size-small-height);
padding: var(--fine-button-padding-size-small-y)
var(--fine-button-padding-size-small-x);
font-size: var(--fine-button-size-small-font-size);
line-height: var(--fine-button-size-small-line-height);
.fine-icon {
font-size: var(--fine-button-size-small-font-size);
}
}
&-disabled {
opacity: var(--fine-button-disabled-opacity);
cursor: not-allowed;
.fine-icon {
cursor: not-allowed;
}
}
&-plain {
background-color: var(--fine-button-plain-background-color);
&.fine-button-type-primary {
color: var(--fine-button-type-primary-background-color);
}
&.fine-button-type-success {
color: var(--fine-button-type-success-background-color);
}
&.fine-button-type-info {
color: var(--fine-button-type-info-background-color);
}
&.fine-button-type-danger {
color: var(--fine-button-type-danger-background-color);
}
&.fine-button-type-warning {
color: var(--fine-button-type-warning-background-color);
}
}
&-hairline {
border-width: 0;
&::after {
position: absolute;
box-sizing: border-box;
content: ' ';
pointer-events: none;
top: -50%;
right: -50%;
bottom: -50%;
left: -50%;
border-width: 1px;
border-style: solid;
border-color: inherit;
transform: scale(0.5);
border-radius: calc(var(--fine-button-border-radius) * 2);
}
&.fine-button-round::after {
border-radius: var(--fine-button-round-border-radius);
}
&.fine-button-square::after {
border-radius: 0;
}
}
&-dashed {
border-style: dashed;
}
&-round {
border-radius: var(--fine-button-round-border-radius);
}
&-square {
border-radius: 0;
}
}