@arco-design/web-vue
Version:
Arco Design Vue 2.0: A Vue.js 3 UI Library
143 lines (121 loc) • 3.21 kB
text/less
@import './token.less';
@avatar-prefix-cls: ~'@{prefix}-avatar';
.@{avatar-prefix-cls} {
position: relative;
display: inline-flex;
align-items: center;
box-sizing: border-box;
width: @avatar-size-default;
height: @avatar-size-default;
color: @avatar-color-text;
font-size: @avatar-font-size-text;
white-space: nowrap;
vertical-align: middle;
background-color: @avatar-color-bg;
&-circle {
border-radius: @avatar-circle-border-radius;
}
&-circle &-image {
overflow: hidden;
border-radius: @avatar-circle-border-radius;
}
&-square {
border-radius: @avatar-square-border-radius;
}
&-square &-image {
overflow: hidden;
border-radius: @avatar-square-border-radius;
}
&-text {
position: absolute;
left: 50%;
font-weight: @avatar-font-weight-text;
// 避免继承行高导致的文字不居中
line-height: 1;
transform: translateX(-50%);
transform-origin: 0 center;
}
&-image {
display: inline-block;
width: 100%;
height: 100%;
&-icon {
display: flex;
align-items: center;
justify-content: center;
width: 100%;
height: 100%;
}
img,
picture {
width: 100%;
height: 100%;
}
}
&-trigger-icon-button {
position: absolute;
right: -@avatar-spacing-trigger-button-right;
bottom: -@avatar-spacing-trigger-button-bottom;
z-index: 1;
width: @avatar-size-trigger-button;
height: @avatar-size-trigger-button;
color: @avatar-color-trigger-icon-button;
font-size: @avatar-size-trigger-icon;
line-height: @avatar-size-trigger-button;
text-align: center;
background-color: @avatar-color-trigger-button-bg;
border-radius: @avatar-border-trigger-button-radius;
transition: background-color @transition-duration-1
@transition-timing-function-linear;
}
&-trigger-icon-mask {
position: absolute;
top: 0;
left: 0;
z-index: 0;
display: flex;
align-items: center;
justify-content: center;
width: 100%;
height: 100%;
color: @avatar-color-trigger-mask-icon;
font-size: 16px;
background-color: fade(@gray-10, @avatar-opacity-trigger-mask-bg);
border-radius: @avatar-square-border-radius;
opacity: 0;
transition: all @transition-duration-1 @transition-timing-function-linear;
}
&-circle &-trigger-icon-mask {
border-radius: @avatar-circle-border-radius;
}
&-with-trigger-icon {
cursor: pointer;
}
&-with-trigger-icon:hover &-trigger-icon-mask {
z-index: 2;
opacity: 1;
}
&-with-trigger-icon:hover &-trigger-icon-button {
background-color: @avatar-color-trigger-button-bg_hover;
}
// Group
&-group {
display: inline-block;
line-height: 0;
&-max-count-avatar {
color: @avatar-color-max-count-text;
font-size: @avatar-font-size-max-count;
cursor: default;
}
}
&-group & {
border: @avatar-group-item-border-width solid
@avatar-color-group-item-border;
}
&-group &:not(:first-child) {
margin-left: @avatar-group-item-margin-left;
}
&-group-popover &:not(:first-child) {
margin-left: @avatar-group-popover-item-spacing;
}
}