概述
目录
- 一:未分类
- 1.单个组件或页面可以多个style,混用本地和全局样式
- 2.深度作用选择器
- 二:常见问题解决
- 1.修改页面保存后页面不自动刷新,只能手动刷新的问题
一:未分类
1.单个组件或页面可以多个style,混用本地和全局样式
我们可以在一个组件中同时使用有 scoped 和非 scoped 样式,来实现复杂需求:
<style>
/* 全局样式 */
</style>
<style scoped>
/* 本地样式 */
</style>
Vue 官方文档介绍 Scoped
Scoped CSS | Vue Loader https://vue-loader.vuejs.org/zh/guide/scoped-css.html
当 <style>
标签有 scoped 属性时,它的 CSS 只作用于当前组件中的元素。这类似于 Shadow DOM 中的样式封装。
要注意scoped的作用域,因为权重的问题,如果是在子组件使用了scoped,那么在父组件中是不能直接修改子组件的样式的,需要在父组件中使用vue的深度作用选择器。
.parent >>> .children{ /* ... */ }
.parent /deep/ .children{ /* ... */ }
动态生成的内容
通过 v-html
创建的 DOM 内容不受 scoped 样式影响,但是你仍然可以通过深度作用选择器来为他们设置样式。
还有一些要留意
-
Scoped 样式不能代替 class。考虑到浏览器渲染各种 CSS 选择器的方式,当 p { color: red } 是 scoped 时 (即与特性选择器组合使用时) 会慢很多倍。如果你使用 class 或者 id 取而代之,比如 .example { color: red },性能影响就会消除。
-
在递归组件中小心使用后代选择器! 对选择器 .a .b 中的 CSS 规则来说,如果匹配 .a 的元素包含一个递归子组件,则所有的子组件中的 .b 都将被这个规则匹配。
需要研读的文章:
-
vue中的css作用域、vue中的scoped坑点 - 古兰精 - 博客园 https://www.cnblogs.com/goloving/p/9119460.html
-
vue组件中的样式属性:scoped,解决在父组件中无法修改子组件样式问题 - 古兰精 - 博客园 https://www.cnblogs.com/goloving/p/9119265.html
-
vue中scoped的原理及慎用原因 - 简书 https://www.jianshu.com/p/b92e2a022cd8
2.深度作用选择器
如果你希望 scoped 样式中的一个选择器能够作用得“更深”,例如影响子组件,你可以使用 >>> 操作符:
<style scoped>
.a >>> .b { /* ... */ }
</style>
上述代码将会编译成:
.a[data-v-f3f3eg9] .b { /* ... */ }
有些像 Sass 之类的预处理器无法正确解析 >>>
。这种情况下你可以使用 /deep/
或 ::v-deep
操作符取而代之——两者都是 >>>
的别名,同样可以正常工作。
二:常见问题解决
1.修改页面保存后页面不自动刷新,只能手动刷新的问题
- 在项目根目录下,找到名为
vue.config.js
的文件,没有的话就新建一个; - 把
devServer
的open
设置为 tue,如下:
module.exports = {
devServer : {
hot:true,
open : true,
port : 8080,
host : "0.0.0.0"
}
}
最后
以上就是老实电灯胆为你收集整理的深入浅出的vue.js项目开发理解一:未分类二:常见问题解决的全部内容,希望文章能够帮你解决深入浅出的vue.js项目开发理解一:未分类二:常见问题解决所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复