问题:
login.vue中引入<style lang="postcss" src="./login.css" scoped></style>
login.css中
.el-input__inner { background-color: rgba(255,255,255,.2); }
设置el-input的样式没有效果。
解决方法:
是因为scoped的原因。去掉scoped就可以显示样式。
但此时会污染全局样式,所以将该样式放在控制全局样式的文件里(比如app.css)。
为了不让所有的el-input都变透明,所以给需要透明的el-input添加一个类lucencyInput
.lucencyInput .el-input__inner { background-color: rgba(255,255,255,.2); }
原因:
组件的scoped会给写的每一个样式添加一个唯一的过滤器[data-],对应的模板也会加一个data-属性,这样就保证了样式只对当前组件有效。
这样我们写的.el-input__inner会带一个过滤器,但是element组件中却没有,自然样式就不生效了。
ps:还有一种情况,像el-button这种,写在scoped的样式是生效的。因为el-button属于第一层,也会被当前组件加一个data-,
而上面el-input__inner是属于el-input里面的类,当前组件只能给第一层el-input加一个data-,但是里层的相当于是子组件内部的东西了,是不会加data-的。
(这里比较绕,可以打开浏览器,自己调试一下就明白了了)