vue中全局引入scss(mixin)

使用 sass-resources-loader 工具

cnpm install sass-resources-loader

在 src/assets/style 目录中新建一个 mixin.scss 文件

@mixin border-radius ($radius: .10rem) {
  -webkit-border-radius: $radius;
     -moz-border-radius: $radius;
      -ms-border-radius: $radius;
          border-radius: $radius;
}

@mixin border-box () {
  -webkit-box-sizing: border-box;
     -moz-box-sizing: border-box;
      -ms-box-sizing: border-box;
          box-sizing: border-box;
}

@mixin display-flex () {
  display: -webkit-box;
  display: -webkit-flex;
  display: -ms-flexbox;
  display: flex;
}

@mixin flex-num ($num:1) {
  -webkit-box-flex: $num;
      -webkit-flex: $num;
          -ms-flex: $num;
              flex: $num;
}

@mixin flex-align-items ($align:center) {
  -webkit-align-items: $align;
    -webkit-box-align: $align;
       -ms-flex-align: $align;
          align-items: $align;
}

@mixin flex-justify-content ($justify:center) {
  -webkit-justify-content: $justify;
         -webkit-box-pack: $justify;
            -ms-flex-pack: $justify;
          justify-content: $justify;
}

@mixin flex-wrap ($wrap:nowrap) {
        -webkit-flex-wrap: $wrap;
            -ms-flex-wrap: $wrap;
                flex-wrap: $wrap;
}

@mixin display-flex-customize ($justify: center, $align: center) {
  @include display-flex();
  @include flex-justify-content($justify);
  @include flex-align-items($align);
}

@mixin display-flex-center () {
  @include display-flex-customize();
}

@mixin display-flex-start-center () {
  @include display-flex-customize(flex-start);
}

@mixin display-flex-space-between-center () {
  @include display-flex-customize(space-between);
}

//绝对居中
@mixin absolute-center() {
  position: absolute;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
}

// 不换行。。。
@mixin text-ellipsis(){
  text-overflow: ellipsis;
  overflow: hidden;
  white-space: nowrap
}

//强制换行
@mixin break-word {
  word-break: break-all;
  word-wrap: break-word;
}

然后在项目的根目录下,新建 vue.config.js 文件,输入以下内容

// vue.config.js
module.exports = {
    chainWebpack: config => {
        const oneOfsMap = config.module.rule('scss').oneOfs.store
        oneOfsMap.forEach(item => {
            item
                .use('sass-resources-loader')
                .loader('sass-resources-loader')
                .options({
                    // Provide path to the file with resources
                    // 要公用的scss的路径
                    resources: './src/assets/style/mixin.scss'
                })
                .end()
        })
    }
}

然后在 .vue 文件中,就可以直接使用了

// home.vue
<style lang="scss" scoped>
    .home-index{
		.home-nav{
			@include display-flex-customize(space-around);
		}
	}
</style>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值