• css变量复用 全局变量-局部变量


    前言

      简单使用场景:同一套后台系统有多套主题的情况下,主题色作为一个最常用到的可复用的颜色,非常有必要像js的全局变量一样存在全局变量中以作复用,之前我第一个想到的是sass的变量声明,未曾想到css本身也能实现,在此记录对己对人。

    css中使用

      1. 全局变量

        1.1变量声明:

        建议放在公共样式中,例如:common.css,用来保存全局的通用样式。

    /* 例如: */
    
    :root{
      --themeDefaultColor: #ccc;
      --theme-blue-color: blue;
    }

        1.2 变量使用:

    /* 例如: */
    /*
    支持驼峰命名、- 间隔*/
    
    :root{
      --themeDefaultColor: #ccc;
    }
    .text{
      color: var(--themeDefaultColor)
    }

      2.局部变量

        局部变量声明,局部范围内子元素都可使用该变量;

    #box{
      --cssname : value;
    }
    
    #box .child{
      color : var(--cssname)
    }

    js中使用:

    const root = document.querySelector(":root");
    // 设置 CSS 变量
    root.style.setProperty("--main-bg-color", "red");
    
    // 读取 CSS 变量
    const computedStyle = getComputedStyle(root);
    const mainBgColor = computedStyle.getPropertyValue("--main-bg-color");
    console.log(mainBgColor);
    
    // 删除 CSS 变量
    root.style.removeProperty("--main-bg-color");

    注意事项:

           1.默认格式:变量声明的默认格式为字符串格式,不要添加双引号或者单引号,数字类型除外。

    :root {
      --text-color: red; //字符串
      --primary-font-size: 18px; //字符串
      --font-weight: 900 //数字
    }

      2.变量值为字符串类型可以拼接使用,数字类型除外,需要使用calc()函数。

    :root{
      --border-dashed: dashed;
    --gap: 20; } .pic{ border: 1px var(--border-dashed) #000; /*字符串*/ }
      .foo{
      margin-top:calc(var(--gap)*1px); /*数字*/
     }

      2.声明变量可以接收两个值,第二个为默认值。

    color:var(--foo,#7F583F);

      3.变量值只能用作属性值,不能用作属性名。

    .foo{
        --side:margin-top;
      /*无效*/   var(--side):20px; }   

      4.作用域级别,生效级别。依照选择器的级别

     

    :root{
      --color: red;
    }
    p{
      --color: red;  
    }
    .p{
      --color: red;
    }
    #p{
      --color: red;
    }

      5.响应式布局,在不同的媒体查询里面声明不同值的变量,实现不同尺寸下响应式布局。

    /*正常屏幕尺寸下的color为red*/
    body{
      --color: red;
    }
    
    
    /*屏幕在600px以下color为green*/
    @media screen and(max- 600px) {
      body{
        --color: green;
      }
    }
    
    
    /*使用*/
    a{
      color: var(--color);  
    }

       6.兼容处理

    /*css兼容处理*/
    a{
     color:#7F583F;
     color:var(--primary);
    }
    
    /*js兼容检测*/
    const isSupported = window.CSS && window.CSS.supports&& window.CSS.supports('--a',0);
    
    if(isSupported){
     ...
    }else{
      ...
    }

    总结:

      css变量声明可以大量减少机械性书写,减少代码量,便于统一修改等好处,不过修改要注意影响到其他全局变量,注意变量之间的引用关系。

  • 相关阅读:
    bootstrap在线引用 bootstrap百度调用
    CentOS7下安装MySQL5.7安装与配置(YUM)
    screen命令的常见用法
    Nginx主要用来干什么
    linux-Centos7安装python3并与python2共存
    爬虫小问题之以为是编码问题,却是headers中参数问题
    LabWindows/CVI基础
    STM32 命名方法
    Ubuntu14.04虚拟机下基本操作(typical安装)
    网关,路由器,交换机,猫小结
  • 原文地址:https://www.cnblogs.com/xuchao-blogs/p/13713932.html
Copyright © 2020-2023  润新知