_sizes.scss 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. // $sizes: 0,1,2,3,4,5,6,7,8,9,10,11,12,14,16,20,24,28,32,36,40,44,48,52,56,60,64,72,80,96;
  2. $varPre: '';
  3. // 尺寸相关
  4. $percents: 2,3,4,5,6,12;
  5. $pxs: '0' 0 ,'px' 1 ,'0-5' 2 ,'1' 4 ,'1-5' 6 ,'2' 8 ,'2-5' 10 ,'3' 12 ,'3-5' 14 ,'4' 16 ,'5' 20 ,'6' 24 ,'7' 28 ,'8' 32 ,'9' 36 ,'10' 40 ,'11' 44 ,'12' 48 ,'14' 56 ,'16' 64 ,'20' 80 ,'24' 96 ,'28' 112 ,'32' 128 ,'36' 144 ,'40' 160 ,'44' 176 ,'48' 192 ,'52' 208 ,'56' 224 ,'60' 240 ,'64' 256 ,'72' 288 ,'80' 320 ,'96' 384;
  6. $pxNames: '0' ,'px' ,'0-5' ,'1' ,'1-5' ,'2' ,'2-5' ,'3' ,'3-5' ,'4' ,'5' ,'6' ,'7' ,'8' ,'9' ,'10' ,'11' ,'12' ,'14' ,'16' ,'20' ,'24' ,'28' ,'32' ,'36' ,'40' ,'44' ,'48' ,'52' ,'56' ,'60' ,'64' ,'72' ,'80' ,'96';
  7. $pctNames: '1_2' ,'1_3' ,'2_3' ,'1_4' ,'2_4' ,'3_4' ,'1_5' ,'2_5' ,'3_5' ,'4_5' ,'1_6' ,'2_6' ,'3_6' ,'4_6' ,'5_6' ,'1_12' ,'2_12' ,'3_12' ,'4_12' ,'5_12' ,'6_12' ,'7_12' ,'8_12' ,'9_12' ,'10_12' ,'11_12';
  8. @mixin setVar($varName, $val) {
  9. #{$varName}: #{$val};
  10. }
  11. @mixin setPageRpxVar {
  12. @each $name, $v in $pxs {
  13. $varName: --#{$varPre}rpx-#{$name};
  14. @if($name == 'px') {
  15. @include setVar($varName, #{$v}rpx);
  16. } @else {
  17. @include setVar($varName, #{$v * 2}rpx);
  18. }
  19. }
  20. }
  21. @mixin setPagePercentVar {
  22. // 百分比
  23. @each $s in $percents { // ($i / $s) 待编辑器内sass版本升级 变为 math.div(a, b) 方式不报错
  24. @for $i from 1 through $s {
  25. @if $i < $s {
  26. $varName: --#{$varPre}percent-#{$i}_#{$s};
  27. $val: calc(#{$i} / #{$s} * 100%);
  28. @include setVar($varName, $val);
  29. }
  30. }
  31. }
  32. @include setVar(--#{$varPre}percent-full, 100%);
  33. @include setVar(--#{$varPre}percent-auto, auto);
  34. @include setVar(--#{$varPre}w-screen, 100vw);
  35. @include setVar(--#{$varPre}h-screen, 100vh);
  36. }
  37. // px & percent 公用函数 调用页面实现render函数即可
  38. @mixin setPxs($pxs) {
  39. @each $name in $pxs{
  40. $varName: --#{$varPre}rpx-#{$name};
  41. @include render($name, $varName);
  42. }
  43. }
  44. @mixin setPcts($pxs) {
  45. @each $name in $pxs{
  46. $varName: --#{$varPre}percent-#{$name};
  47. @include render($name, $varName);
  48. }
  49. }
  50. // 文字相关设置
  51. $fontSizes: '3xs' 10, '2xs' 11, 'xs' 12, 'mini' 13, 'sm' 14, 'md' 15, 'base' 16, 'lg' 18, 'xl' 20, '2xl' 24, '3xl' 30, '4xl' 36, '5xl' 48, '6xl' 60, '7xl' 72, '8xl' 96, '9xl' 128;
  52. $fontSizeLineHeights: 12, 14, 16, 18, 20, 22, 24, 28, 28, 32, 36, 40, -1, -2, -3, -4, -5;
  53. $fontSizeVars: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15;
  54. @mixin getFontSizeAndLineHeight($lineHeight, $fname, $fval) {
  55. $varFontSizeName: --#{$varPre}text-#{$fname};
  56. $varFontLineHeightName: --#{$varPre}text-#{$fname}-line-height;
  57. #{$varFontSizeName}: #{$fval * 2}rpx;
  58. @if($lineHeight > 10) {
  59. #{$varFontLineHeightName}: #{$lineHeight * 2}rpx;
  60. } @else {
  61. #{$varFontLineHeightName}: 1;
  62. }
  63. }
  64. @mixin setPageFontSizeAndLineHeightVar {
  65. @each $i in $fontSizeVars {
  66. $n: index($fontSizeVars, $i);
  67. $fsize: nth($fontSizes, $n);
  68. $fname: nth($fsize, 1);
  69. $fval: nth($fsize, 2);
  70. $lineHeight: nth($fontSizeLineHeights, $n);
  71. @include getFontSizeAndLineHeight($lineHeight, $fname, $fval);
  72. }
  73. }
  74. // Font.scss 用
  75. @mixin setFontSizes($fontSizes) {
  76. @each $name, $val in $fontSizes{
  77. $varName: --#{$varPre}text-#{$name};
  78. $varLhName: --#{$varPre}text-#{$name}-lineHeight;
  79. @include render($name, $varName, $varLhName);
  80. }
  81. }
  82. // border Radius
  83. $borderRadius: 'none' 0, 'sm' 2, '' 4, 'md' 6, 'lg' 8, 'xl' 12, '2xl' 16, '3xl' 24, 'full' 9999;
  84. @mixin setBorderRadiusVar {
  85. @each $name, $val in $borderRadius {
  86. $varName: '';
  87. @if($name != '') {
  88. $varName: --#{$varPre}rounded-#{$name};
  89. } @else {
  90. $varName: --#{$varPre}rounded;
  91. }
  92. @include setVar($varName, #{$val * 2}rpx);
  93. }
  94. }
  95. // BorderRadius.scss 用
  96. @mixin setBorderRadius($arr) {
  97. @each $name, $val in $arr{
  98. $varName: '';
  99. @if($name != '') {
  100. $varName: --#{$varPre}rounded-#{$name};
  101. } @else {
  102. $varName: --#{$varPre}rounded;
  103. }
  104. @include render($name, $varName);
  105. }
  106. }
  107. page {
  108. @include setPageRpxVar;
  109. @include setPagePercentVar;
  110. @include setPageFontSizeAndLineHeightVar;
  111. @include setBorderRadiusVar;
  112. }