tdesign-mobile-vue
Version:
tdesign-mobile-vue
185 lines (150 loc) • 3.35 kB
text/less
@import "../../../base.less";
@import "./_var.less";
@import "./_mixin.less";
.@{prefix}-radio {
position: relative;
display: inline-flex;
vertical-align: middle;
font-size: @radio-font-size;
background: @radio-bg-color;
&:focus {
outline: 0;
}
&--block {
display: flex;
padding: @radio-vertical-padding;
}
&--right {
flex-direction: row-reverse;
}
&__icon {
position: relative;
margin-top: calc((@radio-label-line-height - @radio-icon-size) / 2);
width: @radio-icon-size;
height: @radio-icon-size;
font-size: @radio-icon-size;
color: @radio-icon-color;
overflow: hidden;
&:empty {
display: none;
}
&--left {
margin-right: 8px;
}
&--checked {
color: @radio-icon-checked-color;
}
&--disabled {
cursor: not-allowed;
color: @radio-icon-disabled-color;
}
&-circle {
width: @radio-icon-size;
height: @radio-icon-size;
box-sizing: border-box;
&::after {
content: "";
width: calc(200% - 3px);
height: calc(200% - 3px);
border-radius: 50%;
border: 3px solid @radio-icon-color;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%) scale(.5);
box-sizing: border-box;
}
&--disabled::after {
background: @radio-icon-disabled-bg-color;
}
}
&-dot {
width: calc((@radio-icon-size - 3px) * 2);
height: calc((@radio-icon-size - 3px) * 2);
border: 3px solid @radio-icon-checked-color;
border-radius: 50%;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%) scale(.5);
box-sizing: border-box;
display: flex;
align-items: center;
justify-content: center;
&::after {
content: "";
display: block;
width: @radio-icon-size;
height: @radio-icon-size;
background: @radio-icon-checked-color;
border-radius: 50%;
}
&--disabled {
border-color: @radio-icon-disabled-color;
&::after {
background: @radio-icon-disabled-color;
}
}
}
}
&__image {
line-height: @radio-icon-size;
}
&-icon__image {
height: @radio-icon-size;
width: @radio-icon-size;
vertical-align: sub;
}
&__content {
flex: 1;
&:empty {
display: none;
}
}
&__title {
.limit-title-row();
color: @radio-label-color;
line-height: @radio-label-line-height;
&--disabled {
cursor: not-allowed;
color: @radio-label-disabled-color;
}
}
&__description {
.limit-title-row();
color: @radio-content-color;
font-size: 14px;
line-height: @radio-content-line-height;
&--disabled {
cursor: not-allowed;
color: @radio-content-disabled-color;
}
&:empty {
display: none;
}
}
&__title + &__description {
margin-top: 4px;
}
&__border {
position: absolute;
bottom: 0;
height: 1px;
background: @radio-border-color;
left: 48px;
right: 0;
transform: scaleY(.5);
&--right {
left: 16px;
}
}
// mobile vue
&__original {
opacity: 0;
width: 0;
height: 0;
}
&__icon-wrap {
display: block ;
}
}