@import '../../style/themes/index'; @import '../../style/mixins/index'; @carousel-prefix-cls: ~'@{ant-prefix}-carousel'; @carousel-dot-margin: 4px; @carousel-arrow-size: 16px; @carousel-arrow-offset: 12px; @carousel-arrow-bg: fade(#000, 20%); @carousel-arrow-bg-hover: fade(#000, 30%); @carousel-arrow-color: @white; .@{carousel-prefix-cls} { .reset-component(); .slick-slider { position: relative; display: block; box-sizing: border-box; touch-action: pan-y; -webkit-touch-callout: none; -webkit-tap-highlight-color: transparent; } .slick-list { position: relative; display: block; margin: 0; padding: 0; overflow: hidden; &:focus { outline: none; } &.dragging { cursor: pointer; } .slick-slide { pointer-events: none; // https://github.com/ant-design/ant-design/issues/23294 input.@{ant-prefix}-radio-input, input.@{ant-prefix}-checkbox-input { visibility: hidden; } &.slick-active { pointer-events: auto; input.@{ant-prefix}-radio-input, input.@{ant-prefix}-checkbox-input { visibility: visible; } } // fix Carousel content height not match parent node // when children is empty node // https://github.com/ant-design/ant-design/issues/25878 > div > div { vertical-align: bottom; } } } .slick-slider .slick-track, .slick-slider .slick-list { transform: translate3d(0, 0, 0); touch-action: pan-y; } .slick-track { position: relative; top: 0; left: 0; display: block; &::before, &::after { display: table; content: ''; } &::after { clear: both; } .slick-loading & { visibility: hidden; } } .slick-slide { display: none; float: left; height: 100%; min-height: 1px; img { display: block; } &.slick-loading img { display: none; } &.dragging img { pointer-events: none; } } .slick-initialized .slick-slide { display: block; } .slick-loading .slick-slide { visibility: hidden; } .slick-vertical .slick-slide { display: block; height: auto; } .slick-arrow.slick-hidden { display: none; } // Arrows .slick-prev, .slick-next { position: absolute; top: 50%; z-index: 1; display: inline-block; width: @carousel-arrow-size; height: @carousel-arrow-size; margin: 0; padding: 0; color: @white; font-size: 0; // keep no text line-height: 0; background: transparent; border: 0; border-radius: 0; outline: none; transform: translateY(-50%); cursor: pointer; opacity: 0.3; transition: color 0.3s, opacity 0.3s; &::after { position: absolute; top: 2.3px; display: inline-block; box-sizing: border-box; width: 11.3px; height: 11.3px; border: 0 solid currentcolor; border-radius: 1px; opacity: 1; content: ''; inset-inline-start: 2.3px; border-inline-start-width: 2px; border-block-start-width: 2px; } &:hover, &:focus { color: @white; outline: none; opacity: 1; } &.slick-disabled { display: none; } } .slick-prev { right: auto; left: @carousel-arrow-offset; &::after { transform: rotate(-45deg); } } .slick-next { right: @carousel-arrow-offset; left: auto; &::after { transform: rotate(135deg); } } // Vertical mode (dots on left or right) .slick-vertical { .slick-prev { top: @carousel-dot-margin * 3; right: auto; left: 50%; transform: translateX(-50%); &::after { transform: rotate(45deg); } } .slick-next { top: auto; right: auto; bottom: @carousel-dot-margin * 3; left: 50%; transform: translateX(-50%); &::after { transform: rotate(-135deg); } } } .slick-dots { position: absolute; right: 0; bottom: 0; left: 0; z-index: 15; display: flex !important; justify-content: center; margin-right: 15%; margin-bottom: 0; margin-left: 15%; padding-left: 0; list-style: none; &-bottom { bottom: 12px; } &-top { top: 12px; bottom: auto; } li { position: relative; display: inline-block; flex: 0 1 auto; box-sizing: content-box; width: @carousel-dot-width; height: @carousel-dot-height; margin: 0 @carousel-dot-margin; padding: 0; text-align: center; text-indent: -999px; vertical-align: top; transition: all 0.5s; button { position: relative; display: block; width: 100%; height: @carousel-dot-height; padding: 0; color: transparent; font-size: 0; background: @component-background; border: 0; border-radius: 1px; outline: none; cursor: pointer; opacity: 0.3; transition: all 0.5s; &:hover, &:focus { opacity: 0.75; } &::after { position: absolute; top: -@carousel-dot-margin; right: -@carousel-dot-margin; bottom: -@carousel-dot-margin; left: -@carousel-dot-margin; content: ''; } } &.slick-active { width: @carousel-dot-active-width; & button { background: @component-background; opacity: 1; } &:hover, &:focus { opacity: 1; } } } } } .@{ant-prefix}-carousel-vertical { .slick-dots { top: 50%; bottom: auto; flex-direction: column; width: @carousel-dot-height; height: auto; margin: 0; transform: translateY(-50%); &-left { right: auto; left: 12px; } &-right { right: 12px; left: auto; } li { width: @carousel-dot-height; height: @carousel-dot-width; margin: @carousel-dot-margin 0; vertical-align: baseline; button { width: @carousel-dot-height; height: @carousel-dot-width; } &.slick-active { width: @carousel-dot-height; height: @carousel-dot-active-width; button { width: @carousel-dot-height; height: @carousel-dot-active-width; } } } } } @import './rtl';