<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

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

          共 5917字,需瀏覽 12分鐘

           ·

          2021-10-25 04:57


          var 變量

          小知識點

          變量聲明:--color
          變量命名:變量名可以是數(shù)字、字母、下劃線、中橫線、中文
          變量賦值:--color: red; --color1: #def;
          變量獲取: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é)合 sassless 等預處理器的選擇器嵌套功能使用時,父作用域的變量子作用域也可以用。
          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">設(shè)置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
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

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

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  熟女人妻-X88AⅤ | 成人av久 | 黄色动漫操逼 | 情趣内裤操逼网站在线 | 动漫摸无码视频 |