index-pure.less 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280
  1. @import '../../style/themes/index';
  2. @import '../../style/mixins/index';
  3. @skeleton-prefix-cls: ~'@{ant-prefix}-skeleton';
  4. @skeleton-avatar-prefix-cls: ~'@{skeleton-prefix-cls}-avatar';
  5. @skeleton-title-prefix-cls: ~'@{skeleton-prefix-cls}-title';
  6. @skeleton-paragraph-prefix-cls: ~'@{skeleton-prefix-cls}-paragraph';
  7. @skeleton-button-prefix-cls: ~'@{skeleton-prefix-cls}-button';
  8. @skeleton-input-prefix-cls: ~'@{skeleton-prefix-cls}-input';
  9. @skeleton-image-prefix-cls: ~'@{skeleton-prefix-cls}-image';
  10. @skeleton-block-radius: 4px;
  11. .@{skeleton-prefix-cls} {
  12. display: table;
  13. width: 100%;
  14. &-header {
  15. display: table-cell;
  16. padding-right: @padding-md;
  17. vertical-align: top;
  18. // Avatar
  19. .@{skeleton-avatar-prefix-cls} {
  20. .skeleton-element-avatar();
  21. }
  22. }
  23. &-content {
  24. display: table-cell;
  25. width: 100%;
  26. vertical-align: top;
  27. // Title
  28. .@{skeleton-title-prefix-cls} {
  29. width: 100%;
  30. height: @skeleton-title-height;
  31. margin-top: @margin-md;
  32. background: @skeleton-color;
  33. border-radius: @skeleton-block-radius;
  34. + .@{skeleton-paragraph-prefix-cls} {
  35. margin-top: @skeleton-title-paragraph-margin-top;
  36. }
  37. }
  38. // paragraph
  39. .@{skeleton-paragraph-prefix-cls} {
  40. padding: 0;
  41. > li {
  42. width: 100%;
  43. height: @skeleton-paragraph-li-height;
  44. list-style: none;
  45. background: @skeleton-color;
  46. border-radius: @skeleton-block-radius;
  47. &:last-child:not(:first-child):not(:nth-child(2)) {
  48. width: 61%;
  49. }
  50. + li {
  51. margin-top: @skeleton-paragraph-li-margin-top;
  52. }
  53. }
  54. }
  55. }
  56. &-with-avatar &-content {
  57. // Title
  58. .@{skeleton-title-prefix-cls} {
  59. margin-top: @margin-sm;
  60. + .@{skeleton-paragraph-prefix-cls} {
  61. margin-top: @skeleton-paragraph-margin-top;
  62. }
  63. }
  64. }
  65. &-round &-content {
  66. .@{skeleton-title-prefix-cls},
  67. .@{skeleton-paragraph-prefix-cls} > li {
  68. border-radius: 100px;
  69. }
  70. }
  71. // With active animation
  72. &.@{skeleton-prefix-cls}-active {
  73. & .@{skeleton-prefix-cls}-content {
  74. .@{skeleton-title-prefix-cls},
  75. .@{skeleton-paragraph-prefix-cls} > li {
  76. .skeleton-color();
  77. }
  78. }
  79. .@{skeleton-avatar-prefix-cls} {
  80. .skeleton-color();
  81. }
  82. .@{skeleton-button-prefix-cls} {
  83. .skeleton-color();
  84. }
  85. .@{skeleton-input-prefix-cls} {
  86. .skeleton-color();
  87. }
  88. .@{skeleton-image-prefix-cls} {
  89. .skeleton-color();
  90. }
  91. }
  92. // Skeleton Block Button
  93. &.@{skeleton-prefix-cls}-block {
  94. width: 100%;
  95. .@{skeleton-button-prefix-cls} {
  96. width: 100%;
  97. }
  98. }
  99. // Skeleton element
  100. &-element {
  101. display: inline-block;
  102. width: auto;
  103. .@{skeleton-button-prefix-cls} {
  104. .skeleton-element-button();
  105. }
  106. .@{skeleton-avatar-prefix-cls} {
  107. .skeleton-element-avatar();
  108. }
  109. .@{skeleton-input-prefix-cls} {
  110. .skeleton-element-input();
  111. }
  112. .@{skeleton-image-prefix-cls} {
  113. .skeleton-element-image();
  114. }
  115. }
  116. }
  117. // Button
  118. .skeleton-element-button() {
  119. display: inline-block;
  120. vertical-align: top;
  121. background: @skeleton-color;
  122. border-radius: @border-radius-base;
  123. .skeleton-element-button-size(@btn-height-base);
  124. &-lg {
  125. .skeleton-element-button-size(@btn-height-lg);
  126. }
  127. &-sm {
  128. .skeleton-element-button-size(@btn-height-sm);
  129. }
  130. }
  131. // Avatar
  132. .skeleton-element-avatar() {
  133. display: inline-block;
  134. vertical-align: top;
  135. background: @skeleton-color;
  136. .skeleton-element-avatar-size(@avatar-size-base);
  137. &-lg {
  138. .skeleton-element-avatar-size(@avatar-size-lg);
  139. }
  140. &-sm {
  141. .skeleton-element-avatar-size(@avatar-size-sm);
  142. }
  143. }
  144. // Input
  145. .skeleton-element-input() {
  146. display: inline-block;
  147. vertical-align: top;
  148. background: @skeleton-color;
  149. .skeleton-element-input-size(@input-height-base);
  150. &-lg {
  151. .skeleton-element-input-size(@input-height-lg);
  152. }
  153. &-sm {
  154. .skeleton-element-input-size(@input-height-sm);
  155. }
  156. }
  157. // Image
  158. .skeleton-element-image() {
  159. display: flex;
  160. align-items: center;
  161. justify-content: center;
  162. vertical-align: top;
  163. background: @skeleton-color;
  164. .skeleton-element-image-size(@image-size-base*2);
  165. &-path {
  166. fill: #bfbfbf;
  167. }
  168. &-svg {
  169. .skeleton-element-image-size(@image-size-base);
  170. max-width: @image-size-base * 4;
  171. max-height: @image-size-base * 4;
  172. }
  173. }
  174. .skeleton-element-avatar-size(@size) {
  175. width: @size;
  176. .skeleton-element-common-size(@size);
  177. &.@{skeleton-avatar-prefix-cls}-circle {
  178. border-radius: 50%;
  179. }
  180. }
  181. .skeleton-element-button-size(@size) {
  182. width: @size * 2;
  183. min-width: @size * 2;
  184. .skeleton-element-common-size(@size);
  185. &.@{skeleton-button-prefix-cls}-circle {
  186. width: @size;
  187. min-width: @size;
  188. border-radius: 50%;
  189. }
  190. &.@{skeleton-button-prefix-cls}-round {
  191. border-radius: @size;
  192. }
  193. }
  194. .skeleton-element-input-size(@size) {
  195. width: 100%;
  196. .skeleton-element-common-size(@size);
  197. }
  198. .skeleton-element-image-size(@size) {
  199. width: @size;
  200. .skeleton-element-common-size(@size);
  201. &.@{skeleton-image-prefix-cls}-circle {
  202. border-radius: 50%;
  203. }
  204. }
  205. .skeleton-element-common-size(@size) {
  206. height: @size;
  207. line-height: @size;
  208. }
  209. .skeleton-color() {
  210. background: linear-gradient(
  211. 90deg,
  212. @skeleton-color 25%,
  213. @skeleton-to-color 37%,
  214. @skeleton-color 63%
  215. );
  216. background-size: 400% 100%;
  217. animation: ~'@{skeleton-prefix-cls}-loading' 1.4s ease infinite;
  218. }
  219. @keyframes ~"@{skeleton-prefix-cls}-loading" {
  220. 0% {
  221. background-position: 100% 50%;
  222. }
  223. 100% {
  224. background-position: 0 50%;
  225. }
  226. }
  227. @import './rtl';