Vue+scss白天和夜间模式切换功能的实现方法


Posted in Vue.js onJanuary 05, 2021

本文主要介绍了Vue+scss白天和夜间模式切换功能的实现方法,分享给大家,具体如下:

效果图

Vue+scss白天和夜间模式切换功能的实现方法 

图片被压缩了不够清晰。

安装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白天和夜间模式切换功能的实现方法的文章就介绍到这了,更多相关Vue 白天和夜间模式切换 内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Vue.js 相关文章推荐
详解Vue的mixin策略
Nov 19 Vue.js
vue 插槽简介及使用示例
Nov 19 Vue.js
vue 获取到数据但却渲染不到页面上的解决方法
Nov 19 Vue.js
Vue 的 v-model用法实例
Nov 23 Vue.js
Vue解决移动端弹窗滚动穿透问题
Dec 15 Vue.js
浅析vue中的nextTick
Dec 28 Vue.js
Vue项目中使用mock.js的完整步骤
Jan 12 Vue.js
vue动态设置路由权限的主要思路
Jan 13 Vue.js
手动实现vue2.0的双向数据绑定原理详解
Feb 06 Vue.js
Vue中使用wangeditor富文本编辑的问题
Feb 07 Vue.js
一篇文章学会Vue中间件管道
Jun 20 Vue.js
详解Vue3使用axios的配置教程
Apr 29 Vue.js
jenkins自动构建发布vue项目的方法步骤
Jan 04 #Vue.js
vue3弹出层V3Popup实例详解
Jan 04 #Vue.js
vue3自定义dialog、modal组件的方法
Jan 04 #Vue.js
vue中父子组件的参数传递和应用示例
Jan 04 #Vue.js
如何在VUE中使用vue-awesome-swiper
Jan 04 #Vue.js
vue项目如何监听localStorage或sessionStorage的变化
Jan 04 #Vue.js
手写Vue源码之数据劫持示例详解
Jan 04 #Vue.js
You might like
收音机发烧友应当熟知的100条知识
2021/03/02 无线电
其他功能
2006/10/09 PHP
PHP中MD5函数使用实例代码
2008/06/07 PHP
php 动态执行带有参数的类方法
2009/04/10 PHP
php Memcache 中实现消息队列
2009/11/24 PHP
php运行出现Call to undefined function curl_init()的解决方法
2010/11/02 PHP
基于PHP文件操作的详解
2013/06/05 PHP
解析php函数method_exists()与is_callable()的区别
2013/06/21 PHP
ThinkPHP中RBAC类的四种用法分析
2014/11/24 PHP
php实现图片上传并利用ImageMagick生成缩略图
2016/03/14 PHP
php微信开发之自定义菜单实现
2016/11/18 PHP
指定js可访问其它域名的cookie的方法
2007/09/18 Javascript
Javascript 获取链接(url)参数的方法
2009/02/15 Javascript
js 自定义的联动下拉框
2010/02/07 Javascript
客户端js判断文件类型和文件大小即限制上传大小
2013/11/20 Javascript
js replace替换所有匹配的字符串
2014/02/13 Javascript
Node.js实现简单聊天服务器
2014/06/20 Javascript
兼容最新firefox、chrome和IE的javascript图片预览实现代码
2014/08/08 Javascript
JavaScript通过字典进行字符串翻译转换的方法
2015/03/19 Javascript
JavaScript对Cookie进行读写操作实例
2015/07/25 Javascript
Jquery Mobile 自定义按钮图标
2015/11/18 Javascript
jquery 获取select数组与name数组长度的实现代码
2016/06/20 Javascript
一步一步封装自己的HtmlHelper组件BootstrapHelper(二)
2016/09/14 Javascript
jquery hover 不停闪动问题的解决方法(亦为stop()的使用)
2017/02/10 Javascript
windows下vue.js开发环境搭建教程
2017/03/20 Javascript
JS实现简单拖拽效果
2017/06/21 Javascript
vue+iview+less 实现换肤功能
2018/08/17 Javascript
layer.open组件获取弹出层页面变量、函数的实例
2019/09/25 Javascript
js里面的变量范围分享
2020/07/18 Javascript
python生成随机红包的实例写法
2019/09/02 Python
PyCharm专业最新版2019.1安装步骤(含激活码)
2019/10/09 Python
python opencv 实现对图像边缘扩充
2020/01/19 Python
纯CSS3实现地球自转实现代码(图文教程附送源码)
2012/12/26 HTML / CSS
幼儿园安全责任书范本
2014/07/24 职场文书
大学生创业计划书怎么写
2014/09/15 职场文书
销售督导岗位职责
2015/04/10 职场文书