Vue中如何使用sass實現換膚 更換主題 功能

2021-10-24 07:03:44 字數 3074 閱讀 5064

原理:

通過設定html的attribute屬性在封裝的函式中進行判斷,進行相應的設定不同的顏色

css中 [ ] 可以識別到在html標籤上設定的屬性,所以在html上對應屬性發生變化時,就會執行相應的樣式,

這一步有點類似於平時給div新增乙個.active屬性,css自動執行相應樣式。

1.首先切換的樣式檔案我們需要兩個

varibale.scss: 顏色,字型,背景的配置檔案

mixin.scss: 定義mixin方法的檔案。

下面貼出**:

varibale.scss

// 顏色,字型,背景的配置檔案

//顏色定義規範

$background-color-theme: #3f8e4d;//背景主題顏色預設

$background-color-theme1: red;//背景主題顏色1

$background-color-theme2: #652bf5;//背景主題顏色2

$background-color-theme3: deepskyblue;//背景主題顏色3

$background-color-themesec: #edc148;//背景次要主題顏色

$font-color-theme : #3f8e4d;//字型主題顏色預設

$font-color-theme1 : red;//字型主題顏色1

$font-color-theme2 : #652bf5;//字型主題顏色2

$font-color-theme3 : deepskyblue;//字型主題顏色3

$font-color-themesec : #edc148;//字型次要主題顏色

$font-color-shallow0 : #000;

$font-color-shallow1 : #111;

$font-color-shallow2 : #222;

$font-color-shallow3 : #333;

$font-color-shallow4 : #444;

$font-color-shallow5 : #555;

$font-color-shallow6 : #666;

$font-color-shallow7 : #777;

$font-color-shallow8 : #888;

$font-color-shallow9 : #999;

$font-color-shallowdb : #dbdbdb;

$background-image:url("~@/assets/images/001.png");

$background-image-theme1:url("~@/assets/images/002.png");

$background-image-theme2:url("~@/assets/images/003.png");

//字型定義規範

$font_little_s:10px;

$font_little:12px;

$font_medium_s:14px;

$font_medium:16px;

$font_large_s:18px;

$font_large:20px;

mixin.scss

// 定義mixin方法的檔案。

@charset "utf-8";

@import "./varibale.scss";/*引入配置*/

@mixin font_size($size)

@mixin font_color($color)

[data-theme="theme2"] &

[data-theme="theme3"] &

}@mixin bg_color($color)

[data-theme="theme2"] &

[data-theme="theme3"] &

}@mixin bg_img($img)

[data-theme="theme2"] &

}/*px轉rem*/

@mixin px2rem($property,$px,$px2:false,$px3:false,$px4:false): ($px / $rem) + rem ($px2 / $rem) + rem ($px3 / $rem) + rem ($px4 / $rem) + rem;

} @else if $px and $px2 : ($px / $rem) + rem ($px2 / $rem) + rem;

//[data-model='pad'] & : ($px * 1.4 / $rem) + rem ($px2 * 1.4 / $rem) + rem;}

} @else: ($px / $rem) + rem!important;

//[data-model='pad'] & : ($px * 1.4 / $rem) + rem;} }}

/*根據dpr計算font-size*/

@mixin font-dpr($font-size)

[data-dpr="2"] &

[data-dpr="3"] & }

/*超行溢位顯示省略號*/

@mixin overflow($num:1,$fontsize:0,$lineheight:1.5)

height: $num * $fontsize * $lineheight;

[data-dpr="2"] &

[data-dpr="3"] &

}}

用法:

vue元件

aaaa

這裡為了保證重新整理時修改的樣式存在,在這裡使用了localstorage儲存

所以需要每次在載入時重新設定:main.js 新增設定

window.document.documentelement.setattribute('data-theme', localstorage.getitem('data-theme')?localstorage.getitem('data-theme'):'')

如何使用sass

sass 是一門高於 css 的元語言,它能用來清晰地 結構化地描述檔案樣式,有著比普通 css 更加強大的功能。sass 能夠提供更簡潔 更優雅的語法,同時提供多種功能來建立可維護和管理的樣式表。sass 和 scss 其實是同一種東西,我們平時都稱之為 sass,兩者之間不同之處有以下兩點 副檔...

在Vue中使用Sass

sass 是什麼?sass又稱scss,它是css預處理之一。它在css語法的基礎上增加了變數 巢狀 混合巨集 繼承 佔位符等等高階功能。那什麼是css預處理器呢?簡單理解就是,css預處理是一種專門的程式語言,通過該語言進行web頁面設計,然後再編譯成正常的css檔案,以供專案使用。css預處理器...

vue中如何引用全域性的sass公共樣式

vue中如何引用全域性的sass公共樣式 sass擁有比其他任何css擴充套件語言更多的功能和特性。一次又一次地,行業把sass作為首選css擴充套件語言。在vue專案開發中你會發現,通過main.js 全域性引入的.scss 在.vue檔案中不能使用,那如何去解決這個問題呢?下面有兩種解決方法,可...