unocss.ts 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. import UnoCss from 'unocss/vite';
  2. export default () => {
  3. return UnoCss({
  4. hmrTopLevelAwait: false, // unocss默认是true,低版本浏览器是不支持的,启动后会报错
  5. rules: [
  6. [/^mg-([\.\d]+)$/, ([_, num]) => ({ margin: `${num}px` })],
  7. [/^pd-([\.\d]+)$/, ([_, num]) => ({ padding: `${num}px` })],
  8. [/^bg-([\w-]+)$/, ([_, color]) => ({ 'background-color': color })],
  9. [/^c-([\w-]+)$/, ([_, color]) => ({ color: color })],
  10. [/^bc-([\w-]+)$/, ([_, color]) => ({ 'border-color': color })],
  11. [/^rounded-([\.\d]+)$/, ([_, num]) => ({ 'border-radius': `${num}px` })],
  12. // 下边距
  13. [/^mb-([\.\d]+)$/, ([_, num]) => ({ 'margin-bottom': `${num}px` })],
  14. // 上边距
  15. [/^mt-([\.\d]+)$/, ([_, num]) => ({ 'margin-top': `${num}px` })],
  16. // 左边距
  17. [/^ml-([\.\d]+)$/, ([_, num]) => ({ 'margin-left': `${num}px` })],
  18. // 右边距
  19. [/^mr-([\.\d]+)$/, ([_, num]) => ({ 'margin-right': `${num}px` })],
  20. // 上padding
  21. [/^pt-([\.\d]+)$/, ([_, num]) => ({ 'padding-top': `${num}px` })],
  22. // 下padding
  23. [/^pb-([\.\d]+)$/, ([_, num]) => ({ 'padding-bottom': `${num}px` })],
  24. // pd3-40-0-20
  25. // padding
  26. [
  27. /^pd3-([\.\d]+)-([\.\d]+)-([\.\d]+)$/,
  28. ([_, top, right, bottom]) => ({
  29. padding: `${top}px ${right}px ${bottom}px`
  30. })
  31. ],
  32. // pd2-40-20
  33. [
  34. /^pd2-([\.\d]+)-([\.\d]+)$/,
  35. ([_, top, right]) => ({
  36. padding: `${top}px ${right}px`
  37. })
  38. ],
  39. // pd4-40-20-10-5
  40. [
  41. /^pd4-([\.\d]+)-([\.\d]+)-([\.\d]+)-([\.\d]+)$/,
  42. ([_, top, right, bottom, left]) => ({
  43. padding: `${top}px ${right}px ${bottom}px ${left}px`
  44. })
  45. ],
  46. // mg2-40-20
  47. [
  48. /^mg2-([\.\d]+)-([\.\d]+)$/,
  49. ([_, top, right]) => ({
  50. margin: `${top}px ${right}px`
  51. })
  52. ],
  53. // mg3-40-20-10
  54. [
  55. /^mg3-([\.\d]+)-([\.\d]+)-([\.\d]+)$/,
  56. ([_, top, right, bottom]) => ({
  57. margin: `${top}px ${right}px ${bottom}px`
  58. })
  59. ],
  60. // mg4-40-20-10-5
  61. [
  62. /^mg4-([\.\d]+)-([\.\d]+)-([\.\d]+)-([\.\d]+)$/,
  63. ([_, top, right, bottom, left]) => ({
  64. margin: `${top}px ${right}px ${bottom}px ${left}px`
  65. })
  66. ],
  67. // 左padding
  68. [/^pl-([\.\d]+)$/, ([_, num]) => ({ 'padding-left': `${num}px` })],
  69. // 右padding
  70. [/^pr-([\.\d]+)$/, ([_, num]) => ({ 'padding-right': `${num}px` })],
  71. // 字体大小
  72. [/^f-s-([\.\d]+)$/, ([_, num]) => ({ 'font-size': `${num}px` })],
  73. // 字体加粗
  74. [/^f-w-([\.\d]+)$/, ([_, num]) => ({ 'font-weight': `${num}` })],
  75. // 宽
  76. [/^w-([\.\d]+)$/, ([_, num]) => ({ width: `${num}px` })],
  77. // 高
  78. [/^h-([\.\d]+)$/, ([_, num]) => ({ height: `${num}px` })],
  79. // 带透明度的可传入颜色计算rgba值加背景
  80. // 行高
  81. [/^lh-([\.\d]+)$/, ([_, num]) => ({ 'line-height': `${num}` })],
  82. // 黑色透明度
  83. [
  84. /^bg-black-([\.\d]+)$/,
  85. ([_, num]) => ({
  86. 'background-color': `rgba(0, 0, 0, ${num})`
  87. })
  88. ],
  89. // 透明度
  90. [
  91. /^opacity-([\.\d]+)$/,
  92. ([_, num]) => ({
  93. opacity: `${num}`
  94. })
  95. ],
  96. // z-index
  97. [
  98. /^z-index-([\.\d]+)$/,
  99. ([_, num]) => ({
  100. 'z-index': `${num}`
  101. })
  102. ],
  103. // 百分比高度
  104. [/^h-([\.\d]+)%$/, ([_, num]) => ({ height: `${num}%` })],
  105. [
  106. /^wrapper-([\.\d]+)-([\.\d]+)$/,
  107. ([_, maxWidth, minWidth]) => ({
  108. 'max-width': `${maxWidth}px`,
  109. 'min-width': `${minWidth}px`,
  110. margin: '0 auto',
  111. padding: '0 20px'
  112. })
  113. ],
  114. // 最大宽
  115. [/^max-w-([\.\d]+)$/, ([_, num]) => ({ 'max-width': `${num}px` })],
  116. // 最小宽
  117. [/^min-w-([\.\d]+)$/, ([_, num]) => ({ 'min-width': `${num}px` })],
  118. // 最大高
  119. [/^max-h-([\.\d]+)$/, ([_, num]) => ({ 'max-height': `${num}px` })],
  120. // 最小高
  121. [/^min-h-([\.\d]+)$/, ([_, num]) => ({ 'min-height': `${num}px` })],
  122. // 栅格 30份
  123. [/^hcol-([\.\d]+)$/, ([_, num]) => ({ width: `${(+num / 30) * 100}%` })],
  124. // border-radius-8
  125. [
  126. /^border-radius-([\.\d]+)$/,
  127. ([_, num]) => ({
  128. 'border-radius': `${num}px`
  129. })
  130. ]
  131. ]
  132. });
  133. };