ionic2 使用自定义图片作为tabbar的icon

本文介绍如何在Ionic项目中自定义Tab栏图标,包括为不同状态选择不同的图标样式及实现跨平台(iOS与Android)的适配。

在tabs.html中

<ion-tabs tabsPlacement="bottom">
  <ion-tab [root]="tab1Root" tabTitle="tab1" tabIcon="tab-tab1"></ion-tab>
  <ion-tab [root]="tab2Root" tabTitle="tab2" tabIcon="tab-tab2"></ion-tab>
  <ion-tab [root]="tab3Root" tabTitle="tab3" tabIcon="tab-tab3"></ion-tab>
</ion-tabs>


添加tabs.scss,并在其中定义如下

.ion-tab-icon-base {
  width: 32px;
  height: 32px;
  padding: 4px 4px 2px;
}

.ion-tab-icon-md-base {
  min-width: 0 !important;
  height: 32px;
}

$tabImageName: 'tab1' 'tab2' 'tab3';
@for $i from 1 to 4 {
  //for ios
  .ion-ios-tab-#{nth($tabImageName, $i)} {
    @extend .ion-tab-icon-base;
    content: url("../assets/images/tabs/#{nth($tabImageName, $i)}_choosed.png");
  }
  .ion-ios-tab-#{nth($tabImageName, $i)}-outline {
    @extend .ion-tab-icon-base;
    content: url("../assets/images/tabs/#{nth($tabImageName, $i)}.png");
  }

  // for android
  .tabs-md .tab-button[aria-selected=true] {
    .ion-md-tab-#{nth($tabImageName, $i)} {
      @extend .ion-tab-icon-md-base;
      content: url("../assets/images/tabs/#{nth($tabImageName, $i)}_choosed.png");
    }
  }
  .tabs-md .tab-button[aria-selected=false] {
    .ion-md-tab-#{nth($tabImageName, $i)} {
      @extend .ion-tab-icon-md-base;
      content: url("../assets/images/tabs/#{nth($tabImageName, $i)}.png");
    }
  }
}

ios的比较简单,只要直接定义.ion-ios-tab-tabX以及.ion-ios-tab-tabX-outline即可。

android则需要设置.tabs-md .tab-button下不同属性的.ion-md-tab-tabX

其中,tabX表示tab1,tab2,tab3等,具体的名字根据自己喜好。

编译生成的css如下

.ion-ios-tab-tab1 {
  content: url("../assets/images/tabs/tab1_choosed.png");
}

.ion-ios-tab-tab1-outline {
  content: url("../assets/images/tabs/tab1.png");
}

.tabs-md .tab-button[aria-selected=true] .ion-md-tab-tab1 {
  content: url("../assets/images/tabs/tab1_choosed.png");
}

.tabs-md .tab-button[aria-selected=false] .ion-md-tab-tab1 {
  content: url("../assets/images/tabs/tab1.png");
}

以上样例所有图片均放在src/assets/images/tabs目录下,并以tabX.png和tabX_choosed.png命名。

如果亲们有更好的方法可以告知,谢谢!

### 如何在 Ionic `ion-tab` 中使用自定义图标 为了实现自定义图标的配置,在 HTML 文件中需按照特定结构编写代码。对于每一个 `ion-tab` 组件,可以通过指定属性来关联不同的根页面以及设定标签标题和图标名称。 ```html <ion-tabs> <ion-tab [root]="tab1Root" tabTitle="借款" tabIcon="custom-loan"></ion-tab> <ion-tab [root]="tab2Root" tabTitle="认证" tabIcon="custom-auth"></ion-tab> <ion-tab [root]="tab3Root" tabTitle="我的" tabIcon="custom-me"></ion-tab> </ion-tabs> ``` 当涉及到非内置的 Ionicon 图标时,则需要额外的工作来引入这些资源并确保它们能够被正确显示出来。这通常涉及两个主要方面: #### 添加 SVG 或 PNG 图像文件作为自定义图标 如果打算利用本地存储的图像文件充当自定义图标,那么应该先把这些图形素材放置到项目的合适位置下,比如 assets 文件夹内。之后通过 CSS 来加载这些图片,并应用给对应的 Tab 控件[^2]。 ```css .tabbar .tab-button[aria-label='借款'] ion-icon { background-image: url('/assets/icons/loan.svg'); } .tabbar .tab-button[aria-label='认证'] ion-icon { background-image: url('/assets/icons/auth.png'); } ``` #### 使用第三方字体库中的图标字符 另一种方式是从其他在线服务获取所需样式表链接,并将其加入项目头部区域;接着参照官方文档选取合适的类名或 Unicode 编码用于表示目标符号。此方法适用于那些已经集成好 Web 字体的服务提供商所发布的图标集[^3]。 例如,假设选择了 Font Awesome 的某个版本,可以在全局样式文件 app.component.css 中添加如下导入语句: ```scss @import '~font-awesome/css/font-awesome.min.css'; ``` 随后修改对应 Tab 的模板部分,采用 fa 前缀加上具体的名字代替默认值: ```html <ion-tab [root]="tab1Root" tabTitle="借款"> <ion-icon name="fa-bank"></ion-icon> <!-- 银行 --> </ion-tab> ``` 需要注意的是,上述例子仅作示意用途,实际操作过程中可能还需要根据具体情况调整路径、选择器或者其他细节之处以适应不同环境下的需求变化。
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值