ionic3項(xiàng)目實(shí)戰(zhàn)教程 - 第4講 ionic3商城首頁(yè)設(shè)計(jì)(幻燈片+圖標(biāo)分類)

商城首頁(yè)主要包含以下幾個(gè)部分

  • 1.使用ion-slide實(shí)現(xiàn)首頁(yè)幻燈片颗祝;
  • 2.使用ion-grid實(shí)現(xiàn)商品分類蓄愁;
  • 3.使用ion-list實(shí)現(xiàn)商品列表嘱朽;

說(shuō)一下實(shí)現(xiàn)思路

  • 1.先獲取網(wǎng)絡(luò)請(qǐng)求的數(shù)據(jù)轨帜,查看數(shù)據(jù)結(jié)構(gòu)转锈;
  • 2.根據(jù)數(shù)據(jù)結(jié)構(gòu)來(lái)判斷需要展示的數(shù)據(jù),編寫(xiě)html;
  • 3.調(diào)整界面樣式衔憨,編寫(xiě)scss叶圃;

準(zhǔn)備工作

開(kāi)始之前請(qǐng)到阿里開(kāi)源圖標(biāo)庫(kù)準(zhǔn)備首頁(yè)需要的小圖標(biāo),不想自己找的同學(xué)践图,在文章最后的交流群的群文件里有導(dǎo)出好的資源小圖標(biāo)掺冠,下載后直接放到項(xiàng)目的src/assets/icon/目錄中即可。
并在index.html的header節(jié)點(diǎn)中導(dǎo)入資源圖標(biāo)庫(kù)码党;

index.html

  <link href="assets/icon/iconfont.css" rel="stylesheet">

詳細(xì)代碼如下:

home.ts

import { AppService, AppGlobal } from './../../app/app.service';
import { Component } from '@angular/core';
import { NavController, IonicPage } from 'ionic-angular';

@IonicPage()
@Component({
  selector: 'page-home',
  templateUrl: 'home.html'
})
export class HomePage {

  slides: Array<any> = [];
  categories: Array<any> = [];
  products: Array<any> = [];

  spinner1: boolean = true;

  params = {
    favoritesId: 2054400,
    pageNo: 1,
    pageSize: 20
  }

  constructor(public appService: AppService, public navCtrl: NavController) {
    this.getSlides();
    this.getCategories();
    this.getProducts();
  }
  //獲取幻燈片
  getSlides() {
    var params = {
      favoritesId: 2056439,
      pageNo: 1,
      pageSize: 5
    }
    this.appService.httpGet(AppGlobal.API.getProducts, params, rs => {
      console.debug(rs);
      this.slides = rs.data;
      this.spinner1 = false;
    })
  }
  //獲取分類
  getCategories() {
    this.appService.httpGet(AppGlobal.API.getCategories, { appTag: 'dress' }, rs => {
      console.debug(rs);
      this.categories = rs.data;
    })
  }
  //獲取首頁(yè)推薦列表
  getProducts() {
    this.appService.httpGet(AppGlobal.API.getProducts, this.params, rs => {
      console.debug(rs);
      this.products = rs.data;
    })
  }
  //商品詳情
  goDetails(item) {
    console.debug('go details...')
  }
}

home.html

<ion-header>
  <ion-navbar color="primary">
    <ion-title>首頁(yè)</ion-title>
  </ion-navbar>
</ion-header>
<ion-content>

  <ion-row *ngIf="spinner1">
    <ion-col text-center>
      <ion-spinner></ion-spinner>
    </ion-col>
  </ion-row>

  <ion-slides>
    <ion-slide *ngFor="let item of slides" (click)="goDetails(item)">
        < img src="{{item.PictUrl}}" alt="">
      <div class="cover"></div>
      <span class="title">{{item.Title}}</span>
    </ion-slide>
  </ion-slides>


  <div class="categories">
    <ion-grid>
      <ion-row wrap>
        <ion-col text-center tappable col-3 *ngFor="let c of categories" (click)="goProductList(c)">
          <i class="iconfont {{c.Icon}} icon"></i>
          <span class="title">{{c.FavoritesTitle}}</span>
        </ion-col>
      </ion-row>
    </ion-grid>
  </div>

  <ion-item-divider class="t-header" color="light"> 年會(huì)禮服2017年新款 </ion-item-divider>
  <div class="product">
    <ion-row wrap>
      <ion-col tappable col-6 *ngFor="let p of products" (click)="goDetails(p)">
        <img src="{{p.PictUrl}}" alt=""/>
        <p>{{p.Title}}</p>
        <div class="list-price buy">
          <span class="price-new"><i>¥</i>{{p.ZkFinalPrice}}</span>
          <i class="del">¥<span>{{p.ReservePrice}}</span></i>
        </div>
      </ion-col>
    </ion-row>
  </div>

</ion-content>

html.scss

page-home {
  ion-slides {
    height: 30%;
    .cover {
      position: absolute;
      bottom: 0px;
      width: 100%;
      height: 20px;
      background: linear-gradient(to right, #673743, #f9537d);
      opacity: 0.6;
    }
    .title {
      position: absolute;
      bottom: 0px;
      width: 90%;
      height: 20px;
      line-height: 20px;
      font-size: 60%;
      left: 5px;
      text-align: center;
      color: white;
    }
  }
  .categories {
    .title {
      font-family: "黑體-簡(jiǎn)";
      font-weight: 300;
      color: #808080;
      font-size: 80%;
      display: block;
      margin-top: 5px;
    }
    ion-row {
      background-color: #efefef;
      padding: 0px;
    }
    ion-col {
      background-color: white;
      /*border: 1px solid #efefef;*/
    }
  }
  .icon {
    border-radius: 100px;
    color: white;
    background-color: #f8285c;
    font-size: 36px !important;
    padding: 5px;
  }
  .c1 {
    background-color: orangered;
  }
  .c2 {
    background-color: blueviolet;
  }
  .c3 {
    background-color: sandybrown;
  }
  .c4 {
    background-color: slateblue;
  }
  .c5 {
    background-color: orange;
  }
  .c6 {
    background-color: dimgray;
  }
  .t-header {
    font-family: "黑體-簡(jiǎn)";
    font-weight: 300;
    color: #f8285c;
    border-left: 2px solid #f8285c;
    border-top: 5px solid #efefef;
    background: white;
  }
  .stores {
    .title {
      font-family: "黑體-簡(jiǎn)";
      font-weight: 300;
      color: #808080;
      font-size: 80%;
      display: block;
      margin-top: 5px;
    }
    ion-row {
      background-color: #efefef;
      padding: 0px;
    }
    ion-col {
      background-color: white;
      border: 1px solid #efefef;
    }
  }
  .product {
    ion-row {
      background-color: #efefef;
      font-family: "Helvetica Neue", Helvetica, STHeiTi, sans-serif;
      padding-top: 3px;
      ion-col {
        position: relative;
        background-color: white;
        border: 2px solid #efefef;
        border-radius: 2px;
        padding: 0px;
        p {
          margin: 0px;
          padding: 0px;
          width: 100%;
          font-size: 12px;
          font-family: "黑體-簡(jiǎn)";
          font-weight: 300;
          color: #808080;
          height: 26px;
          line-height: 26px;
          background: rgba(255, 255, 255, 0.8);
          overflow: hidden;
          text-indent: 5px;
        }
      }
    }
    .list-price {
      width: 98%;
      height: 26px;
      line-height: 18px;
      position: relative;
      bottom: 0;
      margin: 0 2%;
    }
    .price-new {
      font-size: 18px;
      color: #f8285c;
    }
    .list-price i {
      font-style: normal;
      font-size: 12px;
    }
    .del {
      color: rgba(171, 171, 171, 1);
      text-decoration: line-through;
      margin-left: 2px;
    }
    .good-btn {
      display: block;
      position: absolute;
      height: 16px;
      line-height: 12px;
      color: #f8285c;
      font-size: 13px;
      font-family: "黑體-簡(jiǎn)";
      text-align: right;
      top: 5px;
      right: 2px;
    }
    .quan_img {
      position: absolute;
      width: 61px;
      height: 55px;
      z-index: 5;
      right: 0;
      top: 0;
      cursor: pointer;
      background: url(/assets/img/quan.png) no-repeat;
      background-size: contain;
      color: #fff;
    }
    .quan_img .num_money {
      font-family: Arial;
      font-size: 18px;
      height: 40px;
      left: 9px;
      position: absolute;
      text-align: center;
      top: 14px;
      width: 40px;
    }
  }
}

效果圖

4-1.png

下一講將講解?在ionic3中如何設(shè)計(jì)透明導(dǎo)航欄德崭。

完!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末揖盘,一起剝皮案震驚了整個(gè)濱河市眉厨,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌兽狭,老刑警劉巖憾股,帶你破解...
    沈念sama閱讀 221,888評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異箕慧,居然都是意外死亡服球,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,677評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén)颠焦,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)斩熊,“玉大人,你說(shuō)我怎么就攤上這事伐庭》矍” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,386評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵圾另,是天一觀的道長(zhǎng)霸株。 經(jīng)常有香客問(wèn)我,道長(zhǎng)盯捌,這世上最難降的妖魔是什么淳衙? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,726評(píng)論 1 297
  • 正文 為了忘掉前任,我火速辦了婚禮饺著,結(jié)果婚禮上箫攀,老公的妹妹穿的比我還像新娘。我一直安慰自己幼衰,他們只是感情好靴跛,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,729評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著渡嚣,像睡著了一般梢睛。 火紅的嫁衣襯著肌膚如雪肥印。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 52,337評(píng)論 1 310
  • 那天绝葡,我揣著相機(jī)與錄音深碱,去河邊找鬼。 笑死藏畅,一個(gè)胖子當(dāng)著我的面吹牛敷硅,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播愉阎,決...
    沈念sama閱讀 40,902評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼绞蹦,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了榜旦?” 一聲冷哼從身側(cè)響起幽七,我...
    開(kāi)封第一講書(shū)人閱讀 39,807評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎溅呢,沒(méi)想到半個(gè)月后澡屡,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,349評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡咐旧,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,439評(píng)論 3 340
  • 正文 我和宋清朗相戀三年挪蹭,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片休偶。...
    茶點(diǎn)故事閱讀 40,567評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖辜羊,靈堂內(nèi)的尸體忽然破棺而出踏兜,到底是詐尸還是另有隱情,我是刑警寧澤八秃,帶...
    沈念sama閱讀 36,242評(píng)論 5 350
  • 正文 年R本政府宣布碱妆,位于F島的核電站,受9級(jí)特大地震影響昔驱,放射性物質(zhì)發(fā)生泄漏疹尾。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,933評(píng)論 3 334
  • 文/蒙蒙 一骤肛、第九天 我趴在偏房一處隱蔽的房頂上張望纳本。 院中可真熱鬧,春花似錦腋颠、人聲如沸繁成。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,420評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)巾腕。三九已至面睛,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間尊搬,已是汗流浹背叁鉴。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,531評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留佛寿,地道東北人幌墓。 一個(gè)月前我還...
    沈念sama閱讀 48,995評(píng)論 3 377
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像狗准,于是被迫代替她去往敵國(guó)和親克锣。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,585評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容