初試 vue2.0——3.項目開發之布局說明


寫在前面的話:

  其實都是按照設計稿來的,在做之前,分析一下哪些個部分是可以公用的,就抽出來做成模塊,逐漸改變開發思維。


 

三、布局說明

  在很多的項目中,頭部和尾部的公用性很大,所以在這里可以抽出來,寫成組件;

  上一篇說道,header.vue中要用到 app.vue的數據時,需要做的,這里就不重復了。

  強調一下以下問題,不分先后順序:

   1)出現在文中的內容處:<span>{{ seller.xxx}} </span>

   2)被綁定在某個元素的屬性上:<img :src="seller.avatar">     (注意當中的雙引號!!)

   3)手機端的像素壓縮比:一般有兩種(2 or 3),這時候要用到媒體查詢,並結合 stylus 的樣式編程功能實現復用。

   4)同一個地方的樣式與顯示的數據相關時,一般數據中都會給出一個判斷的字段,因此我們需要根據此字段選擇要顯示的樣式。

  比如,此例中的一些 優惠,打折……的小圖片的顯示,就是根據了一些 type的判斷,結合stylus的可編程特性來變換樣式。

    延伸一下

   5)一般來說,設計稿中的純色小圖標都會做成 svg格式的,在使用時需要轉成 font 字體:去 iconMoon官網 

  實例:

   第1,2點就沒什么好說的了,第3,4點是非常的實用的。

  第3點實例:

    假設在header.vue中要引入一張背景圖,素材如下圖:

                 其大小分別為:  (60px * 36px)     (90px * 54px)

      (別看一張大一張小,其實在使用時需要指定該背景圖的大小,是一樣的~ 在這里都是 30px * 18px)

    首先這里肯定要用到媒體查詢,考慮到頁面的其他部分還會有這種需求出現,所以在這里使用stylus 的樣式編程功能實現復用。

  做法:1)先將圖片拷貝到包含 header.vue 的文件夾 header中,方便同一個組件的資源統一管理

     2)在common/stylus文件夾下新建一個mixin.styl文件,輸入以下代碼:

bg-image($url)
  background-image: url($url + "@2x.png")
  @media (-webkit-min-device-pixel-ratio: 3),(min-device-pixel-ratio: 3)
    background-image: url($url + "@3x.png")

     3)在 header.vue 的style中引入以上 mixin.style 文件,並使用bg-image:

<style lang="stylus" rel="stylesheet/stylus">
  @import "../../common/stylus/mixin.styl"
  .brand
    bg-image('brand')         //  這里的 'brand' 是字符串的形式! 表示的是圖片的名稱,其他部分也需要時,可以換成相應名稱就好了。
    background-size: 30px 18px
    background-repeat: no-repeat
    vertical-align: top       //一般圖片與文字的對其方式需指定 top 是使其頂端對其
</style>

     所以說,在其他部分需要時,傳入相應的名稱就可以直接可以用啦~   

  第4點實例:

      好用、常用的方法學起來~

      一般是通過類名的變換來變換相應的樣式,然而字段一般給的都是 數字 之類的,所以要稍微做一下轉換,如下面的 classMap就是用來將數據轉換成想要的類名。

      例:要在 header.vue中使用這個方法實現一些小圖標(優惠,打折……)的變換。

      1. 找到相應的數據字段,如下圖中的supports[n].type 字段:

        

      2. 在 header.vue中的 template中加入以下代碼:

 <div v-if="seller.supports" class="supports">
      <span class="icon" :class="classMap[seller.supports[0].type]"></span>    
      <span class="text">{{seller.supports[0].description}}</span>
  </div>

   這里把span標簽的一個類直接與 classMap 綁定,然后 classMap與之前的數據中的字段相關,從而實現數據字段控制了樣式~       

       3. 在 header.vue中的 script中加入以下代碼(注意紅色部分,就是用來轉換數據的):

          

      注意:是寫在 created (){ } 中~

      4. 在 header.vue中的 style 中加入以下代碼(注,這一步是在進行了 第3點 實例分享之后才可用~):

          

      上面的bg-image()是 第3點實例 中的代碼復用部分~  

      小細節:vertical-align:top; 是為了讓背景圖標與文字對齊~

  第5點實例:

      去 iconmoon官網動手試試吧~

      以下為過程截圖。

        呃呃呃,以后更新。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM