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

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

6.824/6.5840 Lab 1: MapReduce

宁静的夏天 天空中繁星点点 心里头有些思念 思念着你的脸 ——宁夏 完整代码见&#xff1a; https://github.com/SnowLegend-star/6.824 由于这个lab整体难度实在不小&#xff0c;故考虑再三还是决定留下代码仅供参考 6.824的强度早有耳闻&#xff0c;我终于也是到了挑战这座高…

MongoDB集群分片安装部署手册

文章目录 一、集群规划1.1 集群安装规划1.2 端口规划1.3 目录创建 二、mongodb安装&#xff08;三台均需要操作&#xff09;2.1 下载、解压2.2 配置环境变量 三、mongodb组件配置3.1 配置config server的副本集3.1.1 config配置文件3.1.2 config server启动3.1.3 初始化config …

一种多功能调试工具设计方案开源

一种多功能调试工具设计方案开源 设计初衷设计方案具体实现HUB芯片采用沁恒微CH339W。TF卡功能网口功能SPI功能IIC功能JTAG功能下行USB接口 安路FPGA烧录器功能Xilinx FPGA烧录器功能Jlink OB功能串口功能RS232串口RS485和RS422串口自适应接口 CAN功能烧录器功能 目前进度后续计…

三维测量与建模笔记 - 5.3 光束法平差(Bundle Adjustment)

此篇笔记尚未理解&#xff0c;先做笔记。 如上图&#xff0c;在不同位姿下对同一个物体采集到了一系列图像&#xff0c; 例子中有四张图片。物体上某点M&#xff0c;在四幅图像上都能找到其观测点。 上式中的f函数是对使用做投影得到的估计点位置。求解这个方程有几种方法&…

力扣hot100道【贪心算法后续解题方法心得】(三)

力扣hot100道【贪心算法后续解题方法心得】 十四、贪心算法关键解题思路1、买卖股票的最佳时机2、跳跃游戏3、跳跃游戏 | |4、划分字母区间 十五、动态规划什么是动态规划&#xff1f;关键解题思路和步骤1、打家劫舍2、01背包问题3、完全平方式4、零钱兑换5、单词拆分6、最长递…

ElasticSearch学习篇19_《检索技术核心20讲》搜推广系统设计思想

目录 主要是包含搜推广系统的基本模块简单介绍&#xff0c;另有一些流程、设计思想的分析。 搜索引擎 基本模块检索流程 查询分析查询纠错 广告引擎 基于标签倒排索引召回基于向量ANN检索召回打分机制&#xff1a;非精确打分精准深度学习模型打分索引精简&#xff1a;必要的…

Ambrus 游戏工作室将应对气候变暖与游戏变现完美结合

当 Ambrus Studio 创始人兼 CEO Johnson Yeh 计划打造他称之为“第一款伟大的 Web3 游戏”时&#xff0c;他设立了两个关键目标&#xff1a;游戏需要在传统大型工作室忽视的市场中盈利&#xff0c;以及它需要具备超越娱乐的意义。 在 Sui 的帮助下&#xff0c;Johnson 和他的团…

KAN-Transfomer——基于新型神经网络KAN的时间序列预测

1.数据集介绍 ETT(电变压器温度)&#xff1a;由两个小时级数据集&#xff08;ETTh&#xff09;和两个 15 分钟级数据集&#xff08;ETTm&#xff09;组成。它们中的每一个都包含 2016 年 7 月至 2018 年 7 月的七种石油和电力变压器的负载特征。 traffic(交通) &#xff1a;描…

UEFI Spec 学习笔记---3 - Boot Manager(3)

3.2 Boot Manager Policy Protocol EFI_BOOT_MANAGER_POLICY_PROTOCOL----EFI应用程序使用该协议请求UEFI引导管理器使用平台策略连接设备。 typedef struct _EFI_BOOT_MANAGER_POLICY_PROTOCOL EFI_BOOT_MANAGER_POLICY_PROTOCOL; struct _EFI_BOOT_MANAGER_POLICY_PROTOCOL…

wordpress网站首页底部栏显示网站备案信息

一、页脚文件footer.php 例如&#xff0c;wordpress主题使用的是simple-life主题&#xff0c;服务器IP为192.168.68.89,在wordpress主题文件中有个页脚文件footer.php&#xff0c;这是一个包含网站页脚代码的文件。 footer.php 路径如下&#xff1a; /www/wwwroot/192.168.68…

QT实战-qt各种菜单样式实现

本文主要介绍了qt普通菜单样式、带选中样式、带子菜单样式、超过一屏幕菜单样式、自定义带有滚动条的菜单样式&#xff0c; 先上图如下&#xff1a; 1.普通菜单样式 代码&#xff1a; m_pmenu new QMenu(this);m_pmenu->setObjectName("quoteListMenu"); qss文…

数据结构实训——查找

声明&#xff1a; 以下是我们学校在学习数据结构时进行的实训&#xff0c;如涉及侵权马上删除文章 声明&#xff1a;本文主要用作技术分享&#xff0c;所有内容仅供参考。任何使用或依赖于本文信息所造成的法律后果均与本人无关。请读者自行判断风险&#xff0c;并遵循相关法…

指针(上)

目录 内存和地址 指针变量和地址 取地址&#xff08;&&#xff09; 解引用&#xff08;*&#xff09; 大小 类型 意义 const修饰 修饰变量 修饰指针 指针运算 指针- 整数 指针-指针 指针的关系运算 野指针 概念 成因 避免 assert断言 指针的使用 strl…

13TB的StarRocks大数据库迁移过程

公司有一套StarRocks的大数据库在大股东的腾讯云环境中&#xff0c;通过腾讯云的对等连接打通&#xff0c;通过dolphinscheduler调度datax离线抽取数据和SQL计算汇总&#xff0c;还有在大股东的特有的Flink集群环境&#xff0c;该环境开发了flink开发程序包部署&#xff0c;实时…

ARP表、MAC表、路由表的区别和各自作用

文章目录 ARP表、MAC表、路由表的区别和各自作用同一网络内:ARP表request - 请求reply - 响应 MAC地址在同一网络内,交换机如何工作? 不同网络路由表不同网络通信流程PC1到路由器路由器到PC2流程图 简短总结 ARP表、MAC表、路由表的区别和各自作用 拓扑图如下: 同一网络内:…

第七课 Unity编辑器创建的资源优化_UI篇(UGUI)

上期我们学习了简单的Scene优化&#xff0c;接下来我们继续编辑器创建资源的UGUI优化 UI篇&#xff08;UGUI&#xff09; 优化UGUI应从哪些方面入手&#xff1f; 可以从CPU和GPU两方面考虑&#xff0c;CPU方面&#xff0c;避免触发或减少Canvas的Rebuild和Rebatch&#xff0c…

微服务搭建----springboot接入Nacos2.x

springboot接入Nacos2.x nacos之前用的版本是1.0的&#xff0c;现在重新搭建一个2.0版本的&#xff0c;学如逆水行舟&#xff0c;不进则退&#xff0c;废话不多说&#xff0c;开搞 1、 nacos2.x搭建 1&#xff0c;首先第一步查询下项目之间的版本对照&#xff0c;不然后期会…

Node.js 实战: 爬取百度新闻并序列化 - 完整教程

很多时候我们需要爬取一些公开的网页内容来做一些数据分析和统计。而多数时候&#xff0c;大家会用到python &#xff0c;因为实现起来很方便。但是其实Node.js 用来爬取网络内容&#xff0c;也是非常强大的。 今天我向大家介绍一下我自己写的一个百度新闻的爬虫&#xff0c;可…

Flink四大基石之State(状态) 的使用详解

目录 一、有状态计算与无状态计算 &#xff08;一&#xff09;概念差异 &#xff08;二&#xff09;应用场景 二、有状态计算中的状态分类 &#xff08;一&#xff09;托管状态&#xff08;Managed State&#xff09;与原生状态&#xff08;Raw State&#xff09; 两者的…

底部导航栏新增功能按键

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