本人全部文章首發在博客園: www.cnblogs.com/zhangrunhao…css
在人生就要絕望的時候, 被編輯器所提示的一個
scopedSlots
所拯救. 臥槽, 寫到最後才發現這個屬性的具體卵用. 詳情見最後解決辦法.html
.vue
文件.<template>
中使用$style:[類名]
, <style module>
進行了樣式的綁定.<template>
<span :class="$style.text">
...
</span>
</template>
<style module> .text {} </style>
複製代碼
module
這個屬性的具體含義scoped
造成獨立做用域後, 並不能影響到elemnt中組件的樣式.scopedSlots
標識style標籤後, 解決問題. 但出現 dev環境正常, 部署後, 不起做用.vue
的<style>
標籤這應該是關係到,
vue-loader
這個webpack的插件vue
vue-laoder
會解析組件, 提取語言塊. 在須要的時候, 通過其餘的loader處理, 最後組裝成一個commonjs模塊.
export default出來一個對象
而後呢, 上面的<template>
, 掛載在 這個對象的template屬性上
<style>
能夠有module和scoped屬性, 來將樣式封裝到組件中. 具備不一樣封裝模式的多個<style>
標籤, 能夠在一個組件中混合使用style-loader
會提取內容, 並經過<style>
標籤, 加入到文檔的<head>
中. 也能夠經過配置webpack造成單個.css文件.$style
配合<module>
如何工做參考: vue-loader-v14.vuejs.org/zh-cn/featu…webpack
<style>
中使用一個module
屬性, 能夠造成名爲$style
的計算屬性<span :class="$style.text">
...
</span>
複製代碼
isRed
這個屬性是true
的話, 就會添加上red
這個屬性名<span :class="{[$style.red] : isRed}">
測試
</span>
<script> data() { return { entries: [], isRed: true, }; }, </script>
<style module> .red { color: red; } </style>
複製代碼
能夠在js中經過console.log(this.$style.red)
進行訪問web
可使用module=''
來更改$style
這個名稱框架
<div :class="aaa.root">
</div>
<style lang="less" module="aaa"> </style>
複製代碼
scoped
的做用域是如何的<style></style>
標籤有scoped
屬性的時候, 他的css樣式只做用在當前做用域scoped
以後, 父組件的樣式不會再深刻到自組件.
>>>
或者是 /deep/
stylus
起做用, scss
不起做用, 並未驗證v-html
動態生成的樣式不受做用域內樣式影響, 但我想應該加個類樣式名稱,能夠解決.(未驗證)build
的文件夾中element/packages/theme-chalk/src/menu.scss
, 以方便後期的具體查看scopedSlots
解決我擦哦, 再次測試後, 發現添加
scopedSlots
並無什麼卵用, 和什麼都不寫是他媽一個樣子啊.. 我說怎麼, 怎麼查了半天, 也沒人用. 還被這玩意所拯救, 也真是夠了.. 當時還驕傲了半天, 還覺得是發現了新天地, 也真是6了.less
scoped
以後, 在子組件上面添加類樣式名, 發現並無卵用錯誤依舊: 只是在表面層上的有一些data-v的注入編輯器
沒有找到須要注入到裏面的條件, 發現本身前面大部分的判斷都是錯誤的.測試
scoped
方案>>>
語法糖進行樣式的注入<style scoped> .main_nav .el-menu .el-submenu >>> .el-submenu__title { background-color: red; } </style>
複製代碼
module
方案:global()
進行這個屬性下面的所有選擇<style lang="less" module="aaa"> .red { .item { :global(.el-submenu__title) { background: red; } } } </style>
複製代碼
<style></style>
只有module
和scoped
, 沒有其餘取巧方案module
造成一個表明屬性的計算屬性, 默認名稱爲$style
, 其中的:global()
能夠進行這個區域下面的全部元素的選擇.scoped
造成的做用域, 能夠經過>>>
來進行子組件的樣式覆蓋, 帶只要原生的css支持.