vui-design
Version:
A high quality UI Toolkit based on Vue.js
258 lines (229 loc) • 5.63 kB
text/less
@vui-radio: ~"@{vui}-radio";
.@{vui-radio} {
cursor:pointer;
display:inline-flex;
align-items:center;
max-width:100%;
vertical-align:middle;
color:@radio-font-color;
line-height:@radio-line-height;
white-space:nowrap;
&-input {
position:relative;
display:block;
border:1px solid @radio-border-color;
border-radius:@radio-border-radius;
background-color:@radio-background-color;
transition:all @transition-duration @transition-timing-function;
&:before {
content:"";
position:absolute;
top:50%;
left:50%;
display:block;
border-radius:@radio-border-radius;
background-color:@radio-checkmark-color;
opacity:0;
transform:scale(0);
transition:all @transition-duration @transition-timing-function;
}
input[type="radio"] {
position:absolute;
top:0;
bottom:0;
left:0;
right:0;
z-index:-1;
cursor:inherit;
display:block;
width:100%;
height:100%;
margin:0;
padding:0;
opacity:0;
appearance:none;
}
}
&-label {
flex:1;
display:block;
overflow:hidden;
white-space:nowrap;
text-overflow:ellipsis;
}
// size
&-small {
font-size:@radio-font-size-sm;
}
&-small &-input {
width:@radio-size-sm;
height:@radio-size-sm;
&:before {
width:@radio-size-sm - 8px;
height:@radio-size-sm - 8px;
margin-top:-((@radio-size-sm - 8px) / 2);
margin-left:-((@radio-size-sm - 8px) / 2);
}
}
&-small &-label {
padding-left:@radio-size-sm - 8px;
}
&-medium {
font-size:@radio-font-size-md;
}
&-medium &-input {
width:@radio-size-md;
height:@radio-size-md;
&:before {
width:@radio-size-md - 8px;
height:@radio-size-md - 8px;
margin-top:-((@radio-size-md - 8px) / 2);
margin-left:-((@radio-size-md - 8px) / 2);
}
}
&-medium &-label {
padding-left:@radio-size-md - 8px;
}
&-large {
font-size:@radio-font-size-lg;
}
&-large &-input {
width:@radio-size-lg;
height:@radio-size-lg;
&:before {
width:@radio-size-lg - 8px;
height:@radio-size-lg - 8px;
margin-top:-((@radio-size-lg - 8px) / 2);
margin-left:-((@radio-size-lg - 8px) / 2);
}
}
&-large &-label {
padding-left:@radio-size-lg - 8px;
}
// hovered
&:hover &-input {
border-color:@radio-hover-border-color;
}
// focused
&-focused &-input {
border-color:@radio-hover-border-color;
}
// checked
&-checked &-input,
&-checked:hover &-input {
border-color:@radio-checked-border-color;
&:before {
opacity:1;
transform:scale(1);
}
}
// disabled
&-disabled {
cursor:not-allowed;
color:@radio-disabled-font-color;
}
&-disabled &-input,
&-disabled:hover &-input {
border-color:@radio-disabled-border-color;
background-color:@radio-disabled-background-color;
&:before {
background-color:@radio-disabled-checkmark-color;
}
}
// button
&-button {
position:relative;
cursor:pointer;
display:inline-block;
border:@radio-button-border-width solid @radio-button-border-color;
border-radius:@radio-button-border-radius;
background-color:@radio-button-background-color;
margin:0;
vertical-align:middle;
color:@radio-button-font-color;
font-weight:400;
white-space:nowrap;
text-align:center;
transition:all @transition-duration @transition-timing-function;
&-input {
position:absolute;
top:0;
bottom:0;
left:0;
right:0;
z-index:-1;
display:block;
width:100%;
height:100%;
margin:0;
padding:0;
opacity:0;
input[type="radio"] {
position:absolute;
top:0;
bottom:0;
left:0;
right:0;
cursor:inherit;
display:block;
width:100%;
height:100%;
margin:0;
padding:0;
opacity:0;
appearance:none;
}
}
// size
&-small {
height:@radio-button-size-sm;
padding:0 @radio-button-padding-size-sm;
font-size:@radio-button-font-size-sm;
line-height:@radio-button-size-sm - @radio-button-border-width * 2;
}
&-medium {
height:@radio-button-size-md;
padding:0 @radio-button-padding-size-sm;
font-size:@radio-button-font-size-md;
line-height:@radio-button-size-md - @radio-button-border-width * 2;
}
&-large {
height:@radio-button-size-lg;
padding:0 @radio-button-padding-size-lg;
font-size:@radio-button-font-size-lg;
line-height:@radio-button-size-lg - @radio-button-border-width * 2;
}
// hovered
&:hover {
z-index:1;
color:@radio-button-hover-font-color;
}
// focused
&-focused {
z-index:2 ;
color:@radio-button-hover-font-color ;
}
// checked
&-checked {
z-index:3 ;
border-color:@radio-button-checked-border-color;
color:@radio-button-checked-font-color ;
}
// focused & checked
&-focused&-checked {
z-index:4 ;
}
// disabled
&-disabled {
z-index:0 ;
cursor:not-allowed;
border-color:@radio-button-disabled-border-color;
background-color:@radio-button-disabled-background-color;
color:@radio-button-disabled-font-color !important;
}
// checked & disabled
&-checked&-disabled {
background-color:shade(@radio-button-disabled-background-color, 5%);
}
}
}