Vue+scss白天和夜間模式切換功能的實現(xiàn)方法
本文主要介紹了Vue+scss白天和夜間模式切換功能的實現(xiàn)方法,分享給大家,具體如下:
效果圖
圖片被壓縮了不夠清晰。
安裝Scss
注:若安裝失敗可以考慮使用cnpm,或者切換npm源等方式安裝。
npm install node-sass --save-dev //安裝node-sass npm install sass-loader --save-dev //安裝sass-loader npm install style-loader --save-dev //安裝style-loader
新建頁面DarkModelPage.vue
文件所在位置:src/DarkModelPage.vue
命名路由路徑:/dark-model-page
<template>
<div id="DarkModelPage">
</div>
</template>
<script>
export default {
}
</script>
<style scoped lang="scss">
</style>
在src/assets新建目錄scss
在src/assets/scss新建目錄common
然后需要新建三個scss文件分別是
- _themes.scss
- _handle.scss
- common.scss
_themes.scss
$themes: ( light: ( background_color: #cccccc,//背景色 text-color: rgba(0, 0, 0, 0.65), // 主文本色 ), dark: ( background_color: #181c27,//背景 text-color: rgba(255, 255, 255, 0.65), // 主文本色 ) );
_handle.scss
@import "./_themes.scss";
//遍歷主題map
@mixin themeify {
@each $theme-name, $theme-map in $themes {
//!global 把局部變量強升為全局變量
$theme-map: $theme-map !global;
//判斷html的data-theme的屬性值 #{}是sass的插值表達式
//& sass嵌套里的父容器標識 @content是混合器插槽,像vue的slot
[data-theme="#{$theme-name}"] & {
@content;
}
}
}
//聲明一個根據Key獲取顏色的function
@function themed($key) {
@return map-get($theme-map, $key);
}
//獲取背景顏色
@mixin background_color($color) {
@include themeify {
background: themed($color)!important;
}
}
//獲取字體顏色
@mixin font_color($color) {
@include themeify {
color: themed($color)!important;
}
}
common.scss
@import "@/assets/scss/common/_handle.scss"; /** 自定義的公共樣式... **/
DarkModelPage.vue中使用
<template>
<div id="DarkModelPage">
<div>
<h1 class="title">天小天個人網</h1>
<a class="btn" @click="modelBrn">模式切換</a>
</div>
</div>
</template>
<script>
export default {
name: "DarkModelPage",
data(){
return {
dark:false,
}
},
methods:{
modelBrn(){
this.dark = !this.dark;
if(this.dark){
window.document.documentElement.setAttribute( "data-theme", 'dark' );
}else{
window.document.documentElement.setAttribute( "data-theme", 'light' );
}
},
},
mounted() {
window.document.documentElement.setAttribute( "data-theme", 'light' );
},
}
</script>
<style scoped lang="scss">
@import '@/assets/scss/common/common';
#DarkModelPage{
//在此使用了背景顏色變量
@include background_color("background_color");
//再次使用了文字顏色變量
@include font_color("text-color");
width: 100vw;
height: 100vh;
display: flex;
justify-content:center;
align-items: center;
transition: background 1s , color 0.6s;
.title{
margin-bottom: 20px;
}
.btn{
cursor: pointer;
display: flex;
justify-content: center;
align-items: center;
width: 100px;
height: 40px;
margin: 0 auto;
}
}
</style>
注:如需更多顏色及樣式切換,只需要在_themes.scss設置好變量,通過 _handle.scss設置切換函數,即可以在頁面中通過該函數對指定樣式進行設置。
本文演示視頻: 點擊瀏覽
到此這篇關于Vue+scss白天和夜間模式切換功能的實現(xiàn)方法的文章就介紹到這了,更多相關Vue 白天和夜間模式切換 內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
vue3中實現(xiàn)拖拽排序代碼示例(vue-draggable-next的使用)
在Vue3中使用拖拽功能時應選用vue-draggable-next插件,傳統(tǒng)的draggable插件不兼容Vue3,可能導致TypeError錯誤,安裝后,需在項目中引入并使用,具體步驟包括安裝插件、引入使用、查看效果和相關說明,需要的朋友可以參考下2024-09-09
vue elementui表格獲取某行數據(slot-scope和selection-change方法使用)
這篇文章主要介紹了vue elementui表格獲取某行數據(slot-scope和selection-change方法使用),本文通過示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-01-01
Vue使用Echarts實現(xiàn)數據可視化的方法詳解
這篇文章主要為大家詳細介紹了Vue使用Echarts實現(xiàn)數據可視化的方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助2022-03-03
利用vue + koa2 + mockjs模擬數據的方法教程
這篇文章主要給大家介紹了關于利用vue + koa2 + mockjs模擬數據的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。2017-11-11

