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