cloud-ui.vusion
Version:
Vusion Cloud UI
126 lines (113 loc) • 3.89 kB
CSS
/* @TODO: 使用简化扩展方案 */
$popup-background-color: white;
$popup-background-head-color: white;
$popup-border-color: $brand-secondary;
$popup-arrow-size: 8px;
$popup-outer-arrow-size: calc($popup-arrow-size + 1px);
$popup-arrow-offset: 16px;
.root {
position: relative;
min-width: 140px;
background: $popup-background-color;
border: 1px solid $popup-border-color;
z-index: $z-index-popper;
}
.head {
padding: 6px 10px;
background: $popup-background-head-color;
border-bottom: 1px solid $popup-border-color;
}
.title {
font-weight: bold;
}
.body {
padding: 6px 10px;
}
.foot {
border-top: 1px solid $popup-border-color;
padding: 6px 10px;
}
.arrow {
display: block;
position: absolute;
border: $popup-arrow-size solid transparent;
}
.arrow::before {
content: '';
display: block;
position: absolute;
z-index: -1;
border: $popup-outer-arrow-size solid transparent;
}
.root[x-placement^="top"] { margin-bottom: $popup-arrow-size; }
.root[x-placement^="top"] .arrow {
bottom: -$popup-arrow-size;
margin-left: -$popup-arrow-size;
border-width: $popup-arrow-size $popup-arrow-size 0;
border-top-color: $popup-background-color;
}
.root[x-placement^="top"] .arrow::before {
bottom: -1px;
left: -1px;
margin-left: -$popup-arrow-size;
border-width: $popup-outer-arrow-size $popup-outer-arrow-size 0;
border-top-color: $popup-border-color;
}
.root[x-placement="top-start"] .arrow { left: $popup-arrow-offset; }
.root[x-placement="top"] .arrow { left: 50%; }
.root[x-placement="top-end"] .arrow { right: $popup-arrow-offset; }
.root[x-placement^="bottom"] { margin-top: $popup-arrow-size; }
.root[x-placement^="bottom"] .arrow {
top: -$popup-arrow-size;
margin-left: -$popup-arrow-size;
border-width: 0 $popup-arrow-size $popup-arrow-size;
border-bottom-color: $popup-background-color;
}
.root[x-placement^="bottom"] .arrow::before {
top: -1px;
left: -1px;
margin-left: -$popup-arrow-size;
border-width: 0 $popup-outer-arrow-size $popup-outer-arrow-size;
border-bottom-color: $popup-border-color;
}
.root[x-placement="bottom-start"] .arrow { left: $popup-arrow-offset; }
.root[x-placement="bottom"] .arrow { left: 50%; }
.root[x-placement="bottom-end"] .arrow { right: $popup-arrow-offset; }
.root[x-placement^="left"] { margin-right: $popup-arrow-size; }
.root[x-placement^="left"] .arrow {
right: -$popup-arrow-size;
margin-top: -$popup-arrow-size;
border-width: $popup-arrow-size 0 $popup-arrow-size $popup-arrow-size;
border-left-color: $popup-background-color;
}
.root[x-placement^="left"] .arrow::before {
top: -1px;
right: -1px;
margin-top: -$popup-arrow-size;
border-width: $popup-outer-arrow-size 0 $popup-outer-arrow-size $popup-outer-arrow-size;
border-left-color: $popup-border-color;
}
.root[x-placement="left-start"] .arrow { top: $popup-arrow-offset; }
.root[x-placement="left"] .arrow { top: 50%; }
.root[x-placement="left-end"] .arrow { bottom: $popup-arrow-offset; }
.root[x-placement^="right"] { margin-left: $popup-arrow-size; }
.root[x-placement^="right"] .arrow {
left: -$popup-arrow-size;
margin-top: -$popup-arrow-size;
border-width: $popup-arrow-size $popup-arrow-size $popup-arrow-size 0;
border-right-color: $popup-background-color;
}
.root[x-placement^="right"] .arrow::before {
top: -1px;
left: -1px;
margin-top: -$popup-arrow-size;
border-width: $popup-outer-arrow-size $popup-outer-arrow-size $popup-outer-arrow-size 0;
border-right-color: $popup-border-color;
}
.root[x-placement="right-start"] .arrow { top: $popup-arrow-offset; }
.root[x-placement="right"] .arrow { top: 50%; }
.root[x-placement="right-end"] .arrow { bottom: $popup-arrow-offset; }
.root[merge-borders] .arrow ~ * {
border: none;
box-shadow: none;
}