mixin.scss 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. @use "sass:math";
  2. // mixins for clearfix
  3. // ------------------------
  4. //TODO 提出到公共mixin
  5. @mixin clearfix() {
  6. zoom: 1;
  7. &::before,
  8. &::after {
  9. display: table;
  10. content: '';
  11. }
  12. &::after {
  13. clear: both;
  14. }
  15. }
  16. // mixins for grid system
  17. // ------------------------
  18. @mixin make-row($gutter: $width-grid_gutter) {
  19. position: relative;
  20. height: auto;
  21. margin-right: ($gutter * -0.5);
  22. margin-left: ($gutter * -0.5);
  23. @include clearfix();
  24. }
  25. @mixin make-grid-columns() {
  26. $index: 1;
  27. @for $i from $index through $width-grid_columns {
  28. $item: '.#{$module}-col-#{$i}, .#{$module}-col-xs-#{$i}, .#{$module}-col-sm-#{$i}, .#{$module}-col-md-#{$i}, .#{$module}-col-lg-#{$i}';
  29. #{$item} {
  30. position: relative;
  31. min-height: 1px;
  32. padding-right: ($width-grid_gutter * 0.5);
  33. padding-left: ($width-grid_gutter * 0.5);
  34. }
  35. }
  36. }
  37. @mixin float-grid-columns($class) {
  38. $index: 1;
  39. @for $i from $index through $width-grid_columns {
  40. $item: '.#{$module}-col#{$class}-#{$i}';
  41. #{$item} {
  42. flex: 0 0 auto;
  43. float: left;
  44. }
  45. }
  46. }
  47. @mixin loop-grid-columns($index, $class) {
  48. @for $i from 1 through ($index) {
  49. .#{$module}-col#{$class}-#{$i} {
  50. display: block;
  51. box-sizing: border-box;
  52. width: percentage(math.div($i , $width-grid_columns));
  53. }
  54. .#{$module}-col#{$class}-push-#{$i} {
  55. left: percentage(math.div($i , $width-grid_columns));
  56. }
  57. .#{$module}-col#{$class}-pull-#{$i} {
  58. right: percentage(math.div($i , $width-grid_columns));
  59. }
  60. .#{$module}-col#{$class}-offset-#{$i} {
  61. margin-left: percentage(math.div($i , $width-grid_columns));
  62. }
  63. .#{$module}-col#{$class}-order-#{$i} {
  64. order: $i;
  65. }
  66. }
  67. }
  68. // grid rtl mixin
  69. @mixin float-grid-columns-rtl($class) {
  70. $index: 1;
  71. @for $i from $index through $width-grid_columns {
  72. $item: '.#{$module}-col#{$class}-#{$i}';
  73. #{$item} {
  74. .#{$prefix}-rtl & {
  75. // float 应该改为镜像的
  76. float: right;
  77. }
  78. }
  79. }
  80. }
  81. @mixin loop-grid-columns-rtl($index, $class) {
  82. @for $i from 1 through ($index) {
  83. .#{$module}-col#{$class}-offset-#{$i} {
  84. .#{$prefix}-rtl & {
  85. margin-left: auto;
  86. margin-right: percentage(math.div($i , $width-grid_columns));
  87. }
  88. }
  89. }
  90. }
  91. @mixin make-grid($class: '') {
  92. @include float-grid-columns($class);
  93. @include loop-grid-columns($width-grid_columns, $class);
  94. @include float-grid-columns-rtl($class);
  95. @include loop-grid-columns-rtl($width-grid_columns, $class);
  96. }