@arco-design/web-vue
Version:
Arco Design Vue 2.0: A Vue.js 3 UI Library
228 lines (196 loc) • 5.38 kB
text/less
@preview-prefix-cls: ~'@{prefix}-image-preview';
.center() {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
.@{preview-prefix-cls} {
position: fixed;
top: 0;
left: 0;
z-index: @z-index-image-preview;
width: 100%;
height: 100%;
&-hide {
display: none;
}
&-mask,
&-wrapper {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
&-mask {
background-color: @image-preview-color-mask-bg;
}
&-img-container {
width: 100%;
height: 100%;
text-align: center;
&::before {
display: inline-block;
width: 0;
height: 100%;
vertical-align: middle;
content: '';
}
.@{preview-prefix-cls}-img {
display: inline-block;
max-width: 100%;
max-height: 100%;
vertical-align: middle;
cursor: grab;
user-select: none;
&.@{image-prefix-cls}-preview-img-moving {
cursor: grabbing;
}
}
}
&-scale-value {
box-sizing: border-box;
padding: @image-preview-spacing-scale-value-vertical
@image-preview-spacing-scale-value-horizontal;
color: @image-preview-color-scale-value-text;
font-size: @image-preview-font-size-scale-value;
line-height: initial;
background-color: @image-preview-color-scale-value-bg;
.center();
}
&-toolbar {
position: absolute;
bottom: @image-preview-position-toolbar-bottom;
left: 50%;
display: flex;
align-items: flex-start;
padding: @image-preview-spacing-toolbar-vertical
@image-preview-spacing-toolbar-horizontal;
background-color: @image-preview-color-toolbar-bg;
border-radius: @image-preview-radius-toolbar;
transform: translateX(-50%);
&-action {
display: flex;
align-items: center;
color: @image-preview-color-action-text;
font-size: @image-preview-font-size-action;
background-color: @image-preview-color-action-bg;
border-radius: @image-preview-radius-action;
cursor: pointer;
&:not(:last-of-type) {
margin-right: @image-preview-margin-action-right;
}
&:hover {
color: @image-preview-color-action_hover-text;
background-color: @image-preview-color-action_hover-bg;
}
&-disabled,
&-disabled:hover {
color: @image-preview-color-action_disabled-text;
background-color: @image-preview-color-action_disabled-bg;
cursor: not-allowed;
}
&-name {
padding-right: @image-preview-spacing-action-name-right;
font-size: @image-preview-font-size-action-name;
}
&-content {
padding: @image-preview-padding-action-content;
line-height: 1;
}
}
}
&-loading {
display: flex;
align-items: center;
justify-content: center;
box-sizing: border-box;
width: @image-preview-size-loading-width;
height: @image-preview-size-loading-height;
padding: @image-preview-spacing-loading-padding;
color: @image-preview-color-loading-text;
font-size: @image-preview-font-size-loading;
background-color: @image-preview-color-loading-bg;
border-radius: @image-preview-radius-loading;
.center();
}
&-close-btn {
position: absolute;
top: @image-preview-position-close-btn-top;
right: @image-preview-position-close-btn-right;
display: flex;
align-items: center;
justify-content: center;
width: @image-preview-size-close-btn-width;
height: @image-preview-size-close-btn-width;
color: @image-preview-color-close-btn-text;
font-size: @image-preview-size-close-icon;
line-height: @image-preview-size-close-btn-width;
text-align: center;
background: @image-preview-color-close-btn-bg;
border-radius: 50%;
cursor: pointer;
}
&-arrow {
&-left,
&-right {
position: absolute;
z-index: 2;
display: flex;
align-items: center;
justify-content: center;
width: @image-preview-arrow-size;
height: @image-preview-arrow-size;
color: @image-preview-arrow-color-icon;
background-color: @image-preview-arrow-color-bg;
border-radius: 50%;
cursor: pointer;
> svg {
color: @image-preview-arrow-color-icon;
font-size: @image-preview-arrow-font-size;
}
&:hover {
background-color: @image-preview-arrow-color-bg_hover;
}
}
&-left {
top: 50%;
left: @image-preview-arrow-position;
transform: translateY(-50%);
}
&-right {
top: 50%;
right: @image-preview-arrow-position;
transform: translateY(-50%);
}
&-disabled {
color: @image-preview-arrow-color-icon_disabled;
background-color: @image-preview-arrow-color-bg_disabled;
cursor: not-allowed;
> svg {
color: @image-preview-arrow-color-icon_disabled;
}
&:hover {
background-color: @image-preview-arrow-color-bg_disabled;
}
}
}
}
/** mask 动效 */
.image-fade-enter-from,
.image-fade-leave-to {
opacity: 0;
}
.image-fade-enter-to,
.image-fade-leave-from {
opacity: 1;
}
.image-fade-enter-active {
transition: opacity @transition-duration-4
@transition-timing-function-overshoot;
}
.image-fade-leave-active {
transition: opacity @transition-duration-4
@transition-timing-function-overshoot;
}