类似的效果如下图:

1. 生成一个component

  1. ionic g component MySlide

2. 在my-slide.html中添加代码:

  1. <ion-slides class="slide-title" [options]="mySlideOptions">
  2. <ion-slide *ngFor="let slide of slides; let i = index;">
  3. <div (click)="onClick(i)">
  4. <span class="slide-title-unit" [ngClass]="{'slide-title-active': selectedIndex == i}">{{slide}}</span>
  5. </div>
  6. </ion-slide>
  7. </ion-slides>

其中slides是一个数组,存放类型字符串,如上图显示的"推荐", "环球"等

3. 在my-slide.ts中添加代码:

  1. import {Component, Input, Output, EventEmitter} from '@angular/core';
  2. @Component({
  3. selector: 'my-slide',
  4. templateUrl: 'build/components/my-slide/my-slide.html'
  5. })
  6. export class MySlide {
  7. @Input("slides") slides: string[] = [];
  8. @Input("pageNumber") pageNumber: number = 5;
  9. @Output("slideClick") slideClick = new EventEmitter<number>();
  10. mySlideOptions;
  11. selectedIndex: number = 0;
  12. constructor() {
  13. }
  14. ngOnInit() {
  15. this.mySlideOptions = {
  16. loop: false,
  17. autoplay: false,
  18. initialSlide: 0,
  19. pager: false,
  20. slidesPerView: this.pageNumber,
  21. paginationHide: true,
  22. paginationClickable: true
  23. };
  24. }
  25. onClick(index) {
  26. this.selectedIndex = index;
  27. this.slideClick.emit(index);
  28. }
  29. }

Input参数slides,my-slide的属性传入,显示类型的字符串数组。

Input参数pageNumber,my-slide的属性传入,表示当前屏幕可以显示的类型数目,默认为5。

Output参数slideClick,当点击某个类型时,将点击的index返回给使用者。

4. my-slide.scss

  1. $slide-height-small: 40px;
  2. $slide-height-large: 50px;
  3. .slide-title {
  4. width: 100%;
  5. height: $slide-height-small;
  6. color: #666666;
  7. padding: 0;
  8. }
  9. .slide-title-unit {
  10. padding-bottom: 8px;
  11. font-size: 14px;
  12. height: $slide-height-small;
  13. line-height: $slide-height-small;
  14. }
  15. .slide-title-active {
  16. color: map_get($colors, primary);
  17. border-bottom: 3px solid map_get($colors, primary);
  18. }

其中slide-title-active表示选中时改变类型文字颜色以及下方显示横线。

5. 使用方法:

  1. <my-slide (slideClick)="onSlideClick($event)" [slides]="pageSlides" [pageNumber]="7"></my-slide>

最后,不要忘记在@Component中添加directives: [MySlide]

最新文章

  1. adb shell出错“error: unknown host service”
  2. Mac 安装终端软件
  3. ch2-4:遇到嵌套列表进行缩进打印
  4. Could not load oracle/sql/converter_xcharset/lx20354.glb.
  5. beanutils中jdbc
  6. sql连接查询 2011-10-10 23:13 (QQ空间)
  7. html基础及心得
  8. iOS 推送问题全解答《十万个为啥吖?》
  9. Asp.Net Web APi 路由的特点
  10. Mysql常用命令()
  11. 第二次spring会议
  12. What does &quot;exceeded limit of maxWarmingSearchers=X&quot; mean?
  13. 7.7 服务远程暴露 - 订阅与通知(TODO)
  14. 关于javascript的cookie的封装
  15. hadoop fs -put localfile . 时出现如下错误: could only be replicated to 0 nodes, instead of 1
  16. lintcode-422-最后一个单词的长度
  17. BZOJ1010:[HNOI2008]玩具装箱——题解
  18. C语言结构体数组内带字符数组初始化和赋值
  19. Asp.net Core 启动流程分析
  20. 在DOS界面下快速进入目录的技巧

热门文章

  1. python_23_tuple
  2. C# 目录下的文件操作
  3. Java连接MySQL数据库实现用户名密码的验证方法 Java语句中sql查询语句&#39;&#39; &quot;&quot;作用
  4. ORA-04031: Unable To Allocate 32 Bytes Of Shared Memory
  5. 基于django的个人博客网站建立(一)
  6. python3 练习题100例 (七)
  7. python os模块进程函数
  8. C++ 11 从C++ primer第五版的学习笔记
  9. codeforce830A. Office Keys
  10. loj2035 「SDOI2016」征途