@use 'sass:map'; @use './mixins/mixins.scss' as *; $tn-inner-sizes: 'sm', 'lg', 'xl'; $suspend-button-sizes: () !default; $suspend-button-sizes: map.merge( ( 'sm': ( size: 80rpx, icon-size: 50rpx, ), '': ( size: 100rpx, icon-size: 60rpx, ), 'lg': ( size: 120rpx, icon-size: 80rpx, ), 'xl': ( size: 140rpx, icon-size: 90rpx, ), ), $suspend-button-sizes ); @include b(suspend-button) { position: absolute; display: flex; align-items: center; justify-content: center; line-height: 1; width: map-get(map-get($suspend-button-sizes, ''), size); height: map-get(map-get($suspend-button-sizes, ''), size); @include e(icon) { font-size: map-get(map-get($suspend-button-sizes, ''), icon-size); } /* 动画 */ @include m(float) { animation: suspend-button-float 4s ease-in-out infinite; } /* 尺寸 */ @each $size in $tn-inner-sizes { @include m($size) { width: map-get(map-get($suspend-button-sizes, $size), size); height: map-get(map-get($suspend-button-sizes, $size), size); @include e(icon) { font-size: map-get(map-get($suspend-button-sizes, $size), icon-size); } } } /* 绝对位置 */ @include m(fixed) { position: fixed; } /* 形状 */ @include m(circle) { border-radius: 50%; } @include m(square) { border-radius: 8rpx; } } /* 上下漂浮的动画 */ @keyframes suspend-button-float { 0% { transform: translateY(0); } 50% { transform: translateY(-30rpx); } 100% { transform: translateY(0); } }