css中的var函数

news2024/10/7 4:35:11

css中的var函数

假设我们在css文件存在多个相同颜色值,当css文件越来越大的时候,想要改颜色就要手动在每个旧颜色上修改,这样维护工作非常难进行。

但是我们可以使用变量来存储值,这样可以在整个css样式表中重复使用,同时也更容易维护。

变量(也称为自定义属性)由开发人员定义,以便于使用,并避免重复值和在元素上重复定义。

如何声明变量

变量接受唯一的名称.

变量声明必须以以下内容开头:

  • 两个破折号(--)
  • 自定义属性名称
  • 自定义属性值

例如

--color-name:#1b1b22;

在上面的代码中,--color-name是自定义属性名称,#1b1b22是值。

var() 函数

var()函数检索变量名称的值并将该值应用于使用它的任何属性。var() 函数使用括号声明,后跟自定义属性名称。

background-color: var(--color-name);

var() 函数将收集变量名称的值以设置background-color给定元素的样式。

在本例中,var() 正在寻找--color-name的值来绘制元素的背景色。

<h1>通过变量改变颜色</h1>
<style>
  h1 {
    text-align: center;
    /* 定义颜色 */
    --color-name:red;
    /* 使用变量 */
    color: var(--color-name);
  }
</style>

上面代码中,h1文本颜色值为红色;var()--color-name 变量名中检索值。

在这里插入图片描述

var() 函数参数

var() 函数接受两个参数。第一个参数的值用于想要设置样式的元素,第二个参数代表后备值。

var() 没有后备值:

background-color: var(--body-color);

--body-color是第一个参数的值。不提供后备值。

具有后备值的 var()

background-color: var(--body-color, orange);

--body-color是第一个参数值;orange是后备值。

注意:

  • 当浏览器无法加载第一个参数值或该值无效时使用回退
  • 回退是可选的。
  • 使用逗号分隔第一个参数和第二个参数。
  • 还可以使用 var() 函数作为后备值参数。使用逗号分隔 var() 函数声明。
    background-color: var(--color-name,  var(--color-name2));
    
    background-color有一个 var() 函数作为后备值。

变量范围类型

  1. 局部变量作用域
  2. 全局变量作用域

局部变量作用域

局部范围变量在样式表中的元素选择器中定义。上述所有示例都是局部作用域的,并且变量只能用于元素的节点。

例如

h1 {
    --style-color1:#1b1b22;
}

从上面的代码来看, –-style-color1的作用域仅限于文档的<h1>元素,这意味着变量仅限于元素<h1>

使用局部作用域变量的优点是它会覆盖全局变量。

这意味着如果有两个名称相似但值不同的自定义属性,浏览器将忽略全局自定义属性名称并使用本地范围的名称。

例如

root{
--main-color:blue;
}

p{
    --main-color:brown;
    color: var(--main-color);
}

在上面的代码中,-–main-color值为brown,也就是p元素上的局部变量覆盖根选择器中的全局变量。

全局变量作用域

全局范围是不同的,因为我们要在样式表顶部的:root 选择器中声明它。

根选择器中的全局变量是 CSS 中的最高级别。

当变量存在时,我们可以设置所有选定元素的样式,并更改变量值。我们对值所做的任何更改都会影响该元素。

创建一个全局变量。

  1. 输入冒号,或者简单地说:
  2. 写下这四个字母:root
  3. 用大括号符号将其关闭,即 {}
:root{

}

练习

为了总结本文,让我们创建 4 个框来练习全局变量作用域。

<section>
  <div class="box1">box 3</div>
  <div class="box2">box 2</div>
  <div class="box3">Box 3</div>
  <div class="box4">Box 4</div>
</section>

定义基础样式

section{
    display: flex;
    flex-direction:row;
    justify-content: space-between;
    background-color: black;
    margin: 2px;
    padding: 10px;
}
div {
    width: 250px;
    height: 250px;
    border-radius: 10px;
}

预览代码时,浏览器应该显示下图:

在这里插入图片描述

设置全局变量

:root{
  --box-color1:#24242a;
  --box-color2:#454533;
  --box-color3:#fff444;
  --box-color4:#30204a;
}

使用上述自定义属性设置每个框的背景颜色:

.box1{
    background-color: var(--box-color1);
}
.box2{
    background-color: var(--box-color2);
}
.box3{
    background-color: var(--box-color3);
}
.box4{
    background-color: var(--box-color4);
}

结果:

在这里插入图片描述

变量的重要性:

  • CSS 变量区分大小写,即--new-color与自定义属性--New-color不同。
  • 不要重复某个值,例如,#1b1b22颜色 使用 CSS 变量来编写更节省时间。
  • 变量值很容易理解。例如,--text-color#773fff更清晰。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/860464.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

halo --- 上传图片服务器错误

文章目录 问题定位过程1、查看日志 报错的是数据库操作异常2、再次上传一张小一点的图片3、检查nginx的配置文件 原因解决 问题 上传图片时&#xff0c;报错服务器错误&#xff08;包括上传附件、博客文章插入图片、上传相册&#xff09; 定位过程 1、查看日志 报错的是数据库…

GEE学习04-

0 回顾 之前学习的内容可以概括为&#xff1a; conda activate gee cd /d e:/geelearn jupyter lab可以在prompt中chrlc停止当前打开的jupyter lab. import ee #ee.Authenticate() import geemap geemap.set_proxy(port 1080) map geemap.Map() map1、视频课学习 之后跟着…

前端技术Vue学习笔记--003

前端技术Vue学习笔记 文章目录 前端技术Vue学习笔记1、Vue生命周期和生命周期的四个阶段1.1、Vue生命周期1.2、生命周期的四个阶段1.3、Vue生命周期函数<font colorred>&#xff08;钩子函数&#xff09; 2、小黑记账本&#xff08;案例&#xff09;3、工程化开发和脚手架…

python-02(入门基础篇2——基本常见语法)

python-02&#xff08;入门基础篇2——基本常见语法&#xff09; 1. 逻辑判断词1.1 布尔类型1.1.1 python为False的情况 1.2 逻辑判断词 not 2. for 语句2.1 语法结构2.2 例子2.2.1 例子1——循环迭代字符串2.2.2 例子2——进行数值循环2.2.2.1 简单循环&#xff08;结合range函…

从Spring源码看创建对象的过程

从Spring源码看创建对象的过程 Spring对于程序员set注入的属性叫做属性的填充、对于set注入之后的处理&#xff08;包括BeanPostProcessor的处理、初始化方法的处理&#xff09;叫做初始化。 研读AbstractBeanFactory类中的doGetBean()方法 doGetBean()方法首先完成的工作是…

MySQL高级-锁+mysql的主从关系(详解02)

目录 1.锁 1.1.Mysql锁问题 1.1.1.锁概述 1.1.2.锁分类 1.1.3.Mysql 锁 1.2.MyISAM 表锁 1.2.1.如何加表锁 1.2.2.读锁案例 1.2.3.写锁案例 1.3.InnoDB 行锁 支持事务 1.3.1.行锁介绍 1.3.2.背景知识 1.3.3.InnoDB 的行锁模式 1.3.4.案例准备工作 innodb 支持事务…

虚幻引擎游戏开发过程中,游戏鼠标如何双击判定?

UE虚幻引擎对于游戏开发者来说都不陌生&#xff0c;市面上有47%主机游戏使用虚幻引擎开发游戏。作为是一款游戏的核心动力&#xff0c;它的功能十分完善&#xff0c;囊括了场景制作、灯光渲染、动作镜头、粒子特效、材质蓝图等。本文介绍了虚幻引擎游戏开发过程中游戏鼠标双击判…

计算机网络实验4:HTTP、DNS协议分析

文章目录 1. 主要教学内容2. HTTP协议3. HTTP分析实验【实验目的】【实验原理】【实验内容】【实验思考】 4. HTTP分析实验可能遇到的问题4.1 捕捉不到http报文4.2 百度是使用HTTPS协议进行传输4.3 Wireshark获得数据太多如何筛选4.4 http报文字段含义不清楚General&#xff08…

spring boot 集成 jetcache【基础篇:@Cached、@CreateCache、@CacheRefresh】

手打不易&#xff0c;如果转摘&#xff0c;请注明出处&#xff01; 注明原文&#xff1a;https://zhangxiaofan.blog.csdn.net/article/details/129832925 目录 前言 版本 配置通用说明 项目结构 代码 启动类 实体类 基础使用——增删改查&#xff08;Cached、CacheInv…

github上有哪些值得读源码的react项目?

前言 下面是我整理的关于值得一读源码的react项目&#xff0c;希望对你有所帮助~ 1、 calcom Star: 21.6k calcom是一个开源的计算器应用程序。它提供了基本的数学运算功能&#xff0c;例如加法、减法、乘法和除法&#xff0c;还支持 科学计算、进制转换和单位转换等高级功能…

【刻削生千变,丹青图“万相”】阿里云AI绘画创作模型 “通义万相”测评

刻削生千变&#xff0c;丹青图“万相 4月7日&#xff0c;阿里大模型“通义千问”开始邀请用户测试体验。现阶段该模型主要定向邀请企业用户进行体验测试&#xff0c;用户可通过官网申请&#xff08;tongyi.aliyun.com&#xff09;&#xff0c;符合条件的用户可参与体验。 随…

skywalking忽略调用链路中的指定异常

文章目录 一、介绍二、演示项目介绍1. 支付服务2. 订单服务 三、项目演示1. 未忽略异常2. 忽略异常修改配置使用注解 四、结论 往期内容 一、skywalking安装教程 二、skywalking全链路追踪 三、skywalking日志收集 一、介绍 在前面介绍在微服务项目中使用skywalking进行全链…

LLaMA长度外推高性价比trick:线性插值法及相关改进源码阅读及相关记录

前言 最近&#xff0c;开源了可商用的llama2&#xff0c;支持长度相比llama1的1024&#xff0c;拓展到了4096长度&#xff0c;然而&#xff0c;相比GPT-4、Claude-2等支持的长度&#xff0c;llama的长度外推显得尤为重要&#xff0c;本文记录了三种网络开源的RoPE改进方式及相…

使用appuploader怎么安装测试​

使用appuploader怎么安装测试​ 一.安装测试​ 首先我们来看安装测试这个模块&#xff0c;注意按照上面提示内容操作。 点击首页的测试设备管理 二.选择IPA​ 进入“安装测试”页面&#xff0c;选择一个&#xff08;必须是开发类型描述文件编译&#xff0c;且描述文件包含设…

f1tenth仿真设置

文章目录 一、安装依赖二、进入工作空间克隆三、编译四、运行 一、安装依赖 tf2_geometry_msgs ackermann_msgs joy map_server sudo apt-get install ros-noetic-tf2-geometry-msgs ros-noetic-ackermann-msgs ros-melodic-joy ros-noetic-map-server 二、进入工作空间克隆…

详解Linux文本三剑客

目录 一、grep 1.什么是grep? 2.如何使用&#xff1f; 3.正则 二、sed 1.认识sed? 2.如何使用&#xff1f; 三、awk&#xff08;重点&#xff09; 1.awk变量 1.1内置变量 1.2自定义变量 2.awk数组 四、经典实战案例 案例一&#xff1a;筛选IPv4地址 案例二&am…

为MySQL新增一张performance_schema表 | StoneDB 技术分享会 #4

StoneDB开源地址 https://github.com/stoneatom/stonedb 设计&#xff1a;小艾 审核&#xff1a;丁奇、李浩 编辑&#xff1a;宇亭 作者&#xff1a;王若添 中国科学技术大学-软件工程-在读硕士、StoneDB 内核研发实习生 performance_schema 简介 MySQL 启动后会自动创建四…

基于SpringBoot+LayUI的宿舍管理系统 001

项目简介 源码来源于网络&#xff0c;项目文档仅用于参考&#xff0c;请自行二次完善哦。 系统以MySQL 8.0.23为数据库&#xff0c;在Spring Boot SpringMVC MyBatis Layui框架下基于B/S架构设计开发而成。 系统中的用户分为三类&#xff0c;分别为学生、宿管、后勤。这三…

【MySQL常见面试题】

索引的基本原理 索引⽤来快速地寻找那些具有特定值的记录。如果没有索引&#xff0c;⼀般来说执⾏查询时遍历整张表。 索引的原理&#xff1a;就是把⽆序的数据变成有序的查询 把创建了索引的列的内容进⾏排序 对排序结果⽣成倒排表 在倒排表内容上拼上数据地址链 在查询的…

计算机网络:网络通信相关概念入门

目录 一、网络发展背景二、理解网络通信三、理解IP地址1.简述IP地址2.IP地址的版本3.提高地址利用率的技术 四、理解端口1.简述端口2.使用端口的原因 五、理解网络通信协议 一、网络发展背景 网络发展背景&#xff1a; 最初的计算机是单机&#xff0c;那么单机是这样传输数据的…