经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » JS/JS库/框架 » Vue.js » 查看文章
vue3单文件组件中style特性的深入讲解
来源:jb51  时间:2021/9/6 11:52:40  对本文有异议

style scoped

需要注意的有:

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

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

  1. .a :deep(.b) {
  2. ...
  3. }

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

  1. :slloted(.a) {
  2. ...
  3. }

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

  1. :slloted(.a) {
  2. ...
  3. }

scoped style 可以和 style同时存在

style module

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

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

  1. <template>
  2. <p :class="$style.red">
  3. This should be red
  4. </p>
  5. </template>
  6.  
  7. <style module>
  8. .red {
  9. color: red;
  10. }
  11. </style>

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

  1. <template>
  2. <p :class="style.red">
  3. This should be red
  4. </p>
  5. </template>
  6.  
  7. <style module='style'>
  8. .red {
  9. color: red;
  10. }
  11. </style>

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

  1. // 默认, 返回 <style module> 中的类
  2. useCssModule()
  3.  
  4. // 命名, 返回 <style module="classes"> 中的类
  5. useCssModule('classes')

状态驱动的动态css

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

  1. <template>
  2. <div class="text">hello</div>
  3. </template>
  4.  
  5. <script>
  6. export default {
  7. data() {
  8. return {
  9. color: 'red'
  10. }
  11. }
  12. }
  13. </script>
  14.  
  15. <style>
  16. .text {
  17. color: v-bind(color);
  18. }
  19. </style>

总结

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

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号