You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

234 lines
6.6 KiB

3 years ago
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
  1. //
  2. // Base styles
  3. //
  4. .card {
  5. // scss-docs-start card-css-vars
  6. --#{$prefix}card-spacer-y: #{$card-spacer-y};
  7. --#{$prefix}card-spacer-x: #{$card-spacer-x};
  8. --#{$prefix}card-title-spacer-y: #{$card-title-spacer-y};
  9. --#{$prefix}card-border-width: #{$card-border-width};
  10. --#{$prefix}card-border-color: #{$card-border-color};
  11. --#{$prefix}card-border-radius: #{$card-border-radius};
  12. --#{$prefix}card-box-shadow: #{$card-box-shadow};
  13. --#{$prefix}card-inner-border-radius: #{$card-inner-border-radius};
  14. --#{$prefix}card-cap-padding-y: #{$card-cap-padding-y};
  15. --#{$prefix}card-cap-padding-x: #{$card-cap-padding-x};
  16. --#{$prefix}card-cap-bg: #{$card-cap-bg};
  17. --#{$prefix}card-cap-color: #{$card-cap-color};
  18. --#{$prefix}card-height: #{$card-height};
  19. --#{$prefix}card-color: #{$card-color};
  20. --#{$prefix}card-bg: #{$card-bg};
  21. --#{$prefix}card-img-overlay-padding: #{$card-img-overlay-padding};
  22. --#{$prefix}card-group-margin: #{$card-group-margin};
  23. // scss-docs-end card-css-vars
  24. position: relative;
  25. display: flex;
  26. flex-direction: column;
  27. min-width: 0; // See https://github.com/twbs/bootstrap/pull/22740#issuecomment-305868106
  28. height: var(--#{$prefix}card-height);
  29. word-wrap: break-word;
  30. background-color: var(--#{$prefix}card-bg);
  31. background-clip: border-box;
  32. border: var(--#{$prefix}card-border-width) solid var(--#{$prefix}card-border-color);
  33. @include border-radius(var(--#{$prefix}card-border-radius));
  34. @include box-shadow(var(--#{$prefix}card-box-shadow));
  35. > hr {
  36. margin-right: 0;
  37. margin-left: 0;
  38. }
  39. > .list-group {
  40. border-top: inherit;
  41. border-bottom: inherit;
  42. &:first-child {
  43. border-top-width: 0;
  44. @include border-top-radius(var(--#{$prefix}card-inner-border-radius));
  45. }
  46. &:last-child {
  47. border-bottom-width: 0;
  48. @include border-bottom-radius(var(--#{$prefix}card-inner-border-radius));
  49. }
  50. }
  51. // Due to specificity of the above selector (`.card > .list-group`), we must
  52. // use a child selector here to prevent double borders.
  53. > .card-header + .list-group,
  54. > .list-group + .card-footer {
  55. border-top: 0;
  56. }
  57. }
  58. .card-body {
  59. // Enable `flex-grow: 1` for decks and groups so that card blocks take up
  60. // as much space as possible, ensuring footers are aligned to the bottom.
  61. flex: 1 1 auto;
  62. padding: var(--#{$prefix}card-spacer-y) var(--#{$prefix}card-spacer-x);
  63. color: var(--#{$prefix}card-color);
  64. }
  65. .card-title {
  66. margin-bottom: var(--#{$prefix}card-title-spacer-y);
  67. }
  68. .card-subtitle {
  69. margin-top: calc(-.5 * var(--#{$prefix}card-title-spacer-y)); // stylelint-disable-line function-disallowed-list
  70. margin-bottom: 0;
  71. }
  72. .card-text:last-child {
  73. margin-bottom: 0;
  74. }
  75. .card-link {
  76. &:hover {
  77. text-decoration: if($link-hover-decoration == underline, none, null);
  78. }
  79. + .card-link {
  80. margin-left: var(--#{$prefix}card-spacer-x);
  81. }
  82. }
  83. //
  84. // Optional textual caps
  85. //
  86. .card-header {
  87. padding: var(--#{$prefix}card-cap-padding-y) var(--#{$prefix}card-cap-padding-x);
  88. margin-bottom: 0; // Removes the default margin-bottom of <hN>
  89. color: var(--#{$prefix}card-cap-color);
  90. background-color: var(--#{$prefix}card-cap-bg);
  91. border-bottom: var(--#{$prefix}card-border-width) solid var(--#{$prefix}card-border-color);
  92. &:first-child {
  93. @include border-radius(var(--#{$prefix}card-inner-border-radius) var(--#{$prefix}card-inner-border-radius) 0 0);
  94. }
  95. }
  96. .card-footer {
  97. padding: var(--#{$prefix}card-cap-padding-y) var(--#{$prefix}card-cap-padding-x);
  98. color: var(--#{$prefix}card-cap-color);
  99. background-color: var(--#{$prefix}card-cap-bg);
  100. border-top: var(--#{$prefix}card-border-width) solid var(--#{$prefix}card-border-color);
  101. &:last-child {
  102. @include border-radius(0 0 var(--#{$prefix}card-inner-border-radius) var(--#{$prefix}card-inner-border-radius));
  103. }
  104. }
  105. //
  106. // Header navs
  107. //
  108. .card-header-tabs {
  109. margin-right: calc(-.5 * var(--#{$prefix}card-cap-padding-x)); // stylelint-disable-line function-disallowed-list
  110. margin-bottom: calc(-1 * var(--#{$prefix}card-cap-padding-y)); // stylelint-disable-line function-disallowed-list
  111. margin-left: calc(-.5 * var(--#{$prefix}card-cap-padding-x)); // stylelint-disable-line function-disallowed-list
  112. border-bottom: 0;
  113. .nav-link.active {
  114. background-color: var(--#{$prefix}card-bg);
  115. border-bottom-color: var(--#{$prefix}card-bg);
  116. }
  117. }
  118. .card-header-pills {
  119. margin-right: calc(-.5 * var(--#{$prefix}card-cap-padding-x)); // stylelint-disable-line function-disallowed-list
  120. margin-left: calc(-.5 * var(--#{$prefix}card-cap-padding-x)); // stylelint-disable-line function-disallowed-list
  121. }
  122. // Card image
  123. .card-img-overlay {
  124. position: absolute;
  125. top: 0;
  126. right: 0;
  127. bottom: 0;
  128. left: 0;
  129. padding: var(--#{$prefix}card-img-overlay-padding);
  130. @include border-radius(var(--#{$prefix}card-inner-border-radius));
  131. }
  132. .card-img,
  133. .card-img-top,
  134. .card-img-bottom {
  135. width: 100%; // Required because we use flexbox and this inherently applies align-self: stretch
  136. }
  137. .card-img,
  138. .card-img-top {
  139. @include border-top-radius(var(--#{$prefix}card-inner-border-radius));
  140. }
  141. .card-img,
  142. .card-img-bottom {
  143. @include border-bottom-radius(var(--#{$prefix}card-inner-border-radius));
  144. }
  145. //
  146. // Card groups
  147. //
  148. .card-group {
  149. // The child selector allows nested `.card` within `.card-group`
  150. // to display properly.
  151. > .card {
  152. margin-bottom: var(--#{$prefix}card-group-margin);
  153. }
  154. @include media-breakpoint-up(sm) {
  155. display: flex;
  156. flex-flow: row wrap;
  157. // The child selector allows nested `.card` within `.card-group`
  158. // to display properly.
  159. > .card {
  160. // Flexbugs #4: https://github.com/philipwalton/flexbugs#flexbug-4
  161. flex: 1 0 0%;
  162. margin-bottom: 0;
  163. + .card {
  164. margin-left: 0;
  165. border-left: 0;
  166. }
  167. // Handle rounded corners
  168. @if $enable-rounded {
  169. &:not(:last-child) {
  170. @include border-end-radius(0);
  171. .card-img-top,
  172. .card-header {
  173. // stylelint-disable-next-line property-disallowed-list
  174. border-top-right-radius: 0;
  175. }
  176. .card-img-bottom,
  177. .card-footer {
  178. // stylelint-disable-next-line property-disallowed-list
  179. border-bottom-right-radius: 0;
  180. }
  181. }
  182. &:not(:first-child) {
  183. @include border-start-radius(0);
  184. .card-img-top,
  185. .card-header {
  186. // stylelint-disable-next-line property-disallowed-list
  187. border-top-left-radius: 0;
  188. }
  189. .card-img-bottom,
  190. .card-footer {
  191. // stylelint-disable-next-line property-disallowed-list
  192. border-bottom-left-radius: 0;
  193. }
  194. }
  195. }
  196. }
  197. }
  198. }