1. 程式人生 > 其它 >【uni-app筆記整理三】uni樣式(scss)

【uni-app筆記整理三】uni樣式(scss)

技術標籤:uni-appcssscssuni-appunivue

版權宣告:本文為 小異常 原創文章,非商用自由轉載-保持署名-註明出處,謝謝!
本文網址:https://sunkuan.blog.csdn.net/article/details/111674717

文章目錄







上一篇我們講解了 uni-app 的基本元件,在目前這個階段,我們簡簡單單的使用基本元件搭建一個簡易的頁面還是可以的,但這遠遠還不夠,沒有樣式的配合,頁面將顯得非常單調。
 
本篇部落格主要向大家介紹 uni-app

的樣式,其實樣式我們完全使用 CSS 即可,但這還不夠,我要向大家介紹一個更強大的 CSS 擴充套件語言,也是 uni-app 官方推薦的 SCSS 語言。
 
簡單介紹一下,SCSS 是一門 CSS 擴充套件語言,它完全相容所有版本的 CSS,它的穩定性要比 CSS 更強大,使用起來更加的舒暢。
 
SCSS 讓人們受益的一個重要特性就是為 CSS 引入了變數。你可以把反覆使用的 CSS 屬性值 定義成變數,然後通過變數名來引用它們,無需重複書寫這一屬性值。本篇將結合 uni-app 的樣式介紹 SCSS,但我們並不會深入講解 SCSS,想深入學習的朋友們請繞道。


一、uni樣式注意事項

我們在使用 uni-app 樣式時,也需要注意幾個問題:

  1. 單位問題: 我們在移動端開發時,儘可能的使用 rpx 單位來代替以前的 pxrpx 即響應式 px,它是一種可以根據螢幕寬度自適應的動態單位。以 750 寬的螢幕為基準,因為 750 rpx 恰好為螢幕寬度。當螢幕變寬時,rpx 實際顯示效果將會等比放大;

  2. 匯入問題: 我們可以通過 @import 語句匯入外聯樣式表,@import 後跟需要匯入的外聯樣式表的相對路徑,並用 ; 結束;

  3. 選擇器問題: uni-app 支援基本常用的選擇器,如:class、id、element 等,但是在 uni-app 中不能使用 * 選擇器;

  4. 根節點問題: 在以前 HTML 中,文件主體的根節點一直是 body,而在 uni-app 中文件主體的根節點是 page,它相當於 body 節點;

  5. 全域性/區域性樣式: 定義在 App.vue 中的樣式為 全域性樣式,作用於每一個頁面。在 pages 目錄下 的 .vue 檔案中定義的樣式為 區域性樣式,只作用在對應的頁面,並會覆蓋 App.vue 中相同的選擇器;

  6. 字型圖示: uni-app 支援使用字型圖示,使用方式與普通 web 專案相同,但需要注意以下幾點:

    1. 字型檔案小於 40kb 時,uni-app 會自動將其轉化為 base64 格式;
    2. 字型檔案大於等於 40kb 時, 需開發者自己轉換,否則該字型圖示將不生效;
    3. 字型檔案的引用路徑推薦使用以 [email protected] 開頭的絕對路徑。
    @font-face {
    	font-family: test1-icon;
    	src: url('[email protected]/static/iconfont.ttf');
    }
    


二、SCSS初體驗

HBuilderX 中使用 SCSS,需要先安裝外掛:工具 -> 外掛安裝。

1、定義變數

<style lang="scss">
	/* 變數 */
	$my-color: #f60;
	h3 {
		color: $my-color;
	}
</style>

2、選擇器巢狀

<style lang="scss">
	/* 選擇器巢狀 */
	.box {
		h4 {
			border: $basic-border;
		}
	}
</style>

3、屬性巢狀

  1. 把屬性名從中劃線 - 的地方斷開;
  2. 在根屬性後邊新增一個冒號 :,緊跟一個塊,把子屬性部分寫在這個 { } 塊中。
div {
	border: 1px solid #000 {radius: 5px}
}
/* 相當於 */
div {
	border: 1px solid #000;
	border-radius: 5px;
}

4、引入

@import 'rest'

5、運算子

view {
	width: 360px / 900px * 100%;
}

6、函式

SCSS 函式名中的中劃線和下劃線是等同的,font-sizefont_size 指向同一個函式。

/* 需要傳遞一個引數,如果無參,則預設值是6 */
@function widthFn($n: 6) {
	@return $n * 10;
}
.leng {
	width: widthFn(5);
	height: widthFn();
}


部落格中若有不恰當的地方,請您一定要告訴我。前路崎嶇,望我們可以互相幫助,並肩前行!