CSS竟然开始支持函数了!编程语言的未来能否在此掀起波澜?

将 脚本之家 设为“星标⭐”

第一时间收到文章更新

图片

来源 | 大迁世界 (ID:qq449245885)

当我第一次看到CSS即将支持原生函数时?没错,朋友,这是真的!

如今,CSS也开始拥抱函数特性了——那些曾坚称CSS不配称作“编程语言”的人,现在或许得重新考虑一下了。

好了,兴奋之余,我们还是先稳一下,深入了解它的具体内容吧!

基础知识:函数的定义和调用

试想一下,你正在给网页中的多个元素添加相同的虚线边框。通常的写法是:

div {  border: 2px dashed black;}p {  border: 2px dashed black;}span {  border: 2px dashed black;}

虽然不算麻烦,但如果可以一句话简单告诉CSS:“嗨,给我来个虚线边框”,岂不是美滋滋?

现在,通过CSS新增的@function功能,你完全可以这么做:

@function --dashed-border() {  result: 2px dashed black;}

定义完毕,你便能随心调用它:

div {  border: --dashed-border();}

神奇吧?从此,每次需要虚线边框,你只需简单调用--dashed-border(),CSS会为你完成其余工作。

更强大!支持参数的函数

CSS函数还支持参数调用,这使它更加强大灵活。比如我们要实现不同颜色的边框:

@function --dashed-border(--color: red) {  result: 2px dashed var(--color);}

使用时非常简单:

div {  border: --dashed-border(blue); /* 蓝色虚线边框 */}

告别到处“硬编码”颜色,一个函数,带来无限的可能。

不止边框:尺寸与布局也能用函数搞定

CSS函数最大的特点是能返回值,因此它们也能用于尺寸、间距甚至运算表达式里:

@function --double-size(--size: 10px) {  result: calc(var(--size) * 2);}.box {  padding: --double-size(15px); /* 结果为30px */}

再比如,构建更灵活的网格布局间距:

@function --gap(--scale: 1) {  result: calc(var(--scale) * 8px);}.grid {  display: grid;  gap: --gap(2); /* 16px */}

你的设计体系会因此变得更易于控制、更统一规范。

类型检查与默认值机制,拒绝错误更智能

CSS函数还引入了类型检查机制,你可以明确设定函数参数应接收的具体类型:

  • length(长度单位如px, em)

  • color(颜色值)

  • number(纯数字)

  • angle(角度值如deg)

举个例子:

@function --rotate-element(--angle: 45deg) {  result: rotate(var(--angle));}.box {  transform: --rotate-element(90deg);}

若你传递了错误的类型(例如px单位),则函数不会执行,这就能有效避免潜在样式bug。同时,CSS函数还支持默认参数值,使调用更加灵活。

组合嵌套函数:无限创意的入口

当你将多个函数组合嵌套,CSS的表现力更上一层楼:

@function --shadow-color(--color: black) {  result: rgba(var(--color), 0.5);}@function --box-shadow(--color: black, --size: 10px) {  result: 0 0 var(--size) --shadow-color(--color);}.card {  box-shadow: --box-shadow(red, 20px);}

上例中,两个函数相互调用,实现了复杂的动态半透明阴影效果,赋予设计更多可能。

当前浏览器支持情况

当然,在你兴奋地全面重构CSS代码之前,有件事得明确:目前CSS函数尚处于实验阶段,仅限Chrome Canary浏览器(需手动开启实验功能)才能使用。

若你想尝鲜,可按以下步骤:

  • 下载并安装Chrome Canary

  • 打开chrome://flags

  • 启用Experimental Web Platform features选项

体验一把CSS的未来世界。

CSS的未来展望

综上,CSS函数就像内置版的“混合宏”(Mixin),无需额外预处理器即可实现复用性更佳的CSS代码。这使你的样式代码更易维护、更整洁易读,并实现以往只有Sass或JavaScript才能完成的高级动态效果。

在所有浏览器全面支持之前,请保持关注、积极尝试。毕竟,任何能拯救我们于重复代码之中的技术,都是值得庆祝的胜利!

图片

  推荐阅读:

  • 纯 CSS 来计算当前窗口的宽高,怎么做到的?

  • 2024年CSS持续活跃,年终大盘点!

  • 稚晖君和机器人,离不开自行车

  • 玩不了游戏的小学生,把商场手机店变成了他们的“包机房”

  • 在公司干了五年,工资不如刚入职的校招生

  • (0)
    wd123_cnwd123_cn
    上一篇 2025年3月15日 上午9:58
    下一篇 2025年3月15日 上午10:01

    相关文章

    • 匹兹堡大学学生在多米尼加失踪:最后目击者称曾救她于海浪之中,但拒绝回答关键问题

      近日,美国匹兹堡大学一名学生苏迪克莎·科南基(Sudiksha Konanki)在多米尼加共和国失踪,引发广泛关注。最后一位见到她的明尼苏达州大学生约书亚·里贝(Joshua Riibe)声称,他曾在加勒比海的汹涌海浪中救出科南基,但最终在黑夜中失去了她。然而,在向多米尼加共和国公共事务部描述他与科南基失踪前的最后时刻时,里贝拒绝回答几个关键问题,这让案件更…

      2025年3月14日
    • 国安部公开4名“台独”网军身份信息!台资通电军“倚网谋独”终是死路一条

      来源 | “国家安全部”公众号、央视新闻客户端 台湾资通电军自2017年6月成立以来,便充当“台独”分裂势力的爪牙,无所不用其极地对大陆开展网络攻击渗透活动。 国家安全机关坚定捍卫国家安全,坚决打击台湾资通电军网络谋“独”、网络间谍活动,彻查幕后黑手,肃清危害隐患。 原形毕露的网攻分子 近年来,针对台湾资通电军网络攻击渗透活动,国家安全机…

      2025年3月18日
    • 父亲瞒着女儿和广场舞阿姨结婚,女儿得知马上立遗嘱

      来源 | 广州日报 近日,家住广州的“80后”李女士(化名)向记者讲述了自己的困扰,去年,父亲瞒着她与一位长期共同跳广场舞的阿姨登记结婚,她担心这会导致家庭财产外流。 目前,李女士名下有三套房产,一套是12年前去世的母亲遗留给她的,一套是父亲去年过户给她个人的,另一套是她与配偶的共同财产。她担心万一自己遭遇意外,部分财产会外流到父亲再婚配偶手里。“…

      新闻资讯 2025年3月20日
    • 韩国空军飞行员因误炸村庄被指控刑事疏忽,或因坐标输入错误导致

      韩国首尔消息,路透社报道,韩国军方调查人员于周四对两名空军飞行员提起刑事指控,原因是上周在一次训练演习中,他们意外轰炸了一个村庄,造成至少29人受伤,并造成了广泛的财产损失。 事故原因:坐标输入错误 韩国国防部调查人员已证实,飞行员在向飞机系统输入坐标时出现的错误是导致此次意外轰炸的“直接因素”,国防部刑事调查指挥部在一份声明中表示。 该指挥部表示,这两名飞…

      2025年3月13日
    • 告别午餐乏味!多款美味沙拉食谱,为你的工作日注入活力

      还在为午餐吃什么而烦恼吗?告别单调的午餐选择,尝试这些风味十足、颜值爆表的沙拉食谱吧!它们不仅拥有缤纷的色彩和新鲜的食材,更能为你提供丰富的营养。有了这些美味沙拉,你一定会开始期待午休时间的到来。 无论你偏爱素食还是高蛋白,总有一款沙拉适合你 无论你喜欢素食,例如覆盆子菠菜沙拉搭配牛油果和核桃,还是更倾向于富含蛋白质的沙拉,例如烤鸡肉和烤红薯沙拉,这里都有很…

      2025年3月13日
    • 车牌是挪用的,车身是报废的,驾照是降级的……货车在长沙被查,满身“毛病”惊了交警

      来源 | 潇湘晨报 记者 | 曾永红 通讯员 | 杨哲 3月14 日晚,长沙开福交警十中队根据大队重点管控勤务安排,在开福区中青路高岭路开展外籍货车“三见”行动。 22时许,民警拦下一辆牌照为赣CJ9**1的重型仓栅式货车进行检查,发现该车不但悬挂的是其他车辆的号牌,而且车辆已经达到报废标准,让民警没想到的是该车驾驶人胡某某(男,41岁,湖南省衡阳市人)持有…

      2025年3月19日