index.less 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193
  1. @import './var.less';
  2. :root {
  3. --van-uploader-size: @uploader-size;
  4. --van-uploader-icon-size: @uploader-icon-size;
  5. --van-uploader-icon-color: @uploader-icon-color;
  6. --van-uploader-text-color: @uploader-text-color;
  7. --van-uploader-text-font-size: @uploader-text-font-size;
  8. --van-uploader-upload-background-color: @uploader-upload-background-color;
  9. --van-uploader-upload-active-color: @uploader-upload-active-color;
  10. --van-uploader-delete-color: @uploader-delete-color;
  11. --van-uploader-delete-icon-size: @uploader-delete-icon-size;
  12. --van-uploader-delete-background-color: @uploader-delete-background-color;
  13. --van-uploader-file-background-color: @uploader-file-background-color;
  14. --van-uploader-file-icon-size: @uploader-file-icon-size;
  15. --van-uploader-file-icon-color: @uploader-file-icon-color;
  16. --van-uploader-file-name-padding: @uploader-file-name-padding;
  17. --van-uploader-file-name-margin-top: @uploader-file-name-margin-top;
  18. --van-uploader-file-name-font-size: @uploader-file-name-font-size;
  19. --van-uploader-file-name-text-color: @uploader-file-name-text-color;
  20. --van-uploader-mask-text-color: @uploader-mask-text-color;
  21. --van-uploader-mask-background-color: @uploader-mask-background-color;
  22. --van-uploader-mask-icon-size: @uploader-mask-icon-size;
  23. --van-uploader-mask-message-font-size: @uploader-mask-message-font-size;
  24. --van-uploader-mask-message-line-height: @uploader-mask-message-line-height;
  25. --van-uploader-loading-icon-size: @uploader-loading-icon-size;
  26. --van-uploader-loading-icon-color: @uploader-loading-icon-color;
  27. --van-uploader-disabled-opacity: @uploader-disabled-opacity;
  28. }
  29. .van-uploader {
  30. position: relative;
  31. display: inline-block;
  32. &__wrapper {
  33. display: flex;
  34. flex-wrap: wrap;
  35. &--disabled {
  36. opacity: var(--van-uploader-disabled-opacity);
  37. }
  38. }
  39. &__input {
  40. position: absolute;
  41. top: 0;
  42. left: 0;
  43. width: 100%;
  44. height: 100%;
  45. overflow: hidden; // to clip file-upload-button
  46. cursor: pointer;
  47. opacity: 0;
  48. &-wrapper {
  49. position: relative;
  50. }
  51. &:disabled {
  52. cursor: not-allowed;
  53. }
  54. }
  55. &__upload {
  56. position: relative;
  57. display: flex;
  58. flex-direction: column;
  59. align-items: center;
  60. justify-content: center;
  61. box-sizing: border-box;
  62. width: var(--van-uploader-size);
  63. height: var(--van-uploader-size);
  64. margin: 0 var(--van-padding-xs) var(--van-padding-xs) 0;
  65. background: var(--van-uploader-upload-background-color);
  66. &:active {
  67. background-color: var(--van-uploader-upload-active-color);
  68. }
  69. &--readonly:active {
  70. background-color: var(--van-uploader-upload-background-color);
  71. }
  72. &-icon {
  73. color: var(--van-uploader-icon-color);
  74. font-size: var(--van-uploader-icon-size);
  75. }
  76. &-text {
  77. margin-top: var(--van-padding-xs);
  78. color: var(--van-uploader-text-color);
  79. font-size: var(--van-uploader-text-font-size);
  80. }
  81. }
  82. &__preview {
  83. position: relative;
  84. margin: 0 var(--van-padding-xs) var(--van-padding-xs) 0;
  85. cursor: pointer;
  86. &-image {
  87. display: block;
  88. width: var(--van-uploader-size);
  89. height: var(--van-uploader-size);
  90. overflow: hidden;
  91. }
  92. &-delete {
  93. position: absolute;
  94. top: 0;
  95. right: 0;
  96. &--shadow {
  97. width: var(--van-uploader-delete-icon-size);
  98. height: var(--van-uploader-delete-icon-size);
  99. background: var(--van-uploader-delete-background-color);
  100. border-radius: 0 0 0 12px;
  101. }
  102. &-icon {
  103. position: absolute;
  104. top: 0;
  105. right: 0;
  106. color: var(--van-uploader-delete-color);
  107. font-size: var(--van-uploader-delete-icon-size);
  108. transform: scale(0.7) translate(10%, -10%);
  109. }
  110. }
  111. &-cover {
  112. position: absolute;
  113. top: 0;
  114. right: 0;
  115. bottom: 0;
  116. left: 0;
  117. }
  118. }
  119. &__mask {
  120. position: absolute;
  121. top: 0;
  122. right: 0;
  123. bottom: 0;
  124. left: 0;
  125. display: flex;
  126. flex-direction: column;
  127. align-items: center;
  128. justify-content: center;
  129. color: var(--van-uploader-mask-text-color);
  130. background: var(--van-uploader-mask-background-color);
  131. &-icon {
  132. font-size: var(--van-uploader-mask-icon-size);
  133. }
  134. &-message {
  135. margin-top: 6px;
  136. padding: 0 var(--van-padding-base);
  137. font-size: var(--van-uploader-mask-message-font-size);
  138. line-height: var(--van-uploader-mask-message-line-height);
  139. }
  140. }
  141. &__loading {
  142. width: var(--van-uploader-loading-icon-size);
  143. height: var(--van-uploader-loading-icon-size);
  144. color: var(--van-uploader-loading-icon-color);
  145. }
  146. &__file {
  147. display: flex;
  148. flex-direction: column;
  149. align-items: center;
  150. justify-content: center;
  151. width: var(--van-uploader-size);
  152. height: var(--van-uploader-size);
  153. background: var(--van-uploader-file-background-color);
  154. &-icon {
  155. color: var(--van-uploader-file-icon-color);
  156. font-size: var(--van-uploader-file-icon-size);
  157. }
  158. &-name {
  159. box-sizing: border-box;
  160. width: 100%;
  161. margin-top: var(--van-uploader-file-name-margin-top);
  162. padding: var(--van-uploader-file-name-padding);
  163. color: var(--van-uploader-file-name-text-color);
  164. font-size: var(--van-uploader-file-name-font-size);
  165. text-align: center;
  166. }
  167. }
  168. }