tilted-button.vue 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. <script lang="ts" setup>
  2. defineProps({
  3. customClass: {
  4. type: String,
  5. default: () => '',
  6. },
  7. color: {
  8. type: String as PropType<'black' | 'white'>,
  9. default: () => 'black',
  10. },
  11. size: {
  12. type: String as PropType<'default' | 'small' | 'large'>,
  13. default: () => 'default',
  14. },
  15. })
  16. </script>
  17. <template>
  18. <view
  19. class="base inline-block text-white relative box-border text-3.5 font-400 line-height-5 px-4 py-1"
  20. :class="[size, color, customClass]"
  21. >
  22. <view class="h-full ml-2 flex items-center justify-center">
  23. <slot></slot>
  24. </view>
  25. </view>
  26. </template>
  27. <style lang="scss">
  28. .base {
  29. border-style: solid;
  30. border-image-slice: 10 10 10 25 fill;
  31. border-image-width: 20rpx 20rpx 20rpx 40rpx;
  32. border-image-outset: 0 0 0 0;
  33. border-image-repeat: stretch stretch;
  34. }
  35. .black {
  36. border-image-source: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI5MiIgaGVpZ2h0PSIzNSIgdmlld0JveD0iMCAwIDkyIDM1IiBmaWxsPSJub25lIj4KICA8cGF0aCBkPSJNOS45MzAxNSA1LjI3NjI0QzExLjY3MTMgMi4wMjc1NCAxNS4wNTgzIDAgMTguNzQ0MSAwSDgyQzg3LjUyMjkgMCA5MiA0LjQ3NzE1IDkyIDEwVjI1QzkyIDMwLjUyMjggODcuNTIyOSAzNSA4MiAzNUg5LjAzNDUxQzIuMjMyMiAzNSAtMi4xMTEzMSAyNy43NDQyIDEuMTAxOTQgMjEuNzQ4Nkw5LjkzMDE1IDUuMjc2MjRaIiBmaWxsPSJibGFjayIgZmlsbC1vcGFjaXR5PSIwLjg1Ii8+Cjwvc3ZnPg==');
  37. }
  38. .white {
  39. border-image-source: url('data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTE1IiBoZWlnaHQ9IjQ0IiB2aWV3Qm94PSIwIDAgMTE1IDQ0IiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgo8cGF0aCBpZD0iUmVjdGFuZ2xlIDEzNTAiIGQ9Ik0xNS4xNjQ0IDUuMzcyMzhDMTYuODg4MSAyLjA3MDMyIDIwLjMwNDMgMCAyNC4wMjkyIDBIMTA1QzExMC41MjMgMCAxMTUgNC40NzcxNSAxMTUgMTBWMzRDMTE1IDM5LjUyMjggMTEwLjUyMyA0NCAxMDUgNDRIOS44NTA2NUMzLjA5MTM5IDQ0IC0xLjI1NTYyIDM2LjgyNzEgMS44NzIzMSAzMC44MzUxTDE1LjE2NDQgNS4zNzIzOFoiIGZpbGw9IndoaXRlIi8+Cjwvc3ZnPgo=');
  40. @apply text-black text-base font-normal font-['PingFang_SC'] leading-tight;
  41. }
  42. .large {
  43. @apply h-11;
  44. }
  45. </style>