vue中CSS

使用预处理器

如果创建项目时没有选择需要的预处理器(Sass/Less/Stylus),则需手动安装相应loader

	# Sass
	npm install -D sass-loader node-sass
	# Less
	npm install -D less-loader less
	# Stylus
	npm install -D stylus-loader stylus

例:

<style scoped lang="scss">
 $color: #42b983;
  a {
    color: $color;
 }
</style>

Scoped CSS

<style> 标签有 scoped 属性时,它的 CSS 只作用于当前组件中的元素。

<style scoped>
.red {
 color: red;
}
</style>

其原理是通过使用 PostCSS 来实现以下转换:

<template>
	<div class="red" data-v-f3f3eg9>hi</div>
</template>
<style>
	.red[data-v-f3f3eg9] {
	color: red;
	}
</style>

深度作用选择器: >>>

深度作用选择器:使用 >>> 操作符可以使 scoped 样式中的一个选择器能够作用得“更深”。一般用于在使用第三方库时,不方便直接修改源码,使用 >>>穿透过去修改。
例如影响子组件:

<style scoped>
#app >>> a {
 color: red
}
</style>

Sass 之类的预处理器无法正确解析 >>> 。这种情况下你可以使用 /deep/ 或 ::v-deep 操作符取而代之

<style scoped lang="scss">
#app {
/deep/ a {
 color: rgb(196, 50, 140)
}
::v-deep a {
 color: rgb(196, 50, 140)
}
}
</style>

CSS Module

CSS Modules 是一个流行的,用于模块化和组合 CSS 的系统。 vue-loader 提供了与 CSS Modules 的一流集成,可以作为模拟 scoped CSS 的替代方案,项目规模庞大后建议使用。
步骤:
(1)添加module

	<style module lang="scss">
	.red {
	color: #f00;
	}
	.bold {
	font-weight: bold;
	}
	</style>

(2)访问
通过$style.xx访问

<a :class="$style.red">awesome-vue</a>
<a :class="{[$style.red]:isRed}">awesome-vue</a>
<a :class="[$style.red, $style.bold]">awesome-vue</a>

JS中访问

<script>
export default {
created () {
 // -> "red_1VyoJ-uZ"
 // 一个基于文件名和类名生成的标识符
 console.log(this.$style.red)  
}
}
</script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值