vue3单文件组件中style特性的深入讲解

目录
  • style scoped
  • style module
  • 状态驱动的动态css
  • 总结

style scoped

需要注意的有:

  • 样式不会影响到其他组件,只会在当前组件生效。
  • 子组件的根元素会同时 受父组件的作用域样式,和子组件的作用域样式影响. 这样做的目的是让父组件可以调整子组件的布局。
  • 存在3个特殊的选择器:

1. 深度选择器:可以影响到子组件. 使用伪类 => :deep(cls: 影响的选择器)

    .a :deep(.b) {
        ...
    }

2. 插槽选择器: 可以影响到插槽内容的样式。使用伪类 => :slotted(选择器)

    :slloted(.a) {
        ...
    }

3. 全局选择器: 是样式影响到全局。 使用伪类 => :global(选择器)

    :slloted(.a) {
        ...
    }

scoped style 可以和 style同时存在

style module

style 标签中带有 module。其样式和 style scoped一样只能作用域于当前组件。

此方式会将css 编译为 css modules.且暴露给组件$styles对象来使用css样式

<template>
  <p :class="$style.red">
    This should be red
  </p>
</template>

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

可以给module赋值来自定义暴露的对象名称

<template>
  <p :class="style.red">
    This should be red
  </p>
</template>

<style module='style'>
.red {
  color: red;
}
</style>

在组合式api中可以使用 useCssModule() api来使用cssModule.

// 默认, 返回 <style module> 中的类
useCssModule()

// 命名, 返回 <style module="classes"> 中的类
useCssModule('classes')

状态驱动的动态css

可以使用 v-bind() 来将css值关联到动态的组件状态上

<template>
  <div class="text">hello</div>
</template>

<script>
export default {
  data() {
    return {
      color: 'red'
    }
  }
}
</script>

<style>
.text {
  color: v-bind(color);
}
</style>

总结

到此这篇关于vue3单文件组件中style特性的文章就介绍到这了,更多相关vue3单文件组件style特性内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • vue3单文件组件中style特性的深入讲解

    目录 style scoped style module 状态驱动的动态css 总结 style scoped 需要注意的有: 样式不会影响到其他组件,只会在当前组件生效. 子组件的根元素会同时 受父组件的作用域样式,和子组件的作用域样式影响. 这样做的目的是让父组件可以调整子组件的布局. 存在3个特殊的选择器: 1. 深度选择器:可以影响到子组件. 使用伪类 => :deep(cls: 影响的选择器) .a :deep(.b) { ... } 2. 插槽选择器: 可以影响到插槽内容的样式.使用

  • 解决vue 单文件组件中样式加载问题

    在写单文件组件时,一般都是把标签.脚本.样式写到一起,这样写个人感觉有点不够简洁,所以就想着把样式分离出去. 采用import加载样式 在局部作用域(scoped)采用@import加载进来的样式文件,想法是美好的.以为这样加载进来的样式文件也只对当前组件有效:可现实是残酷的,这样加载进来的样式无法限制其作用域. <style scoped> @import "样式文件"; </style> 解决方案 采用 src属性加载样式. <style src=&q

  • Vue3.2单文件组件setup的语法糖与新特性总结

    目录 前言 setup语法糖 一.基本用法 二.data和methods 三.计算属性computed 四.监听器watch.watchEffect 五.自定义指令directive 六.import导入的内容可直接使用 七.声明props和emits 八.父组件获取子组件的数据 九.provide和inject传值 十.路由useRoute和useRouter 十一.对await异步的支持 十三.全局属性globalProperties 十四.生命周期 十五.与普通的script标签一起使用

  • vue3中单文件组件<script setup>实例详解

    目录 一.相比普通script语法的优势 二.基本语法 三.响应式 四.使用组件 五.使用自定义指令 六.defineProps 和 defineEmits 七.defineExpose 八.useSlots 和 useAttrs 九.顶层 await 附:<script setup>和 <script>之间的主要区别 总结 一.相比普通script语法的优势 <script setup>是在单文件组件 (SFC) 中使用组合式 API的编译时语法糖.相比于普通的 &l

  • Vuejs 单文件组件实例详解

    在之前的实例中,我们都是通过 Vue.component 或者 components 属性的方式来定义组件,这种方式在很多中小规模的项目中还好,但在复杂的项目中,下面这些缺点就非常明显了: 字符串模板:缺乏高亮,书写麻烦,特别是 HTML 多行的时候,虽然可以将模板写在 html 文件中,但是侵入性太强,不利于组件解耦分离. 不支持CSS:意味着当 HTML 和 JavaScript 组件化时,CSS明显被遗漏了 没有构建步骤:限制只能使用 HTML 和 ES5 JavaScript,而不能使用

  • 详解在WebStorm中添加Vue.js单文件组件的高亮及语法支持

    本文介绍了详解在WebStorm中添加Vue.js单文件组件的高亮及语法支持,分享给大家,具体如下: 一个小遗憾 能来看这篇文章的想必不用我来介绍vue是什么了.先让我们膜拜大神!vue项目的创建者尤大写了个sublime下语法高亮的插件,有人问他how about webstorm support?他是这么回答的.默哀一分钟. 添加高亮和语法支持 这个我是通过插件来实现的.网上目前有两个插件: 插件1:https://github.com/henjue/vue-for-idea 插件2:htt

  • Vue单文件组件的如何使用方式介绍

    在很多 vue项目中,我们使用 vue.component 来定义全局组件,紧接着用 new vue(el: ")在每个页面内指定一个容器元素 这种方式在很多中小规模的项目中运作的很好,在这些项目里 JavaScript 只被用来加强特定的视图. 但挡在更复杂的项目中,或者你的前端完全由 javascript 驱动的时候,下面这些缺点将变得非常明显: 全局定义 (global definitions)强制要求每个 component 中的命名不能重复 字符串模板 (string template

  • 基于Vue单文件组件详解

    本文将详细介绍Vue单文件组件 概述 在很多 Vue 项目中,使用 Vue.component 来定义全局组件,紧接着用 new Vue({ el: '#container '}) 在每个页面内指定一个容器元素. 这种方式在很多中小规模的项目中运作的很好,在这些项目里 JavaScript 只被用来加强特定的视图.但当在更复杂的项目中,或者前端完全由 JavaScript 驱动的时候,下面这些缺点将变得非常明显: 1.全局定义 (Global definitions) 强制要求每个 compon

  • Vue单文件组件基础模板小结

    背景 相信大家在使用Vue开发项目时,基本都是以单文件组件的形式开发组件的,这种方式好处多多: 1.代码集中,便于开发.管理和维护 2.可复用性高,直接将vue文件拷贝到新项目中 我暂时就想到这两点,童鞋们可以在评论里帮我补充:因为有这么多优点,所以决定有必要将vue组件的常用配置项提炼出来,形成一个组件模板,方便日后项目开发复用 <template> <div> <h1>{{title}}</h1> <ChildComponents></

  • Vuejs实现带样式的单文件组件新方法

    本文实例为大家分享了Vuejs实现单文件组件的方法,供大家参考,具体内容如下 代码如下: example.html <script src="vue.js"></script> <div id="example"> <h3>Vue component<h3> <counter></counter> <counter></counter> </div>

随机推荐