c-tabbar


tabbar组件

注意需要升级最新的cml-ui,在项目根目录执行npm i cml-ui@latest -S

属性

属性名类型必填默认值说明
c-bind:onclickEventHandletab被点击的时候会触发该事件,参数详情中detail.compName是tabbar.list配置中的compName
c-modelString当 使用 component 动态组件的时候,更方便的和动态组件要渲染的组件名有个对应,具体使用方式参考下面案例中的 currentComp
tabbarObject{}详情见下表

tabbar 详情

属性名类型必填默认值说明
useFixedLayoutBooleanfalse用于决定是否使用position:fixed 这种布局方式去布局tabbar组件
positionString'bottom'仅在useFixedLayout 为true的时候生效
tabbarStyleString''tabbar样式支持自定义
tabLineStyleString'background-color:#FC9153;height:2cpx;'tabbar的下划线自定义样式,仅在 position 设置为top的时候有效
textStyleString'color:#000000'tabbar文案默认的样式
selectedTextStyleString'color:#61c7fc'tabbar文案被选中的时候的样式
listArray[]配置tabbar的icon,文案等,详情见下表

list 中数组每一项的配置详情

属性名类型必填默认值说明
textString''tab的文案
icon网络图片地址或者require(path/to/image)tab的icon
selectedIcon网络图片地址或者require(path/to/image)tab被选中时显示的icon
iconStyleString默认的icon的宽高是40cpx;设置icon的样式
selectedIconStyleString设置icon被选中的时候的样式
compNameString选择'usingComponents'中的组件进行对应,需要结合component动态组件进行渲染

示例

  1. <template>
  2. <view>
  3. <view style="height:{{viewPortHeight}}cpx;background-color:#42f4f4" >
  4. <component is="{{currentComp}}" ></component>
  5. </view>
  6. <c-tabbar
  7. c-bind:onclick='handleTabbarClick'
  8. c-model="{{currentComp}}"
  9. tabbar="{{tabbar}}"
  10. ></c-tabbar>
  11. </view>
  12. </template>
  13. <script>
  14. import cml from "chameleon-api";
  15. class Index {
  16. data = {
  17. viewPortHeight:0,
  18. currentComp:'comp1',
  19. tabbar:{
  20. "tabbarStyle":"height:120cpx;background-color:#BAF6E8",//tabbar最外层的样式支持自定义
  21. "tabLineStyle":"background-color:#069ADC;height:2cpx;",//自定义tabline的高度和背景色
  22. "textStyle":"color:#3b3b3b", //文案默认style ,可以这里控制文案的大小,样式等
  23. "selectedTextStyle":"color:#3baaff",//文案被选择style
  24. // "position":"top", //tabbar的位置 top/bottom
  25. "useFixedLayout":true, //是否通过fixed布局进行tabbar的布局
  26. "list":[
  27. {
  28. "compName":"comp1",
  29. "text": "detail",
  30. "icon": require("../../assets/images/chameleon.png"),
  31. },
  32. {
  33. "compName":"comp2",
  34. "text": "home",
  35. "icon": require("../../assets/images/chameleon.png"),
  36. }
  37. ]
  38. },
  39. }
  40. methods = {
  41. handleTabbarClick(args){
  42. console.log('tabbar-info',args)
  43. }
  44. }
  45. created(res){
  46. cml.getSystemInfo().then(info => {
  47. //这里要减去tabbar的高度,默认是120cpx,如果tabbarStyle中设置了其他高度,则要减去对应的值;
  48. this.viewPortHeight = Number(info.viewportHeight) - 120;
  49. });
  50. if(res.comp){ //这里可以在传递的query中获取到想要激活的组件,具体使用方式参见文末的demo链接
  51. this.currentComp = res.comp;
  52. }
  53. }
  54. }
  55. export default new Index();
  56. </script>
  57. <style>
  58. </style>
  59. <script cml-type="json">
  60. {
  61. "base": {
  62. "usingComponents": {
  63. "c-tabbar":"cml-ui/components/c-tabbar/c-tabbar",
  64. "comp1":"/components/demo-com/comp1",
  65. "comp2":"/components/demo-com/comp2"
  66. }
  67. }
  68. }
  69. </script>

c-tabbar  - 图1wx

c-tabbar  - 图2web

c-tabbar  - 图3native

查看完整示例