fs-grid.vue 903 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. <template>
  2. <view
  3. class="fs-grid"
  4. :class="{'fs-grid-border': border}"
  5. :style="styleStr">
  6. <slot></slot>
  7. </view>
  8. </template>
  9. <script setup>
  10. import { computed, provide } from 'vue'
  11. const props = defineProps({
  12. gutter: {
  13. type: [Number,String],
  14. default: 0
  15. },
  16. border: Boolean,
  17. columnNum: {
  18. type: Number,
  19. default: 3
  20. },
  21. padding: {
  22. type: Boolean,
  23. default: true
  24. },
  25. bgColor: {
  26. type: String,
  27. default: '#fff'
  28. },
  29. radius: Boolean
  30. })
  31. const styleStr = computed(() => {
  32. return `grid-template-columns: repeat(${props.columnNum},1fr);gap:${props.gutter};`
  33. })
  34. provide('fsGrid', props)
  35. provide('gridBorder', props.border)
  36. provide('gridPadding', props.padding)
  37. provide('gridBgColor', props.bgColor)
  38. </script>
  39. <style lang="scss" scoped>
  40. .fs-grid{
  41. display: grid;
  42. &-border{
  43. border: 1px solid var(--border-color);
  44. border-bottom: none;
  45. }
  46. }
  47. </style>