再次觀察UI設(shè)計效果圖抖甘,里面用的比較多的是這種樣式的選項卡:
用ionic3來實現(xiàn)就是采用segment組件热鞍。其中ios和android的樣式分別如下兩圖:
可見,android的segment樣式比較接近,所以我們選用android的樣式(md薇宠,Google最先提出的偷办,成為android官方樣式規(guī)范),把contact.html
的<ion-header>
標簽部分換成下面內(nèi)容:
<ion-header no-border>
<ion-toolbar>
<ion-segment mode="md">
<ion-segment-button>
EXPLAIN
</ion-segment-button>
<ion-segment-button>
GROUP CHAT
</ion-segment-button>
<ion-segment-button>
CONTACTS
</ion-segment-button>
</ion-segment>
</ion-toolbar>
</ion-header>
注:關(guān)鍵代碼是這句
mode="md"
澄港,它指定了該組件的模式為md椒涯。因為前面章節(jié),我們在app.module.ts
中做了全局配置mode="ios"
回梧,所以組件默認都會使用ios樣式废岂,所以這里指定為md。
然后看看效果:
可以發(fā)現(xiàn)每項下面的線太長了:
在Chrome調(diào)試可以看到狱意,這其實是屬于ion-segment-button的下border湖苞,所以長度無法修改的,于是我們換另一種方式——添加一個短border的div:
-
<ion-segment-button>
里面添加一個class="bolder-sm"
的div
<ion-header no-border>
<ion-toolbar>
<ion-segment mode="md">
<ion-segment-button>
EXPLAIN
<div class="bolder-sm"></div>
</ion-segment-button>
<ion-segment-button>
GROUP CHAT
<div class="bolder-sm"></div>
</ion-segment-button>
<ion-segment-button>
CONTACTS
<div class="bolder-sm"></div>
</ion-segment-button>
</ion-segment>
</ion-toolbar>
</ion-header>
- 在
app.scss
文件添加下面樣式:
/***** segment顏色定制 start *********/
.segment-md .segment-button {
color: color($colors, gray) !important;
}
.segment-md .segment-button.segment-activated {
color: color($colors, primary) !important;
font-weight: bold;
.bolder-sm{
border: 5px solid color($colors, primary);
width: 20px;
margin: 0 auto;
}
}
/***** segment顏色定制 end ********/
- 最后把原
ion-segment-button
的border去掉详囤,在variables.scss
添加如下內(nèi)容:
$segment-button-md-border-bottom-width: 0px;
$segment-button-md-font-size: 1.4rem;
最后運行查看效果:
而對于這種有反轉(zhuǎn)色的情況:
我們只需在全局樣式文件
app.scss
中的.primary-bg
里添加類似代碼即可:
/*********** 背景色 start **********/
.primary-bg {
.toolbar {
.toolbar-background {
background-color: color($colors, primary);
}
.toolbar-title{
color: color($colors, light);
}
}
.segment-md .segment-button {
color: color($colors, light-gray) !important;
}
.segment-md .segment-button.segment-activated{
color: color($colors, light) !important;
font-weight: bold;
.bolder-sm{
border: 5px solid color($colors, light);
width: 20px;
margin: 0 auto;
}
}
}
/*********** 背景色 end **********/
最后我們可以在about.html
里添加相應組件:
<ion-header class="primary-bg" no-border>
<ion-navbar>
<ion-buttons start>
<button ion-button icon-only color="light">
<ion-icon name="md-add"></ion-icon>
</button>
</ion-buttons>
<ion-title>
RECIPE ARCHIVE
</ion-title>
<ion-buttons end>
<button ion-button icon-only color="light">
<ion-icon name="md-menu"></ion-icon>
</button>
</ion-buttons>
</ion-navbar>
<ion-toolbar>
<ion-segment mode="md">
<ion-segment-button value="one">
DESSERT
<div class="bolder-sm"></div>
</ion-segment-button>
<ion-segment-button value="two">
DRINKS
<div class="bolder-sm"></div>
</ion-segment-button>
<ion-segment-button value="three">
EINKORN
<div class="bolder-sm"></div>
</ion-segment-button>
<ion-segment-button value="four">
LIFESTYLE
<div class="bolder-sm"></div>
</ion-segment-button>
</ion-segment>
</ion-toolbar>
</ion-header>
運行看看效果:
可以看到袒啼,界面美化基本就是原有組件和樣式調(diào)整的過程,然而可以看到纬纪,在調(diào)整原有組件過程中蚓再,增加了頁面的代碼量,不利于閱讀包各,所以我們應該把它封裝成自定義組件摘仅,以便于復用,這是后話问畅,后面章節(jié)再說娃属。