css预处理器scss的使用如何全局引入

目录

scss 基本功能

1、嵌套

2、变量 $

3、@mixin 和 @include

4、@extend

5、@import

scss 在项目中的使用

1、存放 scss 文件

2、引入 variables 和 mixins

2-1、局部引入

2-2、全局引入

3、入口文件中引入其他文件 


    项目中使用 css 预处理器,可以提高 css 开发效率,合理应用预处理器的特性,也可以提高 css 代码的可维护性。

    目前常见的  css 预处理器有三种:less,scss(sass升级版),stylus。不管是哪一种,最基本的 variables,extend,mixin,import 这些都是有的,只不过具体的用法和写法各有不同罢了。大家可以根据自己的喜好,选择自己喜欢的预处理器。

    我选择的是 scss。具体原因是:element-ui 的 theme-chalk 使用 scss 编写,项目中如果也使用 scss,那么后续想改变 element-ui 的主题色,会非常容易。当然不使用 scss,也是可以改变 element-ui 的主题色或是使用自定义主题的,只不过个人觉得比较麻烦。

    所以,在这里直接选择了 scss。而且接触过的大部分项目也都是使用的 scss,

不光 PC 端,还有移动端以及小程序的项目。


scss 基本功能

1、嵌套

// scss 写法
.container{width: 100%;height: 100%;.wrap{max-width: 1200px}
}
// 以上代码使用 css 书写
.container{width: 100%;height: 100%;
}
.container .wrap{max-width: 1200px;
}// scss 写法
.title {font: {family: fantasy;size: 20px;weight: bold;}
}
// 以上代码使用 css 书写
.title{font-family: fantasy;font-size: 20px;font-weight: bold;
}// scss 写法
.container{width: 100%;height: 100%;background: #409eff;&:hover{background: #42b983;}
}
// 以上代码使用 css 书写
.container{width: 100%;height: 100%;background: #409eff;
}
.container:hover{background: #42b983;
}

2、变量 $

$color = #2E98FE.container{width: 100%;height: 100%;background: $color
}

3、@mixin 和 @include

@mixin title-text {font: {size: 20px;weight: bold;}color: #2c3e50;
}
.card__title{width: 100%;height: 40px;@include title-text
}

4、@extend

// scss @extend
.error {border: 1px #f00;background-color: #fdd;
}
.seriousError {@extend .error;border-width: 3px;
}// 以上代码最终编译为
.error, .seriousError {border: 1px #f00;background-color: #fdd; 
}
.seriousError {border-width: 3px; 
}

5、@import

@import "foo.scss";

scss 在项目中的使用

1、存放 scss 文件

在 assets 文件夹中创建 scss 文件夹,用于存放 scss 的所有文件

具体文件如下:

当然,也有的习惯是放到 styles 文件目录下 :

common.scss        公共基础样式

main.scss        入口文件

mixins.scss        混入样式

reset.scss        重置文件

variables.scss        变量

    一般情况下,每个系统都有属于自己的一套样式风格。我们可以根据设计规范,定义一套变量,然后在实际的开发中,使用变量编写 css 样式。这样写的好处是什么呢?就是当你的项目已经开发到一半或者已经开发完成进入测试阶段了,这时老板走过来对你说,这个系统怎么是蓝色的呀,改成红色吧。这个时候,再也不需要一个一个文件的修改样式了,只需要修改 variables 中的一个变量就可以了。


2、引入 variables 和 mixins

variables.scss 文件定义好之后,有两种使用方式:局部引入和全局引入

mixins.scss 文件类似。

2-1、局部引入

在具体的文件中引入。

// App.vue<style lang="scss" scoped>
@import './assets/scss/variables.scss';.container{width: 100%;height: 100%;background: $background-color;
}
</style>

    局部引入,变量只能在被引入的文件中使用。通常,变量在绝大多数文件中都会被用到,如果在每个文件中都要引入一遍,略显麻烦,这个时候就可以考虑 全局引入 。 


2-2、全局引入

一次引入,随处可用。

// vue.config.jsmodule.exports = {publicPath: './',outputDir: process.env.VUE_APP_OUTPUT,css: {loaderOptions: {sass: {prependData: `@import "@/assets/scss/variables.scss";@import "@/assets/scss/mixins.scss";`}}}
}

这里需要注意的是: sass-loader 版本不同,loaderOptions 中 prependData 的属性名不同

  • sass-loader v8-,这个属性名是 "data"
  • sass-loader v8 中,这个属性名是 "prependData"
  • sass-loader v10+,这个属性名是 "additionalData"


3、入口文件中引入其他文件 

// main.scss@import "./reset.scss";
@import "./common.scss";

这里注意文件的引入顺序。

// main.jsimport Vue from 'vue'
import App from './App.vue'
import './registerServiceWorker'
import router from './router'
import store from './store'import './assets/scss/main.scss'Vue.config.productionTip = falsenew Vue({router,store,render: (h) => h(App),
}).$mount('#app');

以上,就是我在项目用使用 scss 的方案。

之所以整理这篇文章,主要是因为项目有一个整体主色调系:紫色

定义了一个色值变量 : $theme-purple , 主题紫色,整个项目很多地方都会使用到,

并且将其也写到了 variables.scss  变量文件 中,接下来就是重点了,

将 variables.scss 在 main.js 入口文件中打算引入供全局使用时

却发现别的地方根本无法使用,后来经过百度一番后,

才得知好像是 scss变量 无法简单的通过 main 就能全局引用了,

得需要单独去 Vue 的 vue.config.js 配置文件里面配置一下才可。

也就是上面的全局引入方式

      sass: {
        prependData: `@import "@/assets/scss/mixins.scss";`
      }

这里我只引入了 mixins ,是因为我在 mixins 里面引入了 variables.scss

这样重启一下项目就 OK 大功告成啦 ~ 下课!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/287930.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【面试】Elasticsearch 在部署时,对 Linux 的设置有哪些优化方法?

Elasticsearch 在部署时&#xff0c;对 Linux 的设置有哪些优化方法&#xff1f; Elasticsearch是一个分布式搜索和分析引擎&#xff0c;它在Linux环境下的性能和稳定性可以通过一些优化方法进行提升。以下是一些针对Linux环境下Elasticsearch部署的优化方法&#xff1a; 1. 内…

一文搞懂大疆机场kmz航线和图新地球导出的kmz的区别

0序&#xff1a; 近期有用户问“ 把KML文件放到图新后&#xff0c;想转出来KMZ&#xff08;大疆的机场用的格式&#xff09;但是转出来的KMZ显示格式不对 ” 之前只是知道大疆的航线规划采用的是kml规范&#xff0c;但具体是什么样并不清楚。就这这个问题把这个事情给弄明白。…

京东电商数据采集的三种方式|电商数据API接口实时数据采集

要实现电商的数据分析&#xff0c;电商数据采集是很重要的一环。电商数据采集要分几个步骤完成&#xff1f;每个步骤的意义是什么&#xff1f;每个步骤分别需要怎样的技能&#xff1f;今天这篇文章告诉你。 电商的数据通常需要通过数据采集的方式获得。电商数据采集方法共分为…

Java入门之数据类型

一、数据类型 基本数据类型 &#xff08;1&#xff09;如果要定义“long类型的变量要在数值后面加一个L作为后缀” &#xff08;2&#xff09;如果要定义float类型的变量的时候数据值也要加一个作为后缀 小结&#xff1a; 练习 内容&#xff1a; 姓名&#xff1a;巴巴托斯 &…

软件测试技术之登录页面测试用例的设计方法

相信大家都有过写登录测试用例的经验&#xff0c;相较于开发人员编写代码而言&#xff0c;测试人员编写用例同样重要。本文作者总结了一些关于登录用例的经验。 一、功能测试用例设计&#xff1a; 1、正常登录场景 测试用例1&#xff1a;输入正确的用户名和密码&#xff0c;验证…

JVM(五)——类加载阶段

一、类加载阶段 一个类型从被加载到虚拟机内存中开始&#xff0c;到卸载出内存为止&#xff0c;它的整个生命周期将会经历加载 &#xff08;Loading&#xff09;、验证&#xff08;Verification&#xff09;、准备&#xff08;Preparation&#xff09;、解析&#xff08;Resol…

Docker构建多平台(x86,arm64)构架镜像

这里写自定义目录标题 背景配置buildx开启experimental重启检查 打包 背景 docker镜像需要支持不同平台架构 配置buildx 开启experimental vi /etc/docker/daemon.json {"experimental": true }或者 重启检查 # 验证buildx版本 docker buildx version# 重启do…

Oracle参数文件详解

1、参数文件的作用 参数文件用于存放实例所需要的初始化参数&#xff0c;因为多数初始化参数都具有默认值&#xff0c;所以参数文件实际存放了非默认的初始化参数。 2、参数文件类型 1&#xff09;服务端参数文件&#xff0c;又称为 spfile 二进制的文件&#xff0c;命名规则…

Set和Map数据结构

Set和Map数据结构理解 Set&#xff1a; 1、es6新的数据结构&#xff0c;类似数组&#xff0c;但成员唯一 2、实例属性&#xff1a;Set.prototype.size返回Set实例的成员总数 3、操作方法&#xff1a;add、delete、has、clear 4、遍历操作&#xff1a;forEach、keys、values、en…

前端 CSS 经典:grid 栅格布局

前言&#xff1a;Grid 布局是将容器划分成"行"和"列"&#xff0c;产生单元格&#xff0c;然后将"项目"分配给划分好的单元格&#xff0c;因为有行和列&#xff0c;可以看作是二维布局。 一 术语 1. 容器 采用网格布局的区域&#xff0c;也就是…

MySQL使用教程:数据库、表操作

目录 1. 免密码登录MySQL1.1 免密码配置1.2 登录选项介绍 2. MySQL基础配置&#xff1a;my.cnf3. 开机自启动设置&#xff08;可选设置&#xff09;4. 查看存储引擎5. 查看系统的编码规则和校验规则6. 数据库的操作6.1 查看数据库6.2 创建数据库 create database6.3 删除数据库…

航空实时监控

1、从Kafka中读取飞机数据&#xff0c;并进行清洗 此步骤在前面的“使用Spark清洗统计业务数据并保存到数据库中”任务阶段应该已经完成。如果没有完成&#xff0c;请参考源代码自行完成。核心类主要有三个&#xff1a;SparkStreamingApplication类、SparkUtil类和MapManager类…

3.1 SQL概述

SQL&#xff08;Structured Query Language&#xff09; 结构化查询语言&#xff0c;是关系数据库的标准语言 SQL是一个通用的、功能极强的关系数据库语言 功能&#xff1a;查询&#xff0c;数据库模式创建&#xff0c;数据库数据的插入与修改&#xff0c;数据库完整性、安全…

pytest之fixture结合conftest.py文件使用+断言实战

pytest之fixture结合conftest.py文件使用 conftest.py--存放固件固件的优先级pytest执行流程pytest之断言实战pytest结合allure-pytest插件生成美观的报告 conftest.py–存放固件 在一个项目的测试中&#xff0c;大多数情况下会有多个类、模块、或者包要使用相同的测试夹具。这…

如何使用PHP和RabbitMQ实现延迟队列(方式一)?

前言 今天我们来做个小试验&#xff0c;用PHP和RabbitMQ实现消息队列的延迟功能。 前期准备&#xff0c;需要安装好docker、docker-compose的运行环境。 需要安装RabbitMQ的可以看下面这篇文章。 如何使用PHP和RabbitMQ实现消息队列&#xff1f;-CSDN博客 一、安装RabbitM…

哪个品牌男裤子版型好看?男士春夏季裤子推荐!

最近逐渐开始天气变热&#xff0c;很多朋友都开始挑选换季的衣服了。不过不少朋友都表示现在的男生裤子实在太难选&#xff0c;不仅款式品牌多如牛毛&#xff0c;而且市面上还有不少质量不好的衣裤。 所以我这段时间特别购买了一批衣服回来测评并且上身试穿&#xff0c;今天就…

Vscode循环弹出窗口输入密码的窗口 ‘s password:

今天使用Vscode&#xff0c;连接远程服务器一直不断的弹出窗口&#xff0c;要求输入密码&#xff0c;导致无法显示远程文件。误以为是产品id没有上传成功&#xff0c;导致服务器内没有commid id对应的文件。参考vscode通过ssh链接服务器卡在downloading with wget,但是处理完仍…

java算法第32天 | 贪心算法 part02 ● 122.买卖股票的最佳时机II ● 55. 跳跃游戏 ● 45.跳跃游戏II

122.买卖股票的最佳时机II 本题中理解利润拆分是关键点&#xff01; 不要整块的去看&#xff0c;而是把整体利润拆为每天的利润。假如第 0 天买入&#xff0c;第 3 天卖出&#xff0c;那么利润为&#xff1a;prices[3] - prices[0]。 相当于(prices[3] - prices[2]) (prices[…

STM32不使用中断实现定时器微秒级精确延时

我们在写代码的时候避免不了要使用延时函数&#xff0c;很多延时函数都是使用中断或者tick来实现的&#xff0c;tick的方式最大到毫秒ms级别&#xff0c;通过中断方式的通用定时器来实现&#xff0c;如果实现1us的延时那么每1us就来一次中断&#xff0c;很影响cpu的效率。 本文…

elementary OS7 Ubuntu 22.04中硬盘挂载报错

elementary OS7 Ubuntu 22.04中硬盘挂载报错 背景目标思路解决方法 背景 上周末安装elementaryos7的过程中将windows10的引导文件搞丢了&#xff0c;这两天准备修复一下&#xff0c;保险期间将固态硬盘上的文件备份到移动硬盘上&#xff0c;备份过程中出现报错的问题&#xff…