CSS函数

目录

一、背景

二、函数的概念

1. var()函数

2、calc()函数

三、总结


一、背景

今天我们就来说一说,常用的两个css自定义属性,也称为css函数。本文中就成为css函数。先来看一下官方对其的定义。

自定义属性(有时候也被称作CSS 变量或者级联变量)是由 CSS 作者定义的,它包含的值可以在整个文档中重复使用。由自定义属性标记设定值(比如: --main-color: black;),由 var() 函数来获取值(比如: color: var(--main-color);)复杂的网站都会有大量的 CSS 代码,通常也会有许多重复的值。举个例子,同样一个颜色值可能在成千上百个地方被使用到,如果这个值发生了变化,需要全局搜索并且一个一个替换(很麻烦哎~)。自定义属性在某个地方存储一个值,然后在其他许多地方引用它。另一个好处是语义化的标识。比如,--main-text-color 会比 #00ff00 更易理解,尤其是这个颜色值在其他上下文中也被使用到。自定义属性受级联的约束,并从其父级继承其值。

那么接下来就来说一说,今天的主角,var()和calc()两个常见的css函数,之后也会逐步的去讲解一些,其他的css函数,好了,进入正题,开始var()和calc()的讲解。

二、函数的概念

1. var()函数

这个函数用于插入自定义的属性值

正如官方文档上所介绍的,当我们在制作复杂的网站的时候会有大量的css代码,也会有许多复杂的值,那么同样的值也一定会在不同的地方重复的去运用,那么比如有一天需要将这些值统一的更改为另一个值,如果没有这个函数,我们就需要一个一个的找到这个属性然后注意更改,这就大大的降低了维护的效率,也提高了维护的成本。

所以var()函数的出现, 使得CSS 函数可以插入一个自定义属性(有时也被称为“CSS变量”),用来代替非自定义属性中值的任何部分。它允许我们在样式表中定义可重用的值,并在多个地方引用它们。这种机制不仅提高了代码的可维护性和灵活性,还使得动态更新样式成为了可能

接下来就来说一说var()函数的语法:

var(--custom-property-name,fallback-value);

解释:

--custom-property-name:这个属性值是必须设置的,表示自定义属性的名称,名称之前必须要有两个连字符【-】。

fallback-value:这个值可以认为是备用值也可以叫做回退值,也就是说当主属性值无法正常显示的时候就会自动使用备用的属性值,这个值是可选的。建议添加,可以增强代码的健壮性。

  • 声明方式

    声明方式有两种,一种是全局声明,另一种是局部声明,故如其名,它们的作用范围是不同的。那么接下来逐一讲解:

    1. 全局声明

      全局声明通常配合:root伪类【:root伪类的作用:这个伪类是用来匹配根元素的,对于 HTML 来说,:root 表示元素除了[优先级]更高之外,与 html 选择器相同,也就可以认为通过root伪类声明,就相当于在html上进行声明,也就是在整个网页全局声明】进行声明,这样就可以实现全局的声明,以下是全局声明的语法:

    :root {
      --main-color: red; /* --main-color就叫做自定义属性的名称 */
      --second-color: blue;
    }
    1. 局部声明

    局部声明需要在元素内部进行声明,或者是在某一块元素中声明声明的语法和全局声明的语法是一样的。这里就不做过多解释。

  • 使用方式

    想要使用就必须去声明,声明后就可以在属性中去引用属性值了。

    例如:

    <div class="box">文本</div>
    :root{
    --min-color:red;
    --second-color:blue;
    }
    .box{
        width:200px;
        height:200px;
        background:var(--min-color);
        color:var(--second-color);
    }

    这段代码的结果大家可以去试一下,我这里就把结果告知大家,你会看到一个背景是红色,文字是蓝色的盒子。这就是var()函数的使用。

  • 动态更新

    与javaScript配合可以实现动态的更新,首先需要通过js获取到更改变量的值,然后进行更改,随后所有使用了自定义属性名称的属性都会进行改变。

    实例:

    :root{
        --min-color:red;
    }
    .box{
        width:200px;
        height:200px;
        background:var(--min-color);
    }
    <div class="box">文本</div>
    document.documentElement.style.setProperty('--min-color','blue')

    这块大家可以猜一下,是什么结果?

    效果大家自己实践一下,结果会是一个蓝色背景的盒子,原因就是在js部分通过获取了这个属性的值,进行了动态更改,然后就被更改为了蓝色。

    除了动态更新,还有很多的高级的用法。比如下面要说的。

  • 与calc()配合使用

    与calc()配合使用可以实现很多复杂样式的计算,例如:

    <div class="box">文本</div>
    .box{
        --width:200px;
        width:calc(var(--width)*1.5);
        height:calc(var(--width)*1.5);
        background:red
    }

    同样的我不会去展示效果,大家可以自己实践一下,结果就是大家会看到一个300*300的一个红色盒子,大家可以检查元素进行查看。

  • 兼容性问题

  • 关于兼容性的问题大家可以放心使用,从以上可以看出,大部分的浏览器都是支持这个属性的,大家可以放心使用。

  • 小结

    关于CSS3中的var()函数为样式表提供了强大的变量支持,使得样式的定义和使用更加灵活和可维护。通过合理使用自定义属性,我们可以减少代码重复,提高开发效率,并轻松实现样式的动态更新。

2、calc()函数

关于这个函数,MDN中是这样解释的:

此 calc() 函数用一个表达式作为它的参数,用这个表达式的结果作为值。

也就是说可以通过这个函数允许我们将属性值替换为一个表达式,然后将这个表达式的值去替换我们实际使用的属性值。它允许我们在指定 CSS 属性值时使用加法、减法、乘法、除法等基本运算,从而实现更灵活的布局和样式设计

  • calc() 常用的基本运算:

  1. 加法(+):calc(100% + 20px)

  2. 减法(-):calc(100% - 50px)

  3. 乘法(*):calc(50px * 2)

  4. 除法(/):calc(100px / 2)

  5. 取余(%):calc(100px % 3)

  6. 括号(()):calc((1 + 2) * 3)

  • 语法

property: calc(expression)

property表示想要使用这个函数想css属性,而expression就是要设计的表达式,单位可以混用

  • 可以作为属性值使用

    .el {
      font-size: calc(3vw + 2px);
      width:calc(100% - 20px);
      height:calc(100vh - 20px);
      padding:calc(1vw + 5px);
    }

注意:calc() 中的操作符(+、-、*、/)前后必须保留空格,否则会导致计算失败。

  • 使用

    在属性值中使用

    .box {
        font-size: calc(3vw + 2px);
        width: calc(100% - 100px);
        height: calc(10vw - 20px);
        background: orange;
    }

    用于长度和其他数字

    .box {
      width: calc(2px*3);
      height: 200px;
      background: orange;
    }

    在媒体查询中使用

    * {
      margin: 0;
    }
    .box {
      width: 200px;
      height: 200px;
      background: orange;
    }
    @media (max-width: calc(500px + 1rem)) {
      .box {
          background: red;
      }
    }

    max-width:最大的宽度 500px + 1rem(16px) = 516px 这段代码的意思就是:视口的宽度不能超过516Px,在516px范围内背景色是红色

    注意:

    1、加法和减法要求两个数字都必须有单位

    2、除法要求第二个数字是没有单位的

    3、乘法要求其中一个数字是没有单位的

三、总结

虽然这些css自定义属性【函数】看上去比较复杂,但是这可以帮助我们更好的去简化代码结构,节省空间,这也是比较推荐的写法,兼容性问题也帮大家看了,大部分主流的浏览器都是兼容的,放心使用即可!!

感觉不错的伙伴,可以加入我的社区,后期会有更多关于前端的知识会分享到社区,欢迎加入!

社区链接:https://bbs.csdn.net/forums/fe46c651de82465696aeabef266b0476?joinKey=indbz3pgxkw6-kol15r32n3-1-2d4abe395628810b94216b8a35c44ca3&roleId=1170992icon-default.png?t=O83Ahttps://bbs.csdn.net/forums/fe46c651de82465696aeabef266b0476?joinKey=indbz3pgxkw6-kol15r32n3-1-2d4abe395628810b94216b8a35c44ca3&roleId=1170992

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【C语言】递归的内存占用过程

递归 递归是函数调用自身的一种编程技术。在C语言中&#xff0c;递归的实现会占用内存栈&#xff08;Call Stack&#xff09;&#xff0c;每次递归调用都会在栈上分配一个新的 “栈帧&#xff08;Stack Frame&#xff09;”&#xff0c;用于存储本次调用的函数局部变量、返回地…

大数据新视界 -- 大数据大厂之 Hive 数据压缩算法对比与选择(下)(20 / 30)

&#x1f496;&#x1f496;&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎你们来到 青云交的博客&#xff01;能与你们在此邂逅&#xff0c;我满心欢喜&#xff0c;深感无比荣幸。在这个瞬息万变的时代&#xff0c;我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

【golang】单元测试,以及出现undefined时的解决方案

单元测试 要对某一方法进行测试时&#xff0c;例如如下这一简单减法函数&#xff0c;选中函数名后右键->转到->测试 1&#xff09;Empty test file 就是一个空文件&#xff0c;我们可以自己写测试的逻辑 但是直接点绿色箭头运行会出问题&#xff1a; 找不到包。我们要在…

ETL工具观察:ETLCloud与MDM是什么关系?

一、什么是ETLCloud ETLCloud数据中台是一款高时效的数据集成平台&#xff0c;专注于解决大数据量和高合规要求环境下的数据集成需求。 工具特点 1.离线与实时集成&#xff1a;支持离线数据集成&#xff08;ETL、ELT&#xff09;和变更数据捕获&#xff08;CDC&#xff09;实…

人形机器人训练、机器臂远程操控、VR游戏交互、影视动画制作,一副手套全部解决!

广州虚拟动力基于自研技术推出了多节点mHand Pro动捕数据手套&#xff0c;其最大的特点就是功能集成与高精度捕捉&#xff0c;可以用于人形机器人训练、机器臂远程操控、VR游戏交互、影视动画制作等多种场景。 一、人形机器人训练 mHand Pro动捕数据手套双手共装配16个9轴惯性…

IDL学习笔记(二)IDL处理卫星数据

IDL处理卫星数据 HDF文件数据集属性通用属性 常用HDF4操作函数常用的HDF5操作函数读取HDF文件的一般步骤 HDF4文件读取-----数据信息查询HDF4文件读取示例-----目标数据TIFF输出提取modis产品中数据&#xff0c;与某一点经纬度最接近的点有效结果&#xff0c;并按每行内容为日期…

动态规划-----路径问题

动态规划-----路径问题 下降最小路径和1&#xff1a;状态表示2&#xff1a;状态转移方程3 初始化4 填表顺序5 返回值6 代码实现 总结&#xff1a; 下降最小路径和 1&#xff1a;状态表示 假设&#xff1a;用dp[i][j]表示&#xff1a;到达[i,j]的最小路径 2&#xff1a;状态转…

Redis+Caffeine 多级缓存数据一致性解决方案

RedisCaffeine 多级缓存数据一致性解决方案 背景 之前写过一篇文章RedisCaffeine 实现两级缓存实战&#xff0c;文章提到了两级缓存RedisCaffeine可以解决缓存雪等问题也可以提高接口的性能&#xff0c;但是可能会出现缓存一致性问题。如果数据频繁的变更&#xff0c;可能会导…

2024年大热,Access平替升级方案,也适合Excel用户

欢迎各位看官&#xff0c;您来了&#xff0c;就对了&#xff01; 您多半是Access忠实粉丝&#xff0c;至少是excel用户&#xff0c;亦或是WPS用户吧。那就对了&#xff0c;今天的分享肯定对您有用。 本文1100字&#xff0c;阅读时长2分50秒&#xff01; 现实总是不尽人意&am…

解决idea使用maven打包时无法将本地lib库文件和resource目录中的资源文件打包进jar文件的问题!!!

一、问题复现 1&#xff09;项目结构如下 我们看到项目中手动添加了本地lib资源&#xff0c;同时bootspring的配置文件和mapper文件也放在了resouces目录中。 2&#xff09;上述结构的项目在使用maven打包时&#xff0c;最终生成的jar文件中将不包含lib库文件&#xff0c;甚…

PKO-LSSVM-Adaboost班翠鸟优化最小二乘支持向量机结合AdaBoost分类模型

PKO-LSSVM-Adaboost班翠鸟优化最小二乘支持向量机结合AdaBoost分类模型 目录 PKO-LSSVM-Adaboost班翠鸟优化最小二乘支持向量机结合AdaBoost分类模型效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.PKO-LSSVM-Adaboost班翠鸟优化最小二乘支持向量机结合AdaBoost分类模…

FPGA实战篇(呼吸灯实验)

1.呼吸灯简介 呼吸灯采用 PWM 的方式&#xff0c;在固定的频率下&#xff0c;通过调整占空比的方式来控制 LED 灯亮度的变化。 PWM&#xff08;Pulse Width Modulation &#xff09;&#xff0c;即脉冲宽度调制&#xff0c;它利用微处理器输出的 PWM 信号&#xff0c;实现对…

家政小程序开发,打造便捷家政生活小程序

目前&#xff0c;随着社会人就老龄化和生活压力的加重&#xff0c;家政服务市场的需求正在不断上升&#xff0c;家政市场的规模也正在逐渐扩大&#xff0c;发展前景可观。 在市场快速发展的影响下&#xff0c;越来越多的企业开始进入到市场中&#xff0c;同时家政市场布局也发…

《Python基础》之Pandas库

目录 一、简介 二、Pandas的核心数据结构 1、Series 2、DataFrame 三、数据读取与写入 1、数据读取 2、数据写入 四、数据清洗与处理 1、处理缺失值 2、处理重复值 3、数据转换 五、数据分析与可视化 1、统计描述 2、分组聚合 3、数据可视化 六、高级技巧 1、时…

Elasticsearch在liunx 中单机部署

下载配置 1、下载 官网下载地址 2、上传解压 tar -zxvf elasticsearch-XXX.tar.gz 3、新建组和用户 &#xff08;elasticsearch 默认不允许root账户&#xff09; #创建组 es groupadd es #新建用户 useradd ryzhang -g es 4、更改文件夹的用户权限 chown -R ryzhang …

基于 MVC 的 SpringBoot 高校行政事务管理系统:设计思路与实现步骤详解

2系统开发环境 2.1vue技术 Vue (读音 /vjuː/&#xff0c;类似于 view) 是一套用于构建用户界面的渐进式JavaScript框架。 [5] 与其它大型框架不同的是&#xff0c;Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层&#xff0c;不仅易于上手&#xff0c;还便于与第…

不敢相信,Nginx 还能这么玩?

大家好&#xff0c;我是程序员鱼皮。今天来聊聊 Nginx 技术&#xff0c;这是一个企业项目必用&#xff0c;但是却经常被程序员忽略的技术。学好 Nginx&#xff0c;可以助你在求职中脱颖而出。 或许你会想&#xff1a;“Nginx 不就是用来部署网站的服务器嘛&#xff1f;这有何难…

【AI系统】指令和存储优化

指令和存储优化 除了应用极广的循环优化&#xff0c;在 AI 编译器底层还存在指令和存储这两种不同优化。 指令优化 指令优化依赖于硬件提供的特殊加速计算指令。这些指令&#xff0c;如向量化和张量化&#xff0c;能够显著提高计算密度和执行效率。向量化允许我们并行处理数…

底部导航栏新增功能按键

场景需求&#xff1a; 在底部导航栏添加power案件&#xff0c;单击息屏&#xff0c;长按 关机 如下实现图 借此需求&#xff0c;需要掌握技能&#xff1a; 底部导航栏如何实现新增、修改、删除底部导航栏流程对底部导航栏部分样式如何修改。 比如放不下、顺序排列、坑点如…

基于Matlab卡尔曼滤波的GPS/INS集成导航系统研究与实现

随着智能交通和无人驾驶技术的迅猛发展&#xff0c;精确可靠的导航系统已成为提升车辆定位精度与安全性的重要技术。全球定位系统&#xff08;GPS&#xff09;和惯性导航系统&#xff08;INS&#xff09;在导航应用中各具优势&#xff1a;GPS提供全球定位信息&#xff0c;而INS…