采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
我一般都是在最外层写上一个全局唯一的container类,用命名空间的概念来做样式隔离,因为scoped会增加一些垃圾代码,不知道老师对于这个问题的看法是怎样的?
代码案例:这莫非是个bug,我这边加不加scoped,他的样式都没有渲染进去
问题更新
如下图所示,我新创建了一个test组件,并在父组件中进行了引用,同时创建了和【my-search-container】一模一样的css选择器,但是却并没有进行覆盖,这是hbuilderx帮我们做的隔离么?究竟在什么情况下会出现样式的渗透呢?
你是在微信小程序端进行的渲染。因为uniapp可以一次开发多端运行,运行端不同,呈现的结果会存在差异。而通常我们都会采取最安全的方案
感谢老师的解答,明白啦!
首先我们需要先明确一下概念。 HBuilder 是一个编辑器,只提供编辑代码的功能。咱们使用的框架,叫做 uni-app。
而针对于问题,说白了其实就是 scoped 的作用,以及 scoped 区别于唯一的container类的地方。
那么首先,先来说一下 scoped 的作用:
当 <style> 标签有 scoped 属性时,它的 CSS 只作用于当前组件中的元素
<style>
scoped
这是官网给出的答案(https://vue-loader.vuejs.org/zh/guide/scoped-css.html#%E6%B7%B7%E7%94%A8%E6%9C%AC%E5%9C%B0%E5%92%8C%E5%85%A8%E5%B1%80%E6%A0%B7%E5%BC%8F) , 也就是说使用 scoped 属性时,样式不会渗透到子组件中。
可以参考一下代码和图示
渲染结果
接下来是第二个问题:scoped 区别于唯一的container类的地方。
之前说过 唯一的container类 可以解决Scoped的一部分功能,也就是 不让样式渗出到 类名之外,但是它无法解决渗透到子组件的问题。
也就是说:当你在该组件下使用其他子组件时,你依然可以在该组件中修改子组件的样式。
具体可参考一下代码:
以下是渲染结果:
唯一的类名可以解决Scoped的一部分功能,但是当你的组件中使用其他组件的时候,是没有办法阻止样式渗透的
感谢老师的回答,不过我还是没有很理解,因为对于其他组件来说,他们的样式也是被限制在其父类之下的呀,为什么会存在渗透呢,而且我发现,hbuilder在编译的过程中好像也没有支持样式的渗透。
登录后可查看更多问答,登录/注册
专门为小程序0基础学员而设,让你拥有能上线的作品
2.1k 3
1.1k 4
1.4k 12
15.9k 12
1.2k 10
购课补贴联系客服咨询优惠详情
慕课网APP您的移动学习伙伴
扫描二维码关注慕课网微信公众号