1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        CSS Variable變量(Css自定義屬性)

        共 5917字,需瀏覽 12分鐘

         ·

        2021-10-25 04:57


        var 變量

        小知識點

        變量聲明:--color
        變量命名:變量名可以是數(shù)字、字母、下劃線、中橫線、中文
        變量賦值:--color: red; --color1: #def;
        變量獲?。?code style="font-size: 14px;overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin-right: 2px;margin-left: 2px;background-color: rgba(27, 31, 35, 0.05);font-family: "Operator Mono", Consolas, Monaco, Menlo, monospace;word-break: break-all;color: rgb(239, 112, 96);">color: var(--color);
        默認值:var(變量名, 可選的默認值1, 可選的默認值2...),如果引用的變量沒有定義,則按默認值的順序依次取默認值進行使用。默認值比較適合calc計算時,萬一計算結(jié)果非法,可以用默認值。
        變量取值:顏色值、字符串、多個值的組合、函數(shù)等。注意,帶單位的值和顏色值不用加引號包成字符串,示例:--borderC: green;--fontSize: 12px;變量值不合法:使用默認值。比如var(--color, red);中,--color 值如果非法,不會使用 red,而是使用樣式表中繼承的/默認的樣式值來代替
        權(quán)重層級:遵循 css 選擇器的權(quán)重等級,比如:內(nèi)聯(lián)樣式 > id > class > 標簽 > *

        作用域:

        如下幾條規(guī)則

        1. 放在 :root 根選擇器的變量,所有選擇器里都能用;
        2. 放在私有選擇器的只能自己及下級使用。類似函數(shù)作用域的規(guī)律。
        3. 結(jié)合 sass、less 等預處理器的選擇器嵌套功能使用時,父作用域的變量子作用域也可以用。
        4. 結(jié)合@media實現(xiàn)響應式變化不同作用域的變量值
        <style>
          :root {
            /* 全局作用域的變量 */
            --color: blue;
            --borderC: green;
            --變量名: '變量名可以是數(shù)字、字母、下?lián)Q線、中橫線、中文';
          }

          div {
            --color: pink;
          }

          div.father {
            /* 私有作用域 */
            --color: red;
            color: var(--color);
            position: relative;
            transition: color 0.3s ease-in-out;
          }

          div.father::after {
            content: var(--變量名);
            color: var(--color);
            border: 1px solid var(--borderC);
            transition: color 0.3s ease-in-out;
          }

          div.father .child {
            --color: rgb(255, 60, 190);
            color: var(--color);
          }

          /* 結(jié)合`@media`實現(xiàn)響應式變化不同作用域的變量值 */
          @media screen and (min-width: 768px) {
            :root {
              --color: orange;
            }

            div.father {
              --color: black;
            }
          }

          /* 兼容性判斷 - css */
          @supports ((--color: 0)) {
            div.father::before {
              content: '當前瀏覽器支持css variables';
              color: red;
              border: 3px lodash var(--borderC);
            }
          }

          @supports (not (--color: 0)) {
            div.father::before {
              content: '不支持';
              color: var(--color);
              border: 3px lodash var(--borderC);
            }
          }
        </style>
        <div class="father" id="father">
          用變量修改顏色值
          <span class="child"> 子作用域 </span>
        </div>
        <button id="getBtn">獲取css var變量值</button>
        <button id="setBtn">設置css var變量值</button>
        <button id="deleteBtn">刪除css var變量值</button>


        作用域效果

        兼容性

        各瀏覽器兼容情況:https://caniuse.com/?search=css%20var

        兼容性判斷

        /* 兼容性判斷 - css */
        @supports ((--color: 0)) {
          div.father::before {
            content'當前瀏覽器支持css variables';
          }
        }

        @supports (not (--color: 0)) {
          div.father::before {
            content'不支持';
          }
        }
        (() => {
          console.log('當前頁面是否支持Css變量'window.CSS.supports('--color'0))
        })()

        JS 操作 CSS 變量

        var root = getComputedStyle(document.documentElement);
        var divFather = getComputedStyle(father);
        console.log(root, divFather)
        //  讀取 變量值
        getBtn.onclick = () => {
          var var1 = root.getPropertyValue('--color').trim();
          console.log(var1);
        }
        // 新增 / 修改變量值
        setBtn.onclick = () => {
          father.style.setProperty('--color''#111def');
          var var2 = divFather.getPropertyValue('--color').trim();
          console.log(var2);
        }
        // 刪除 變量值
        deleteBtn.onclick = () => {
          father.style.removeProperty('--color');
          var var3 = divFather.getPropertyValue('--color').trim();
          console.log(var3);
        }

        優(yōu)勢

        • 含有作用域、能繼承、能組合calc、@media等特性使用
        • 實時計算、運行時、動態(tài)
        • 可交互(配合js)
        • 可配合預處理器使用(sass、less等)

        劣勢

        • 低版本瀏覽器兼容性考慮



        愿你歷盡千帆,歸來仍是少年。


        讓我們一起攜手同走前端路!

        關(guān)注公眾號回復【加群】即可

        ● 工作中常見頁面布局的n種實現(xiàn)方法

        ● 三欄響應式布局(左右固寬中間自適應)的5種方法

        ● 兩欄自適應布局的n種實現(xiàn)方法匯總

        ● 工作中常見的兩欄布局案例及分析

        ● 垂直居中布局的一百種實現(xiàn)方式

        ● 常用九宮格布局的幾大方法匯總

        ● 為什么操作DOM會影響WEB應用的性能?

        ● 移動端滾動穿透的6種解決方案

        ● Vue + TypeScript 踩坑總結(jié)


        瀏覽 92
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            黄色一级免费网站 | 啪啪啪性爱网站 | 成人不卡在线 | 国产精品jk扒开腿做爽爽的视频 | 胡桃与旅行者深入交流视频 | 久久久无码电影 | 国产最新美女精品视频网站免费观看网址大全 | 久久精品成人无码A片1000部 | 办公室激情含乳呻吟视频动图 | 成人国产在线视频 |