index.less 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304
  1. @import '../../style/themes/index';
  2. @import '../../style/mixins/index';
  3. @carousel-prefix-cls: ~'@{ant-prefix}-carousel';
  4. @carousel-dot-margin: 4px;
  5. .@{carousel-prefix-cls} {
  6. .reset-component();
  7. .slick-slider {
  8. position: relative;
  9. display: block;
  10. box-sizing: border-box;
  11. touch-action: pan-y;
  12. -webkit-touch-callout: none;
  13. -webkit-tap-highlight-color: transparent;
  14. }
  15. .slick-list {
  16. position: relative;
  17. display: block;
  18. margin: 0;
  19. padding: 0;
  20. overflow: hidden;
  21. &:focus {
  22. outline: none;
  23. }
  24. &.dragging {
  25. cursor: pointer;
  26. }
  27. .slick-slide {
  28. pointer-events: none;
  29. // https://github.com/ant-design/ant-design/issues/23294
  30. input.@{ant-prefix}-radio-input,
  31. input.@{ant-prefix}-checkbox-input {
  32. visibility: hidden;
  33. }
  34. &.slick-active {
  35. pointer-events: auto;
  36. input.@{ant-prefix}-radio-input,
  37. input.@{ant-prefix}-checkbox-input {
  38. visibility: visible;
  39. }
  40. }
  41. // fix Carousel content height not match parent node
  42. // when children is empty node
  43. // https://github.com/ant-design/ant-design/issues/25878
  44. > div > div {
  45. vertical-align: bottom;
  46. }
  47. }
  48. }
  49. .slick-slider .slick-track,
  50. .slick-slider .slick-list {
  51. transform: translate3d(0, 0, 0);
  52. touch-action: pan-y;
  53. }
  54. .slick-track {
  55. position: relative;
  56. top: 0;
  57. left: 0;
  58. display: block;
  59. &::before,
  60. &::after {
  61. display: table;
  62. content: '';
  63. }
  64. &::after {
  65. clear: both;
  66. }
  67. .slick-loading & {
  68. visibility: hidden;
  69. }
  70. }
  71. .slick-slide {
  72. display: none;
  73. float: left;
  74. height: 100%;
  75. min-height: 1px;
  76. img {
  77. display: block;
  78. }
  79. &.slick-loading img {
  80. display: none;
  81. }
  82. &.dragging img {
  83. pointer-events: none;
  84. }
  85. }
  86. .slick-initialized .slick-slide {
  87. display: block;
  88. }
  89. .slick-loading .slick-slide {
  90. visibility: hidden;
  91. }
  92. .slick-vertical .slick-slide {
  93. display: block;
  94. height: auto;
  95. }
  96. .slick-arrow.slick-hidden {
  97. display: none;
  98. }
  99. // Arrows
  100. .slick-prev,
  101. .slick-next {
  102. position: absolute;
  103. top: 50%;
  104. display: block;
  105. width: 20px;
  106. height: 20px;
  107. margin-top: -10px;
  108. padding: 0;
  109. color: transparent;
  110. font-size: 0;
  111. line-height: 0;
  112. background: transparent;
  113. border: 0;
  114. outline: none;
  115. cursor: pointer;
  116. &:hover,
  117. &:focus {
  118. color: transparent;
  119. background: transparent;
  120. outline: none;
  121. &::before {
  122. opacity: 1;
  123. }
  124. }
  125. &.slick-disabled::before {
  126. opacity: 0.25;
  127. }
  128. }
  129. .slick-prev {
  130. left: -25px;
  131. &::before {
  132. content: '←';
  133. }
  134. }
  135. .slick-next {
  136. right: -25px;
  137. &::before {
  138. content: '→';
  139. }
  140. }
  141. // Dots
  142. .slick-dots {
  143. position: absolute;
  144. right: 0;
  145. bottom: 0;
  146. left: 0;
  147. z-index: 15;
  148. display: flex !important;
  149. justify-content: center;
  150. margin-right: 15%;
  151. margin-bottom: 0;
  152. margin-left: 15%;
  153. padding-left: 0;
  154. list-style: none;
  155. &-bottom {
  156. bottom: 12px;
  157. }
  158. &-top {
  159. top: 12px;
  160. bottom: auto;
  161. }
  162. li {
  163. position: relative;
  164. display: inline-block;
  165. flex: 0 1 auto;
  166. box-sizing: content-box;
  167. width: @carousel-dot-width;
  168. height: @carousel-dot-height;
  169. margin: 0 @carousel-dot-margin;
  170. padding: 0;
  171. text-align: center;
  172. text-indent: -999px;
  173. vertical-align: top;
  174. transition: all 0.5s;
  175. button {
  176. position: relative;
  177. display: block;
  178. width: 100%;
  179. height: @carousel-dot-height;
  180. padding: 0;
  181. color: transparent;
  182. font-size: 0;
  183. background: @component-background;
  184. border: 0;
  185. border-radius: 1px;
  186. outline: none;
  187. cursor: pointer;
  188. opacity: 0.3;
  189. transition: all 0.5s;
  190. &:hover,
  191. &:focus {
  192. opacity: 0.75;
  193. }
  194. &::after {
  195. position: absolute;
  196. top: -@carousel-dot-margin;
  197. right: -@carousel-dot-margin;
  198. bottom: -@carousel-dot-margin;
  199. left: -@carousel-dot-margin;
  200. content: '';
  201. }
  202. }
  203. &.slick-active {
  204. width: @carousel-dot-active-width;
  205. & button {
  206. background: @component-background;
  207. opacity: 1;
  208. }
  209. &:hover,
  210. &:focus {
  211. opacity: 1;
  212. }
  213. }
  214. }
  215. }
  216. }
  217. .@{ant-prefix}-carousel-vertical {
  218. .slick-dots {
  219. top: 50%;
  220. bottom: auto;
  221. flex-direction: column;
  222. width: @carousel-dot-height;
  223. height: auto;
  224. margin: 0;
  225. transform: translateY(-50%);
  226. &-left {
  227. right: auto;
  228. left: 12px;
  229. }
  230. &-right {
  231. right: 12px;
  232. left: auto;
  233. }
  234. li {
  235. width: @carousel-dot-height;
  236. height: @carousel-dot-width;
  237. margin: @carousel-dot-margin 0;
  238. vertical-align: baseline;
  239. button {
  240. width: @carousel-dot-height;
  241. height: @carousel-dot-width;
  242. }
  243. &.slick-active {
  244. width: @carousel-dot-height;
  245. height: @carousel-dot-active-width;
  246. button {
  247. width: @carousel-dot-height;
  248. height: @carousel-dot-active-width;
  249. }
  250. }
  251. }
  252. }
  253. }
  254. @import './rtl';