tm-row.vue 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. <template>
  2. <view @click="$emit('click',$event)" :gutter="gutter" class="tm--row" :class="[preatClass]" >
  3. <view class="tm--row--body" :style="style" :class="[customClass]">
  4. <view v-show="chuliWsok==true">
  5. <slot></slot>
  6. </view>
  7. </view>
  8. </view>
  9. </template>
  10. <script>
  11. /**
  12. * 栅格排版ROW
  13. * @description 请注意,它需要配合col使用,不能单独使用。
  14. * @property {String} justify = [center|flex-start|flex-start|space-between|space-around] 横向对齐方向
  15. * @property {String} align = [center|flex-start|flex-end] 子项目纵向对齐方式。
  16. * @property {String|Number} width = [100%|auto] 宽度,可以是数字其它百分比,数字时单位为px
  17. * @property {String|Number} height = [100%|auto] 高度,可以是数字其它百分比,数字时单位为px
  18. * @property {Array} gutter = [] 默认:[0,0]左右,和上下间距。优先级别小于col组件内部的间距。
  19. * @property {String} custom-class = [] 自定义类。
  20. */
  21. export default {
  22. name:"tm-row",
  23. props:{
  24. // 自定义类。
  25. customClass: {
  26. type: String,
  27. default: ''
  28. },
  29. // 自定义类。
  30. preatClass: {
  31. type: String,
  32. default: ''
  33. },
  34. // 子项目横向对齐方式。
  35. justify:{
  36. type:String,
  37. default:'flex-start'
  38. },
  39. // 子项目纵向对齐方式。
  40. align:{
  41. type:String,
  42. default:'center'
  43. },
  44. width: {
  45. type: String | Number,
  46. default: '100%'
  47. },
  48. height: {
  49. type: String | Number,
  50. default: ""
  51. },
  52. // 左右,和上下间距。优先级别小于col组件内部的间距。
  53. gutter:{
  54. type:Array,
  55. default:()=>{
  56. return [0,0]
  57. }
  58. }
  59. },
  60. data() {
  61. return {
  62. width_px:0,
  63. children_num:0,
  64. style:'',
  65. chuliWsok:false,//处理完宽度计算信息再进行显示内部内容。
  66. };
  67. },
  68. async mounted() {
  69. let t = this;
  70. await this.$Querey('.tm--row',this).then(preantw=>{
  71. t.width_px = preantw[0].width;
  72. // #ifndef H5
  73. t.children_num = t.$children.length;
  74. // #endif
  75. // #ifdef H5
  76. t.children_num = t.$children[0].$children[0].$children[0].$children.length;
  77. // #endif
  78. t.style = uni.$tm.objToString({
  79. 'justify-content':t.justify,
  80. 'align-items':t.align,
  81. 'width':t.width,
  82. 'height':!t.height?'default':(uni.upx2px(t.height)+'px')
  83. },';');
  84. t.chuliWsok = true;
  85. }).catch(e=>{})
  86. }
  87. }
  88. </script>
  89. <style lang="scss" scoped>
  90. .tm--row{
  91. display: flex;
  92. flex-flow: row wrap;
  93. width: auto;
  94. .tm--row--body{
  95. height: 100%;
  96. flex-flow: row wrap;
  97. }
  98. }
  99. </style>