Grids.svelte 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. <script>
  2. /** @typedef {import('../../index.d').Grids} GridsProps */
  3. /** @type {GridsProps} */
  4. let { cols = '6', gap = '2', mx = '2', my = '2', children } = $props();
  5. //根据列数生成样式
  6. // Generate styles based on the number of columns
  7. const colsObj = {
  8. '1': ' grid-cols-1',
  9. '2': ' grid-cols-2',
  10. '3': ' grid-cols-3',
  11. '4': ' grid-cols-4',
  12. '5': ' grid-cols-5',
  13. '6': ' grid-cols-6',
  14. '7': ' grid-cols-7',
  15. '8': ' grid-cols-8',
  16. '9': ' grid-cols-9',
  17. '10': ' grid-cols-10',
  18. '11': ' grid-cols-11',
  19. '12': ' grid-cols-12',
  20. };
  21. //水平外边距样式
  22. // Horizontal margin style
  23. const mxObj = { '0': ' mx-0', '1': ' mx-1', '2': ' mx-2', '4': ' mx-4', '8': ' mx-8' };
  24. //垂直外边距样式
  25. // Vertical margin style
  26. const myObj = { '0': ' my-0', '1': ' my-1', '2': ' my-2', '4': ' my-4', '8': ' my-8' };
  27. //内部间距样式
  28. // Internal spacing style
  29. const gapObj = { '0': ' gap-0', '1': ' gap-1', '2': ' gap-2', '4': ' gap-4', '8': ' gap-8' };
  30. </script>
  31. <div class={`grid${colsObj[cols] || colsObj['6']}${mxObj[mx] || mxObj['2']}${myObj[my] || myObj['2']}${gapObj[gap] || gapObj['2']}`}>
  32. {@render children?.()}
  33. </div>