dialog.scss 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185
  1. @use 'sass:map';
  2. @use 'mixins/mixins' as *;
  3. @use 'mixins/utils' as *;
  4. @use 'mixins/var' as *;
  5. @use 'common/var' as *;
  6. @use 'common/popup' as *;
  7. @include b(dialog) {
  8. @include set-component-css-var('dialog', $dialog);
  9. position: relative;
  10. margin: var(#{getCssVarName('dialog-margin-top')}, 15vh) auto 50px;
  11. background: getCssVar('dialog', 'bg-color');
  12. border-radius: getCssVar('dialog', 'border-radius');
  13. box-shadow: getCssVar('dialog', 'box-shadow');
  14. box-sizing: border-box;
  15. width: var(#{getCssVarName('dialog-width')}, 50%);
  16. &:focus {
  17. outline: none !important;
  18. }
  19. @include when(align-center) {
  20. margin: auto;
  21. }
  22. @include when(fullscreen) {
  23. @include set-css-var-value('dialog-width', 100%);
  24. @include set-css-var-value('dialog-margin-top', 0);
  25. margin-bottom: 0;
  26. height: 100%;
  27. overflow: auto;
  28. }
  29. @include e(wrapper) {
  30. position: fixed;
  31. top: 0;
  32. right: 0;
  33. bottom: 0;
  34. left: 0;
  35. overflow: auto;
  36. margin: 0;
  37. }
  38. @include when(draggable) {
  39. @include e(header) {
  40. cursor: move;
  41. user-select: none;
  42. }
  43. }
  44. @include e(header) {
  45. padding: getCssVar('dialog', 'padding-primary');
  46. padding-bottom: 10px;
  47. margin-right: 16px;
  48. }
  49. @include e(headerbtn) {
  50. position: absolute;
  51. top: 6px;
  52. right: 0;
  53. padding: 0;
  54. width: 54px;
  55. height: 54px;
  56. background: transparent;
  57. border: none;
  58. outline: none;
  59. cursor: pointer;
  60. font-size: var(
  61. #{getCssVarName('message-close-size')},
  62. map.get($message, 'close-size')
  63. );
  64. .#{$namespace}-dialog__close {
  65. color: getCssVar('color', 'info');
  66. font-size: inherit;
  67. }
  68. &:focus,
  69. &:hover {
  70. .#{$namespace}-dialog__close {
  71. color: getCssVar('color', 'primary');
  72. }
  73. }
  74. }
  75. @include e(title) {
  76. line-height: getCssVar('dialog-font-line-height');
  77. font-size: getCssVar('dialog-title-font-size');
  78. color: getCssVar('text-color', 'primary');
  79. }
  80. @include e(body) {
  81. padding: calc(#{getCssVar('dialog-padding-primary')} + 10px)
  82. getCssVar('dialog-padding-primary');
  83. color: getCssVar('text-color', 'regular');
  84. font-size: getCssVar('dialog-content-font-size');
  85. }
  86. @include e(footer) {
  87. padding: getCssVar('dialog-padding-primary');
  88. padding-top: 10px;
  89. text-align: right;
  90. box-sizing: border-box;
  91. }
  92. // 内容居中布局
  93. @include m(center) {
  94. text-align: center;
  95. @include e(body) {
  96. text-align: initial;
  97. padding: 25px calc(#{getCssVar('dialog-padding-primary')} + 5px) 30px;
  98. }
  99. @include e(footer) {
  100. text-align: inherit;
  101. }
  102. }
  103. }
  104. .#{$namespace}-overlay-dialog {
  105. position: fixed;
  106. top: 0;
  107. right: 0;
  108. bottom: 0;
  109. left: 0;
  110. overflow: auto;
  111. }
  112. .dialog-fade-enter-active {
  113. animation: modal-fade-in getCssVar('transition-duration');
  114. .#{$namespace}-overlay-dialog {
  115. animation: dialog-fade-in getCssVar('transition-duration');
  116. }
  117. }
  118. .dialog-fade-leave-active {
  119. animation: modal-fade-out getCssVar('transition-duration');
  120. .#{$namespace}-overlay-dialog {
  121. animation: dialog-fade-out getCssVar('transition-duration');
  122. }
  123. }
  124. @keyframes dialog-fade-in {
  125. 0% {
  126. transform: translate3d(0, -20px, 0);
  127. opacity: 0;
  128. }
  129. 100% {
  130. transform: translate3d(0, 0, 0);
  131. opacity: 1;
  132. }
  133. }
  134. @keyframes dialog-fade-out {
  135. 0% {
  136. transform: translate3d(0, 0, 0);
  137. opacity: 1;
  138. }
  139. 100% {
  140. transform: translate3d(0, -20px, 0);
  141. opacity: 0;
  142. }
  143. }
  144. @keyframes modal-fade-in {
  145. 0% {
  146. opacity: 0;
  147. }
  148. 100% {
  149. opacity: 1;
  150. }
  151. }
  152. @keyframes modal-fade-out {
  153. 0% {
  154. opacity: 1;
  155. }
  156. 100% {
  157. opacity: 0;
  158. }
  159. }