HeadlineDecorate.vue 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. <template>
  2. <view :class="['headline-dcorate' , reversal ? 'reversal-dcorate' :'']">
  3. <template v-for="(item , index) in count">
  4. <view class="item" :style="{width:getW(index)+'rpx',height:h+'rpx' }">
  5. <view class="item-dcorate" :style="{width:w+'rpx',height:h+'rpx',backgroundColor:bgcolor}" />
  6. </view>
  7. </template>
  8. </view>
  9. </template>
  10. <script name="HeadlineDecorate" lang="ts" setup>
  11. const $Props = defineProps({
  12. w: {
  13. type: Number,
  14. default: 23
  15. },
  16. h: {
  17. type: Number,
  18. default: 27
  19. },
  20. bgcolor: {
  21. type: String,
  22. default: '#FCCAC4'
  23. },
  24. count: {
  25. type: Number,
  26. default: 3
  27. },
  28. reversal: {
  29. type: Boolean,
  30. default: false
  31. }
  32. });
  33. const getW = (index) => {
  34. return index === $Props.count - 1 ? $Props.w : $Props.w * 0.8;
  35. }
  36. </script>
  37. <style lang="scss" scoped>
  38. .reversal-dcorate{
  39. transform: rotate(180deg);
  40. }
  41. .headline-dcorate {
  42. flex-shrink: 0;
  43. display: inline-flex;
  44. align-items: center;
  45. .item {
  46. .item-dcorate {
  47. clip-path: polygon(0% 0%, 60% 0%, 100% 50%, 60% 100%, 0% 100%, 40% 50%);
  48. }
  49. // &:nth-child(n+2){
  50. // transform: translateX(-20%);
  51. // }
  52. }
  53. }
  54. </style>