VUE3项目--集成Sass

121 阅读2分钟

项目中集成Sass后,在组件内部就可以使用sass样式,需要加上lang="scss"

一、安装Sass

pnpm install sass(或者sass-embedded) sass-loader -D

二、添加全局样式

1、消除默认样式

有三种方法消除CSS默认样式。

1.1 使用经典的CSS RESET(简单粗暴)

这种方法的目标是移除几乎浏览器所有的默认样式(边距、填充、列表符号等),让你完全掌控。

  1. src文件夹下新建文件/styles/index.scss

  2. 在src/styles下文件文件reset.scss,目的是清除默认样式。复制npm官网的reset.scss文件内容到该文件中。

  3. 在index.scss中引入reset.scss文件,放在文件最顶部

// styles/index.scss

// 引入reset.scss,清除默认样式。最后的分号一定要加上,否则会导致下面的样式配置报错
@use './reset.scss';

注意

不推荐使用reset.scss清除默认样式。需要重新定义很多基础元素样式。 比如:使用Element Plus组件时,element 样式无效

1.2 现代化的选择normalize.css 替代Css resets(推荐)

  1. 安装normalize.css

pnpm intall --save normalize.css

  1. 在src/styles/index.scss文件中引入,并放在文件最顶部
// styles/index.scss

// 最后的分号一定要加上,否则会导致下面的样式配置报错
@use 'normalize.css/normalize.css';

访问normalize.css官网

1.3 The New CSS Reset

  1. 安装The New CSS Reset或者下载最新的文件并放到src/styles/下。

npm i the-new-css-reset

  1. 在src/styles/index.scss文件中引入,并放在文件最顶部
// styles/index.scss

// 最后的分号一定要加上,否则会导致下面的样式配置报错
import "the-new-css-reset/css/reset.css";

访问The New CSS Reset官网

为什么顺序很重要?

CSS的规则是“后来者居上”。必须先把默认样式清除掉,在使用自己的新样式。所以reset必须在最前面。

1.4 三种方式的比较

方法优点缺点推荐场景
经典reset提供一个完全空白的画布,控制力最强可能需要重新定义很多基础元素的样式。比如h1。对第三方组件的样式也不友好设计系统或需要高度定制化UI的项目
normalize.css保留有用的默认值,修复bug,跨浏览器一致性好不会移除所有的样式,可能有些默认样式你还是不想要绝大多数项目的首选,特别是内容型网站或标准应用
The New CSS Reset结合了unset等新特性,非常强大和简洁all:unset 可能对以下嵌入式第三方组件有未知影响。适合喜欢尝试新技术,追求极致简洁的开发者

2、定义全局样式变量

  1. 在src/styles下文件文件variable.scss,目的是定义全局样式变量。变量名称以$开头。
// variable.scss

$color: red;
$base-size: 10
  1. 在入口文件main.ts中导入样式文件。
// main.ts

// 引入全局样式
import '@/styles/index.scss'
  1. 在vite.config.ts文件中配置scss。
// vite.config.ts

export default defineConfig({
  css: {
    preprocessorOptions: {
      scss: {
        additionalData: '@use "@/styles/variable" as *;'
      }
    }
  }
})

三、使用全局样式

上面定义了两个全局样式colorcolor、base-size,直接在组件中使用即可。

<style scoped lang="scss">
div {
  h1 {
    // 使用全局样式变量$color
    color: $color;
  }
}
</style>