Vue项目如何配置、切换主题颜色(mixin + scss方式,简单高效)

这篇具有很好参考价值的文章主要介绍了Vue项目如何配置、切换主题颜色(mixin + scss方式,简单高效)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

直接开始,高手话不多

但图多

基本样式:
Vue项目如何配置、切换主题颜色(mixin + scss方式,简单高效)
红色主题:
Vue项目如何配置、切换主题颜色(mixin + scss方式,简单高效)

蓝色主题:
Vue项目如何配置、切换主题颜色(mixin + scss方式,简单高效)

看到这里,是不是有人已经开始安耐不住了?😏
Vue项目如何配置、切换主题颜色(mixin + scss方式,简单高效)

Action

一. 首先,引入scss依赖(node-sass, sass-loader)

npm install node-sass sass-loader --save-dev

二.项目样式文件目录介绍

1.此处我将项目中的公共样式文件放到了 src/style目录下,其中 index.scss是以供全局使用的一些基本样式,在main.js文件中引入即可全局使用(图2)。 _theme.scss, _handle.scss两个文件为我们稍后进行主题颜色配置的文件.

Vue项目如何配置、切换主题颜色(mixin + scss方式,简单高效)
Vue项目如何配置、切换主题颜色(mixin + scss方式,简单高效)


三.主题目录scss文件配置

1.src/style目录下的_themes.scss,里面可以配置不同的主题配色方案,这里我配置了三个主题颜色,分别为basic、red、blue。
_themes.scss文件内容:

$themes: (

    basic: (
        basic_color: #3064E7,// 主题色
        logo_color: #3064E7,   // 主题色字体
        title_color: #494D50, //新增、注册、行业标头字体颜色
        foot_tolor: #5E6165, // 页脚字体颜色
        font_color1: #909399,
        font_color2: #909399,
        // 小logo图片
        logo_image: url('@/assets/image/logo.png'), 
        // 大logo图片
        big_logo_image: url('@/assets/image/logo_big.png'), 
        // banner图片
        banner_image: url('@/assets/image/basic_banner.png'),
        // 首页搜索按钮
        search_btn: linear-gradient(187deg, #5E9DF5 0%, #3064E7 47%),
        // 注册动态下边框
        border_bottom_1: 1px solid #3064E7,
        // 注册动态边框
        card_border_1: 1px solid rgba(208,211,219,1),
        // 注册动态卡片背景
        zhuce_card: #fff,
        // 新闻标题聚焦颜色
        font_hover: #3064E7,

        //背景
        navbar_background: #fff,
        background_color2: #f0f2f5,
        // 新闻时事背景
        // news_background:  #fff,
        // 注册动态背景
        zhuce_background:  #fff,
        // 行业资讯背景
        hangye_background: #fff,
        background_color3: red,
        background_color4: #2674e7,
        
        //边框
        border_bottom: 5px solid #4554DE,
    
    ),
    
    red: (
        basic_color: #D0021B,
        logo_color: #fff,
        title_color: #494D50, //新增、注册、行业标头字体颜色
        foot_tolor: #5E6165, // 页脚字体颜色
        font_color1: #909399,
        font_color2: #fff,
        // 新闻标题聚焦颜色
        font_hover: #D0021B,
        
         // 小logo图片
        logo_image: url('@/assets/image/logo_white.png'),  
        // 大logo图片
        big_logo_image: url('@/assets/theme/redTheme/logo-b.png'), 
        // banner图片
        banner_image: url('@/assets/theme/redTheme/banner-bg.png'),
         // 首页搜索按钮
        search_btn: linear-gradient(187deg, #d20000  0%, #da0707de  47%),
        // 注册动态下边框
        border_bottom_1: 2px solid #D0021B ,
        // 注册动态边框
        card_border_1:  1px solid rgba(208,211,219,1),
        // 注册动态卡片背景
        zhuce_card: #fff,

        //背景
        navbar_background: url('@/assets/theme/basicTheme/top-bg.png'),
        background_color2: #283142,
        // 新闻时事背景
        // news_background:  #fff,
        // 注册动态背景
        zhuce_background:  #fff,
        // 行业资讯背景
        hangye_background: #fff,
        background_color3: #1e6ceb,
        background_color4: #323e4e,
    
        //边框
        border_bottom: 5px solid #fff,
    ),

    blue: (
        basic_color: #0DECFF ,
        logo_color: #fff,
        title_color: #fff, //新增、注册、行业标头字体颜色
        foot_tolor: #B2D4F5 , // 页脚字体颜色
        font_color1: #909399,
        font_color2: #fff,
        // 新闻标题聚焦颜色
        font_hover: #0E458C,
       
         // 小logo图片
        logo_image: url('@/assets/image/logo_white.png'),  
        // 大logo图片
        big_logo_image: url('@/assets/theme/redTheme/logo-b.png'), 
        // banner图片
        banner_image: url('@/assets/theme/blueTheme/y.png'),
         // 首页搜索按钮
        search_btn: linear-gradient(187deg, #0076FF  0%, #0076FF  47%),
        // 注册动态下边框
        border_bottom_1: 2px solid #0DECFF ,
        // 注册动态卡片背景
        zhuce_card: #034488,
        // 注册动态边框
        card_border_1: 2px solid rgba(8,93,185,1),

        //背景
        navbar_background: #0E458C,
        foot_background: linear-gradient(131deg, #005FBC 0%, #08215F 100%),
        // 新闻时事背景
        news_background:  url('@/assets/theme/blueTheme/科技蓝.png') no-repeat,
        // 注册动态背景
        zhuce_background: #033367,
         // 行业资讯背景
        hangye_background: #033367,
        background_color2: #283142,
        background_color3: #1e6ceb,
        background_color4: #323e4e,
    
        //边框
        border_bottom: 5px solid #fff,
    ),


);


2.src/style/下的 _handle.scss来操作上述1中的$theme变量(当然两个文件可以合并,分开写是想把配置和操作解耦),上代码:
_handle.scss文件内容:

@import "./_theme.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-color: themed($color)!important;
    }
}
//获取背景图片
@mixin background($color) {
    @include themeify {
        background: themed($color)!important;
    }
}

//获取图片
@mixin content($color) {
    @include themeify {
        content: themed($color)!important;
    }
}

//获取背景图片
@mixin border_bottom($color) {
    @include themeify {
        border-bottom: themed($color)!important;
    }
}

//获取背景图片
@mixin border($color) {
    @include themeify {
        border: themed($color)!important;
    }
}

//获取字体颜色
@mixin font_color($color) {
    @include themeify {
        color: themed($color)!important;
    }
}

//获取边框颜色
@mixin border_color($color) {
    @include themeify {
        border-color: themed($color)!important;
    }
}

3.主题样式文件都配置好了,接下来就是怎么全局引入这两个文件及 怎么在vue页面中使用了,此处我们先看 vue页面中怎么使用 我们在_theme.scss中配置好的样式:
这里以其中一个页面为例,其他页面同理:
Vue项目如何配置、切换主题颜色(mixin + scss方式,简单高效)


4.样式文件基本都配置完成了,最后说最重要的一点:怎么知道当前我们需要用的样式呢?
Vue项目如何配置、切换主题颜色(mixin + scss方式,简单高效)文章来源地址https://www.toymoban.com/news/detail-440297.html

  • 此处根据具体情况具体分析,在合适的页面或位置写入即可,此处我是放到了 App.vue项目入口文件中,在进入文件后 通过window.document.documentElement.setAttribute()方法传入你当前想要使用的主题,此处我传入的’blue‘(蓝色主题),则vue页面中使用的即为_theme.scss中的 blue对象下配置好的颜色或者其他属性,
  • 为其他主题色(如’red’,‘basic’同理,前提是_theme.scss文件中有已经配置好的这两个主题色)

到了这里,关于Vue项目如何配置、切换主题颜色(mixin + scss方式,简单高效)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • scss配置主题

     上面是theme.scss 文件 light,dark 黑白主题配置颜色。 在项目中使用案例如下:  @include background_color(\\\'font_color\\\');  //背景颜色  @include border_color(\\\'font_color\\\');  //边框颜色 切换data-theme: 黑: 白:

    2024年02月21日
    浏览(30)
  • ElementUI主题颜色动态切换并缓存

    今天给大家分享一下在Vue中使用ElementUI时,想切换主题颜色的两种方式。 第一种:静态改变项目中的主题颜色 比较简单,稍微带过: 项目中创建 element-variables.scss 文件,编写内容: 之后,在项目的入口文件中,直接引入以上样式文件即可(无需引入 Element 编译好的 CSS 文件

    2024年02月14日
    浏览(40)
  • uniapp切换主题颜色(后台管理系统)

    需求:在现有已经做好的后台管理系统添加一个切换主题颜色的功能 分析:该项目用了很多uniapp的组件,css样式没有统一,类名也没有统一 使用混合mixin.scss,并使用vuex 效果图 功能:按钮背景颜色、部分样式、字体图标、分页跟随主题颜色变化也变化 每一个用户喜欢的主题

    2024年02月10日
    浏览(46)
  • 前端实现动态切换主题色-使用 css/less 动态更换主题颜色(换肤功能)或通过单击更改背景颜色

    提示: 以下是本篇文章正文内容,主要描述 使用 css/less 动态更换主题色(换肤功能) 提示: 使用 css/less 动态更换主题色(换肤功能), 方法共通,不限制技术栈: 其实在日常项目开发中经常会遇到有些用户想要一些自定义的的主题色来满足不同的视觉需求,这时候就需

    2024年02月15日
    浏览(67)
  • element如何动态切换主题(vite+vue+ts+elementPlus)

    提示:动态切换主题使用的是css3的var函数现实 示例:切换--main-bg-color的值,使用div style=\\\"--main-bg-color:red\\\" /div 那么当前标签下的所有节点使用到当前变量的都会发生变化  通过浏览器检查,发现element ui库的变量 提示: 众所周知css是从上往下执行,如果我们可以在hand标签里最后一

    2023年04月08日
    浏览(35)
  • 前端项目review之修改element-ui全局主题颜色配置element-theme-chalk和gulp

    每个公司的主题风格肯定是不一样的,比如现在的公司主题就是#00ab7a。在PC端TO-B的项目中少不了用 element-ui ,这个时候用 element-theme-chalk 直接本地编译修改了element全局的主题色。 执行 当只有一个主题不需要切换的时候,使用 element-theme-chalk 就足够了,但是当主题很多的时候

    2023年04月09日
    浏览(40)
  • scss中@mixin和@include

    在 Sass 中,@include指令用于在您的样式中包含一个 mixin。mixin 是可重用的样式块,您可以将其包含在样式表的多个位置。 以下是如何使用该@include指令的示例: 在此示例中,rounded-cornersmixin 是使用border-radius属性定义的。该@include指令用于将 mixin 包含在.button和.card类中。这将生

    2024年02月11日
    浏览(26)
  • 【vue】聊一聊Element UI的自定义主题颜色

    Element UI组件库相信大家一定都接触过。但是自定义主题颜色的需求有接触过的应该不多,至少我到今天是没有遇到类似的需求。之所以讲这个需求,是因为在我个人开发的开源项目中有做到这个需求,所以在这里和大家聊一聊我的实现。 在此之前我们需要先了解一下 CSS变量

    2024年02月11日
    浏览(51)
  • vue2自定义切换主题 dark暗黑主题(暗黑模式)

    业务要求要做一个主题色切换,类似于暗黑模式,以前没有做过于是在网络上搜罗现成的解决方案,由于是vue2的项目,找了很久都没有找到一个好的方便的解决方案,最后在github找到一个使用css3的解决方案,觉得十分不错,也很简单明了,于是就拿来直接用了,参考的gith

    2024年02月15日
    浏览(43)
  • vue项目中使用scss

    sass-loader:把 sass编译成css sass-loader:nodejs环境中将sass转css 提示:限制 node-sass,sass-loader 版本号,防止默认安装的版本号过高 版本对应关系: 提示:在 build 文件夹目录下 webpack.base.conf.js 文件中,找到 rules 添加以下代码 提示:在组件中style标签上添加属性 lang=\\\"scss\\\",保存运

    2024年02月17日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包