【问题标题】:Apply CSS to ionic 2 tabs and navbar将 CSS 应用于 ionic 2 选项卡和导航栏
【发布时间】:2017-12-04 22:12:41
【问题描述】:

我已经使用空白模板从头开始构建了一个 ionic 2 应用程序,并且我使用 TabsPage 作为应用程序的 rootPage。现在我想将字体大小和字体粗细更改为文本显示,在其中我使用 tabTitle 属性来显示每个选项卡的标题,所以我尝试在 .ts 文件中设置基本 css,如下所示:

import { Component } from '@angular/core';

import { NewsPage } from '../news/news';
import { AboutusPage } from '../aboutus/aboutus';
import { ContactusPage } from '../contactus/contactus';

@Component ({
  selector: 'page-tabs',
  template:`
    <ion-tabs color="background-blue">
      <ion-tab [root]="newsPage" tabTitle="الأخبار"></ion-tab>
      <ion-tab [root]="aboutusPage" tabTitle="عن البرنامج"></ion-tab>
      <ion-tab [root]="contactusPage" tabTitle="أتصل بنا"></ion-tab>
    </ion-tabs>
  `,
  styles:[`
    page-tabs {
      .ios, .md {
            ion-tabs {
                font-weight: bold;
                font-size: 15px;
            }
        }
    }
  `]
})

export class TabsPage {
  newsPage = NewsPage;
  aboutusPage = AboutusPage;
  contactusPage = ContactusPage;
}

同样,我想将这些样式应用到显示在 NewsPage 中的导航栏这是此页面的代码另外你必须知道我使用 sass 文件应用了一些 css:

import { Component } from '@angular/core';
import { IonicPage, NavController, NavParams } from 'ionic-angular';

/**
 * Generated class for the NewsPage page.
 *
 * See http://ionicframework.com/docs/components/#navigation for more info
 * on Ionic pages and navigation.
 */
@IonicPage()
@Component({
  selector: 'page-news',
  templateUrl: 'news.html',
})
export class NewsPage {

  constructor(public navCtrl: NavController, public navParams: NavParams) {
  }

  ionViewDidLoad() {
    console.log('ionViewDidLoad NewsPage');
  }

}
.ios, .md {
    page-news {
        ion-content {
            background-color: #f6f6f9;

            ion-card {
                ion-card-content {
                    padding-top: 0px;

                    ion-card-title {
                        font-size: 18px;
                    }
                    p {
                        font-size: 15px;
                    }
                }
                ion-item {
                    h2 {
                        font-size: 15px;
                    }
                    p {
                        font-size: 14px;
                    }
                }
            }
        }
    }
}
<ion-header>

  <ion-navbar color='background-blue'>
    <ion-title>الأخبار</ion-title>
  </ion-navbar>

</ion-header>


<ion-content>
  <ion-card>
    <ion-row>
      <ion-col>
        <ion-item>
          <ion-avatar item-start>
            <img src="../../assets/avatars/arwa.png" />
          </ion-avatar>
          <h2><b>ثانوية عروة بن الزبير</b></h2>
          <p>منطقة الجهراء التعليمية </p>
        </ion-item>
    </ion-col>
    <ion-col center text-left padding>
      <ion-note  dir="ltr" lang="en">
        1m
      </ion-note>
      <ion-note></ion-note>
    </ion-col>
    </ion-row>
    <ion-card-content>
      <ion-card-title>
        نجل زيدان لنضم لـ آلافيس
      </ion-card-title>
      <p>
        تعاقد نادي آلافيس الإسباني مع اللاعب الشاب إنزو زيدان من ريال مدريد لثلاثة مواسم مقبلة مع احتفاظ النادي الملكي بحق إعادة الشراء.
      </p>
    </ion-card-content>
    <img src="http://s2.alraimedia.com/CMS/Attachments/2017/6/30/611246_2_-_Qu65_RT728x0-_OS990x557-_RD728x409-.jpg">
  </ion-card>

  <ion-card>
    <ion-row>
      <ion-col>
    <ion-item>
      <ion-avatar item-start>
        <img src="../../assets/avatars/alghanim.png" />
      </ion-avatar>
      <h2><b>ثانوية عبداللطيف ثنيان الغانم</b></h2>
      <p>منطقة الفروانية التعليمية </p>
    </ion-item>
    </ion-col>
    <ion-col center text-left padding>
      <ion-note dir="ltr" lang="en">
        17 Jan 5
      </ion-note>
      <ion-note></ion-note>
    </ion-col>
    </ion-row>
    <ion-card-content>
      <ion-card-title>
        ألمانيا تسحق المكسيك
      </ion-card-title>
      <p>
        وضع المنتخب الألماني حدًا لمغامرة نظيره المكسيكي في بطولة كأس القارات، وحصد فوزًا مستحقًا بنتيجة 4-1، مساء اليوم الخميس، في نصف نهائي البطولة التي تستضيفها روسيا، ليضرب موعدًا مع تشيلي في النهائي.
      </p>
    </ion-card-content>
    <img src="http://img.kooora.com/?i=reuters%2f2017-06-29%2f2017-06-29t181145z_254853844_rc12d4ad5380_rtrmadp_3_soccer-confederations-ger-mex_reuters.jpg">
  </ion-card>
</ion-content>

【问题讨论】:

    标签: javascript css angular sass ionic2


    【解决方案1】:

    你的第一个页面标签样式是错误的。

    您没有添加 tabTitle 选择器或 ion-tab 标签。 你应该在你的 tabs 文件夹中创建一个 tabs.scss 并从你的 tabs.ts 中删除 [styles]

    尝试在 tabs.scss 中添加此代码:

    .tab-button span {
        font-weight: bold;
        font-size: 15px;
    }
    

    所以总体而言,您的 tabs.scss 将如下所示:

    page-tabs {
      .ios, .md {
            ion-tabs {
                 a.tab-button span {
                    font-weight: bold;
                    font-size: 15px;
                }
            }
        }
    }
    

    你的 tabs.ts 应该是这样的:

    import { Component } from '@angular/core';
    
    import { NewsPage } from '../news/news';
    import { AboutusPage } from '../aboutus/aboutus';
    import { ContactusPage } from '../contactus/contactus';
    
    @Component ({
      selector: 'page-tabs',
      template:`
        <ion-tabs color="background-blue">
          <ion-tab [root]="newsPage" tabTitle="الأخبار"></ion-tab>
          <ion-tab [root]="aboutusPage" tabTitle="عن البرنامج"></ion-tab>
          <ion-tab [root]="contactusPage" tabTitle="أتصل بنا"></ion-tab>
        </ion-tabs>
      `
    })
    
    export class TabsPage {
      newsPage = NewsPage;
      aboutusPage = AboutusPage;
      contactusPage = ContactusPage;
    }
    

    而且,如果我理解正确,您希望 ion-navbar 标题具有与 tabTitle 选择器相同的字体大小和字体粗细,然后:

    您应该修改您的 sass 文件,并为导航栏添加样式。 应该是这样的:

    .ios, .md {
        /* We add the code here */
        ion-header {
            ion-navbar {
                ion-title .toolbar-title {
                    font-weight: bold;
                    font-size: 15px;
                }
            }
        }
        page-news {
            ion-content {
                background-color: #f6f6f9;
    
                ion-card {
                    ion-card-content {
                        padding-top: 0px;
    
                        ion-card-title {
                            font-size: 18px;
                        }
                        p {
                            font-size: 15px;
                        }
                    }
                    ion-item {
                        h2 {
                            font-size: 15px;
                        }
                        p {
                            font-size: 14px;
                        }
                    }
                }
            }
        }
    }
    

    【讨论】:

    • 嗨,我现在想在标签页的标签标题中添加我自己的自定义样式,我写的 css 在应用中根本没有任何效果。
    • 仍然没有应用 css 样式,我不得不说我已经知道如何使用覆盖离子变量来更改字体大小,但我想知道我是如何通过 css/sass 文件做到这一点的让我更轻松。
    • @FahadAlDaferi 好的,我编辑了代码,如果有效,请重试。只需使用 .tab-button 代替 [tabTitle] 或 ion-tab。对于导航栏使用 .toolbar-title,它应该可以正常工作(在我看来它工作得很好)
    • @Sebastain 感谢导航栏工作正常,但标签仍然无效?!
    • 很奇怪。试试 /deep/ .tab-button { 告诉我。如果它仍然不起作用,请将您的页面标签文件的所有实际代码发送给我
    【解决方案2】:

    只需复制并粘贴此 css:

    对于未选择的标签:

    .tabs-md-primary .tab-button, .tabs-md-primary .tab-button-icon {
        color: black;
    }
    

    对于选定的标签:

    .tabs-ios-primary .tab-button[aria-selected=true], .tabs-ios-primary .tab-button[aria-selected=true],
    .tabs-md-primary .tab-button[aria-selected=true], .tabs-md-primary .tab-button[aria-selected=true] {
        color: #fff;
        font-weight:bold;
        border-top: white solid;
    }
    

    Click here to see tabs after adding above style in my code

    【讨论】:

    • 感谢您的帮助,但代码仍然没有对标签标题产生任何影响,不知道为什么?即使我创建一个新的 tabs.scss 文件来托管样式也不起作用它有什么问题吗?
    • 您必须知道我手动创建 TabsPage 并将其注册为 app.component.ts 中的 rootPage 也在 app.module.ts 声明和 entryComponents 中
    • 我也要感谢你给我关于已选择和未选择标签的注释,这提前解决了我的下一步行动:)
    猜你喜欢
    • 2017-12-27
    • 2019-08-14
    • 2019-06-05
    • 2017-12-29
    • 1970-01-01
    • 1970-01-01
    • 2019-03-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多