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

2022-04-15 0 509
目录
  • 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特性内容请搜索NICE源码以前的文章或继续浏览下面的相关文章希望大家以后多多支持NICE源码!

免责声明:
1、本网站所有发布的源码、软件和资料均为收集各大资源网站整理而来;仅限用于学习和研究目的,您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。 不得使用于非法商业用途,不得违反国家法律。否则后果自负!

2、本站信息来自网络,版权争议与本站无关。一切关于该资源商业行为与www.niceym.com无关。
如果您喜欢该程序,请支持正版源码、软件,购买注册,得到更好的正版服务。
如有侵犯你版权的,请邮件与我们联系处理(邮箱:skknet@qq.com),本站将立即改正。

NICE源码网 JavaScript vue3单文件组件中style特性的深入讲解 https://www.niceym.com/23700.html