最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當(dāng)前位置: 首頁 - 科技 - 知識(shí)百科 - 正文

詳解.vue文件中style標(biāo)簽的幾個(gè)標(biāo)識(shí)符

來源:懂視網(wǎng) 責(zé)編:小采 時(shí)間:2020-11-27 22:11:26
文檔

詳解.vue文件中style標(biāo)簽的幾個(gè)標(biāo)識(shí)符

詳解.vue文件中style標(biāo)簽的幾個(gè)標(biāo)識(shí)符:.vue文件中style標(biāo)簽的幾個(gè)標(biāo)識(shí)符 在人生就要絕望的時(shí)候, 被編輯器所提示的一個(gè)scopedSlots所拯救. 臥槽, 寫到最后才發(fā)現(xiàn)這個(gè)屬性的具體卵用. 詳情見最后解決辦法. 問題背景 問題由來 項(xiàng)目中使用了elementUI框架, 與.vue文件. 現(xiàn)狀: <te
推薦度:
導(dǎo)讀詳解.vue文件中style標(biāo)簽的幾個(gè)標(biāo)識(shí)符:.vue文件中style標(biāo)簽的幾個(gè)標(biāo)識(shí)符 在人生就要絕望的時(shí)候, 被編輯器所提示的一個(gè)scopedSlots所拯救. 臥槽, 寫到最后才發(fā)現(xiàn)這個(gè)屬性的具體卵用. 詳情見最后解決辦法. 問題背景 問題由來 項(xiàng)目中使用了elementUI框架, 與.vue文件. 現(xiàn)狀: <te
  • vue-laoder會(huì)解析組件, 提取語言塊. 在需要的時(shí)候, 經(jīng)過其他的loader處理, 最后組裝成一個(gè)commonjs模塊.
  • 其實(shí)就是export default出來一個(gè)對(duì)象 然后呢, 上面的<template>, 掛載在 這個(gè)對(duì)象的template屬性上
  • 之前, 直接import引近來一些樣式文件也是可行的, 但當(dāng)時(shí)并未思考這些標(biāo)識(shí)如何實(shí)現(xiàn).
  • <style>可以有module和scoped屬性, 來將樣式封裝到組件中. 具有不同封裝模式的多個(gè)<style>標(biāo)簽, 可以在一個(gè)組件中混合使用
  • 默認(rèn)情況下, style-loader會(huì)提取內(nèi)容, 并通過<style>標(biāo)簽, 加入到文檔的<head>中. 也可以通過配置webpack形成單個(gè).css文件.
  • $style配合<module>如何工作

    參考: https://vue-loader-v14.vuejs.org/zh-cn/features/css-modules.html

    <style>中使用一個(gè)module屬性, 可以形成名為$style的計(jì)算屬性從而在節(jié)點(diǎn)中動(dòng)態(tài)綁定樣式.

    <span :class="$style.text">
     ...
    </span>

    形成的計(jì)算屬性可以綁定:class的object/array語法.

  • 在html中 class綁定的事一個(gè)object語法.
  • 如果在data上面的isRed這個(gè)屬性是true的話, 就會(huì)添加上red這個(gè)屬性名
  • 從而形成了一個(gè)屬性控制
  • <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)進(jìn)行訪問
  • 可以使用module=''來更改$style這個(gè)名稱
  • <div :class="aaa.root">
    </div>
    <style lang="less" module="aaa">
    </style>

    scoped的作用域是如何的

    當(dāng)<style></style>標(biāo)簽有scoped屬性的時(shí)候, 他的css樣式只作用在當(dāng)前作用域

    使用了scoped之后, 父組件的樣式不會(huì)再深入到自組件.

  • 不過子組件的根節(jié)點(diǎn)同時(shí)受到 父組件有作用域的CSS 和 子組件有作用域的影響
  • 但是有一點(diǎn): 如果我們?cè)谧咏M件上面添加了一個(gè)類樣式 就能向下一層層的進(jìn)行修改
  • 深度作用選擇器: >>> 或者是 /deep/

  • 已驗(yàn)證: 在less下面不起作用
  • 已驗(yàn)證: 在普通的css下才起作用.
  • 據(jù)網(wǎng)上說, stylus起作用, scss不起作用, 并未驗(yàn)證
  • v-html動(dòng)態(tài)生成的樣式不受作用域內(nèi)樣式影響, 但我想應(yīng)該加個(gè)類樣式名稱,可以解決.(未驗(yàn)證)

    css的作用域的渲染方式, 遠(yuǎn)不如class的渲染速度

    遞歸組件中, 小心使用CSS樣式.

    element中樣式的混入方式 (todo)

  • 通過打包進(jìn)行樣式的使用, 故使用方式在build的文件夾中
  • 樣式目錄為: element/packages/theme-chalk/src/menu.scss, 以方便后期的具體查看
  • 解決過程

    使用scopedSlots解決

    我擦哦, 再次測試后, 發(fā)現(xiàn)添加scopedSlots并沒有什么卵用, 和什么都不寫是他媽一個(gè)樣子啊.. 我說怎么, 怎么查了半天, 也沒人用.
    還被這玩意所拯救, 也真是夠了..
    當(dāng)時(shí)還驕傲了半天, 還以為是發(fā)現(xiàn)了新天地, 也真是6了.

    添加scoped之后, 在子組件上面添加類樣式名, 發(fā)現(xiàn)并沒有卵用

    錯(cuò)誤依舊: 只是在表面層上的有一些data-v的注入

    沒有找到需要注入到里面的條件, 發(fā)現(xiàn)自己前面大部分的判斷都是錯(cuò)誤的.

    解決方案一:scoped方案

  • 將無法進(jìn)行樣式覆蓋的部分拿出來
  • 使用原生的css樣式, 添加scoped
  • 使用 >>> 語法糖進(jìn)行樣式的注入
  • <style scoped>
    
    .main_nav .el-menu .el-submenu >>> .el-submenu__title {
     background-color: red;
    }
    </style>

    解決方案二: module方案

  • 使用module進(jìn)行屬性的選擇
  • 然后是用:global()進(jìn)行這個(gè)屬性下面的全部選擇
  • 進(jìn)而選中這個(gè)沒有在作用域下面但是可以選擇到的元素
  • 個(gè)人始終認(rèn)為這種選擇方案, 可以做到css作用域的區(qū)分, 但是, 并不靈活
  • 具體的以后再分析
  • <style lang="less" module="aaa">
    .red {
     .item {
     :global(.el-submenu__title) {
     background: red;
     }
     }
    }
    </style>

    總結(jié)

  • .vue文件中的<style></style>只有modulescoped, 沒有其他取巧方案
  • module形成一個(gè)代表屬性的計(jì)算屬性, 默認(rèn)名稱為$style, 其中的:global()可以進(jìn)行這個(gè)區(qū)域下面的所有元素的選擇.
  • scoped形成的作用域, 可以通過>>>來進(jìn)行子組件的樣式覆蓋, 帶只要原生的css支持.
  • 聲明:本網(wǎng)頁內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

    文檔

    詳解.vue文件中style標(biāo)簽的幾個(gè)標(biāo)識(shí)符

    詳解.vue文件中style標(biāo)簽的幾個(gè)標(biāo)識(shí)符:.vue文件中style標(biāo)簽的幾個(gè)標(biāo)識(shí)符 在人生就要絕望的時(shí)候, 被編輯器所提示的一個(gè)scopedSlots所拯救. 臥槽, 寫到最后才發(fā)現(xiàn)這個(gè)屬性的具體卵用. 詳情見最后解決辦法. 問題背景 問題由來 項(xiàng)目中使用了elementUI框架, 與.vue文件. 現(xiàn)狀: <te
    推薦度:
    標(biāo)簽: VUE style vue文件
    • 熱門焦點(diǎn)

    最新推薦

    猜你喜歡

    熱門推薦

    專題
    Top