fs-grid-item.vue 934 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. <template>
  2. <view
  3. class="fs-grid-item"
  4. :class="{'fs-grid-item-border': border,'fs-grid-item-radius': radius}"
  5. :style="{padding: padding ? '20rpx 0' : 0,backgroundColor: bgColor}"
  6. @click="handleClick">
  7. <slot></slot>
  8. </view>
  9. </template>
  10. <script setup>
  11. import { inject } from 'vue'
  12. const emits = defineEmits(['click'])
  13. const gird = inject('fsGrid', {})
  14. const { border, padding, bgColor, radius } = gird
  15. const handleClick = () => {
  16. emits('click')
  17. }
  18. </script>
  19. <style lang="scss" scoped>
  20. .fs-grid-item{
  21. display: flex;
  22. align-items: center;
  23. justify-content: center;
  24. flex-direction: column;
  25. text-align: center;
  26. position: relative;
  27. height: 100%;
  28. background-color: #fff;
  29. &-border::before{
  30. position: absolute;
  31. content: '';
  32. top: 0;
  33. right: 0;
  34. bottom: 0;
  35. left: 0;
  36. border: 1px solid var(--border-color);
  37. margin-left: -1px;
  38. margin-top: -1px;
  39. }
  40. &-radius{
  41. border-radius: var(--radius);
  42. }
  43. }
  44. </style>