亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

uni-app 頁面樣式

1. 前言

在日常項目開發過程中,頁面邏輯代碼通常要搭配頁面樣式才能將頁面需求完全實現出來。

很多項目 bug 需要花費較長的時間來解決,很大原因是因為初學者對頁面樣式了解的不夠透徹引起的。這樣當項目出現樣式問題的時候就會比較茫然,大大增加了項目調試的時間。開發項目之前,先了解一下頁面樣式的基礎知識,后面進行項目開發就會順利很多。

這小節我們來講解 uni-app 項目的頁面樣式的基礎知識,包括全局樣式和局部樣式,選擇器的應用以及內聯樣式的應用。下面我們來一一講解。

2. 全局樣式與局部樣式

全局樣式會作用在所有頁面上面。有了全局樣式,我們就不必在每個頁面上寫重復的樣式代碼了,在提高我們工作效率的同時,也方便我們后期對項目的優化和維護。開發 uni-app 項目時,我們會將全局樣式定義在 App.vue 文件中。
局部樣式會作用在特定的頁面上面,當全局樣式與局部樣式沖突時,局部樣式會覆蓋掉全局樣式。我們通常將局部樣式定義在 pages 目錄下的 .vue 文件中。

2.1. 全局樣式與局部樣式沖突

下面來舉個實際例子看看當全局樣式與局部樣式沖突時,頁面是如何顯示的。

編輯 App.vue 文件,添加全局樣式,將頁面背景顏色定義為綠色,按鈕寬度設置為50%,全局樣式將影響到所有頁面。
實例:

page {
	background-color: green;
}
button {
	width:50%;
	margin-top: 20px;
}

這里定義的 page 標簽, 相當于普通項目中的 body 標簽,會影響到所有的頁面樣式,通常我們會在這里面設置頁面的背景顏色、字體樣式、大小等。

接下來編輯 pages/index/index.vue 文件,添加局部樣式,將頁面背景顏色定義為紅色,局部樣式將影響到 index 頁面。

我們實例中定義的局部樣式與全局樣式沖突的地方主要是 background-color 背景顏色屬性,全局樣式中定義的是 green 綠色,局部樣式中定義的是 red 紅色。
實例:

page {
    background-color: red;
}
button {
    height:100px;
}

點擊工具欄–運行–運行到內置瀏覽器,查看效果。
局部樣式紅色背景覆蓋了全局樣式綠色背景。
按鈕沒有沖突的樣式,既顯示了全局樣式中定義的寬度,又顯示了局部樣式中定義的高度。

3. 選擇器是應用

選擇器就是 html 標簽的某個特有屬性,如 id class 等,在css中可以根據這些特有屬性來統一定義樣式。

目前 uni-app 規定支持的選擇器有 .class、#id、element、element, element、::after、::before 這6個,我們來實例演示一下:
先在 template 標簽中定義幾個布局。
實例:

<button class="list1" id="column">list1</button>
<button class="list1">list2</button>
<button class="list2">list3</button>
<view class="list2">list4</button>

3.1 .class 選擇器

使用 .class 定義樣式,比如 .list1,就表示定義的是所有 class 為 list1 標簽的樣式。
實例:

<style>
    .list1 {
         width: 50%;
    }	
</style>

3.2 #id 選擇器

使用 #id 定義樣式,比如 #column,就表示定義的是 id 為 column 標簽的樣式。
實例:

<style>
    #column {
         width: 50%;
    }	
</style>

3.3 element 選擇器

根據標簽來定義樣式,下面來定義所有 button 標簽的樣式
實例:

<style>
    button {
         width: 50%;
    }	
</style>

3.4 element, element 選擇器

可以同時定義多個標簽,標簽之間用逗號隔開。
實例:

<style>
    button,view {
         width: 50%;
    }	
</style>

3.5 ::after 和 ::before 選擇器

::before::after 的主要作用是在標簽內容前后加上指定內容
實例:

<style>
    button::before{
	   content: 'Hello';
    }
	button::after{
	    content: 'Imooc';
	}
</style>

4. 內聯樣式

內聯樣式指的是把 css 代碼直接寫在 HTML 標簽中,可以使頁面隨著標簽情況的不同顯示不同的樣式。我們可以使用 style、class 屬性來控制 HTML 標簽的樣式。
實例:

<view class="list" style="text-align:center;">內聯樣式</view>

在我們開發過程中,可能同樣一個標簽在不同情況下顯示不同的顏色,比如股市漲跌幅,在漲的時候顯示紅色,在跌的時候顯示綠色。像這種需求,就可以用到動態樣式。

動態樣式建議寫進 style 屬性中,靜態樣式建議寫進 class 屬性中,這樣可以提高渲染效果,盡可能的優化頁面性能。

下面來實現一下股市漲跌動態樣式的需求。
實例:

<template>
  <view :style="{color:color}">漲跌幅:{{data}}%</view>
</template>

<script>
  export default {
    data() {
      return {
        color:"",
        data:1
      };
    },
    onLoad() {
      //當 data < 0 顯示綠色,否則顯示紅色
      if(this.data < 0){
		this.color = "green"
	  }else{
		this.color = "red"
	  }
    }
  }
</script>

5. 小結

本節課程我們主要學習了uni-app 的頁面樣式的幾大應用,本節課程的需要掌握的重點如下:

  • 掌握全局樣式和局部樣式,在 App.vue 文件中定義的樣式就是全局樣式,在 pages 目錄下 的 vue 文件中定義的樣式就是局部樣式;
  • 掌握6個選擇器的實際應用;
  • 掌握內聯樣式的應用,靜態樣式以及動態樣式要了解怎樣使用。