vue 中的样式


理想的样式解决方案,期待达到以下目的:

  1. 样式方便复用

  2. 能轻易避免冲突,样式冲突往往难以定位

  3. 开发体验好,使用 scss 、less 等预处理,能提高开发效率和体验

  4. 方便修改样式

  5. 其他,比如兼容 css,降低学习成本

今天看看 vue 的样式解决方案,能否满足以上要求。

scoped 样式

style 标签上添加 scoped 标志,可以把样式作用范围限制在组件内,即组件内部的样式不会影响外部的样式。

原理:组件编译时给标签添加 data-v-xxx 属性,选择器附带该属性。

deep 样式

vue 提供了特殊的 :deep 选择器,可将父组件的样式作用到子组件内部。

v-deep 已经废弃。

将 vue component 转为 web component,deep 样式不生效。

slot 样式

在组件内部编写 slot 的样式

/* slot 里包含选择器 selector  */
:slotted(selector) {
  color: blue;
}

全局样式

  1. 引入多个 style,没有 scoped 的样式块,全局生效。
<style>
  /* global styles */
</style>

<style scoped>
  /* local styles */
</style>
  1. :global – 希望单条规则全局生效
:global(.yellow) {
  color: yellow;
}

v-bind 绑定动态属性

.progress-bar>div {
  background-color: #000;
  width: v-bind('props.progress');
  /* props.progress 是 props 属性*/
  height: 8px;
  border-radius: 10px;
  transition-property: width;
  transition-duration: 150ms;
}

style module

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

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

style module 能很好做到样式隔离,原理:重写选择器,使其全局唯一。

感觉在模板语法中用 style module,不如 scoped 好,更加适合 JSX。

CSS Modules 用法教程

更多参考

编写组件样式表

相关推荐

  1. vue 样式

    2024-06-15 10:34:08       33 阅读
  2. vue3覆盖组件样式方法

    2024-06-15 10:34:08       41 阅读
  3. Vuevue动态样式绑定

    2024-06-15 10:34:08       30 阅读
  4. vue改变v-html包含body标签样式修改方法

    2024-06-15 10:34:08       53 阅读
  5. vue样式动态绑定写法

    2024-06-15 10:34:08       47 阅读
  6. vue-treeselect下拉列表字体样式修改

    2024-06-15 10:34:08       41 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-15 10:34:08       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-15 10:34:08       100 阅读
  3. 在Django里面运行非项目文件

    2024-06-15 10:34:08       82 阅读
  4. Python语言-面向对象

    2024-06-15 10:34:08       91 阅读

热门阅读

  1. vue面试题

    2024-06-15 10:34:08       38 阅读
  2. C/C++函数指针、C#委托是什么?

    2024-06-15 10:34:08       36 阅读
  3. 富格林:力争打破黑幕安全盈利

    2024-06-15 10:34:08       29 阅读
  4. Leetcode(top100)最长连续序列

    2024-06-15 10:34:08       34 阅读
  5. 微服务与分布式面试题

    2024-06-15 10:34:08       32 阅读
  6. B树与B+树与Mysql innodb的B+树和其相关索引

    2024-06-15 10:34:08       24 阅读
  7. 【AI开发】LangGraph基础

    2024-06-15 10:34:08       35 阅读
  8. mmyolo尝试

    2024-06-15 10:34:08       25 阅读
  9. linux shell实现端口查询

    2024-06-15 10:34:08       22 阅读
  10. std::vector的emplace_back 与 push_back 比较

    2024-06-15 10:34:08       42 阅读
  11. 数据结构 ->反转链表

    2024-06-15 10:34:08       33 阅读
  12. 程序员该有怎么样的职业素养

    2024-06-15 10:34:08       30 阅读