84 lines
1.8 KiB
SCSS
84 lines
1.8 KiB
SCSS
@use '../_styles/_variables.scss' as *;
|
|
@use 'sass:color';
|
|
|
|
$popup-prefix: '#{$prefix}-popup';
|
|
|
|
.#{$popup-prefix} {
|
|
position: absolute;
|
|
background-color: $bg-color-container;
|
|
color: $text-color-base;
|
|
font-size: 13px;
|
|
border-radius: $border-radius;
|
|
z-index: 1000;
|
|
box-sizing: border-box;
|
|
text-align: center;
|
|
box-shadow: $shadow-popup, $shadow-inset-top, $shadow-inset-right, $shadow-inset-bottom, $shadow-inset-left;
|
|
&-arrow {
|
|
position: absolute;
|
|
width: 8px;
|
|
height: 8px;
|
|
z-index: 1;
|
|
|
|
&::before {
|
|
content: '';
|
|
position: absolute;
|
|
inset: 0;
|
|
background-color: $bg-color-container;
|
|
transform: rotate(45deg);
|
|
transform-origin: center;
|
|
}
|
|
}
|
|
|
|
&-content {
|
|
padding: 4px 8px;
|
|
}
|
|
|
|
// 上方弹出,箭头在底部
|
|
&[data-popup-placement^='top'] > &-arrow {
|
|
bottom: -4px;
|
|
}
|
|
&[data-popup-placement^='top'] > &-arrow::before {
|
|
box-shadow: $shadow-inset-left, $shadow-inset-bottom;
|
|
}
|
|
|
|
// 下方弹出,箭头在顶部
|
|
&[data-popup-placement^='bottom'] > &-arrow {
|
|
top: -4px;
|
|
}
|
|
&[data-popup-placement^='bottom'] > &-arrow::before {
|
|
box-shadow: $shadow-inset-top, $shadow-inset-right;
|
|
}
|
|
|
|
// 左侧弹出,箭头在右侧
|
|
&[data-popup-placement^='left'] > &-arrow {
|
|
right: -4px;
|
|
}
|
|
&[data-popup-placement^='left'] > &-arrow::before {
|
|
box-shadow: $shadow-inset-left, $shadow-inset-top;
|
|
}
|
|
|
|
// 右侧弹出,箭头在左侧
|
|
&[data-popup-placement^='right'] > &-arrow {
|
|
left: -4px;
|
|
}
|
|
&[data-popup-placement^='right'] > &-arrow::before {
|
|
box-shadow: $shadow-inset-right, $shadow-inset-bottom;
|
|
}
|
|
}
|
|
|
|
/* 普通淡入淡出动画 */
|
|
.popup-fade-enter-from,
|
|
.popup-fade-leave-to {
|
|
opacity: 0;
|
|
}
|
|
|
|
.popup-fade-enter-to,
|
|
.popup-fade-leave-from {
|
|
opacity: 1;
|
|
}
|
|
|
|
.popup-fade-enter-active,
|
|
.popup-fade-leave-active {
|
|
transition: opacity 0.2s ease;
|
|
}
|