css怎样调用css函数_CSS Math函数入门4级

本文介绍了CSS中的数学函数calc(), min() 和 max(),它们允许在CSS中进行数学计算,实现响应式设计和布局约束。这些函数在Level 4中得到了增强,可以用于在不同设备尺寸下平滑过渡元素的属性。示例展示了如何使用它们来控制字体大小、宽度和响应式排版。" 119772672,10737759,企业级Docker私仓:Harbor详解与优势,"['容器技术', 'Docker', 'Harbor', '仓库管理', '企业级应用']

css怎样调用css函数

功能符号是CSS值和单位模块的一部分 ,它也是有用的数学函数(例如calc()以及4级min()max()的所在地。 这些强大的功能为需要CSS内的数学逻辑功能CSS作者打开了难以置信的大门。 在本文中,我们将讨论calc()min()max() ,以及这三者现在如何对您的工作有用。 让我们开始吧!

什么是功能符号?

功能符号是W3C CSS值和单位模块的九个父节之一(准确地说是第八节)。 从Level 4 Editor's Draft开始,Functional Notations现在包含更多小节,例如toggle()允许通过使用attr()在值和属性引用之间进行切换。 还有另一个有趣的小节叫做“数学表达式”,其中包含我们友好的数学函数calc()min()max()

让我们转向W3C定义,以帮助我们了解什么是功能标记:

功能符号是一种组件值,可以表示更复杂的类型或调用特殊处理。 语法以该函数的名称开头,紧随其后的是左括号,然后是表示法的参数,然后是右括号。”

在外行的话来说,他们会说这是一个“功能名”,如calc ,其次是开()括号。 但是他们之间发生了什么?

引入数学表达式

如前所述,“数学表达式”是“功能符号”的一个小节,但是它们是什么,它们做什么? 再次,让我们转到W3C,其中它们被定义为:

“数学函数calc()min()max()允许将具有加法( + ),减法( - ),乘法( * )和除法( / )的数学表达式用作组件值。”

这意味着calc()min()max()是“数学函数”,允许在括号内进行“表达式”以“计算值”。 好的,现在很清楚。 术语“表达式”只是一种说法,“括号内完全允许数学逻辑”。

级别4中引入了一个新近更新的定义,以补充到目前为止我们所知道的内容:

数学函数的组成部分可以是文字值,其他数学函数或其他表达式,例如attr() ,它们的值均为有效参数类型(如<length> )。”

为了进一步阐明,此处引用的“其他数学函数”是calc()min()max() ,但它们还指出这些函数可以相互嵌套。 您可以编写calc(min())min(calc())calc(max(min()))calc(min(attr()))等。 但是,我的建议是尽力而为,避免嵌套涡流,即使有能力按照规范的建议进行操作。

现在,让我们再次对几个出色的数学函数说“你好”,这些函数几乎失去了与CSS工作组握手的机会。

欢迎返回min()max()

函数min()max()是两个数学函数,但它们几乎都已从“值和单位级别4编辑器的草稿”中删除后才留下深刻的印象。 多亏了Lea Verou,变革之风迫使他们进来,我再也没有比这更快乐了。

“也许现在值3已进入CR,是时候重新考虑将min()max()重新添加到值4中了?

作者正在做的非常怪异的 黑客calc()模仿他们的font-sizeline-height ,他们称之为“CSS锁”。 如果您使用Google CSS锁 ,则会看到这些黑客行为的普及程度,表明作者有明确的需求。

此外,随着CSS变量的使用越来越广泛,对min()max()将越来越大。 我记得一些使我们6年前放弃的问题现在可以通过Variables引入的无效的计算值时间概念来解决。” – Lea Verou

自从Lea在GitHub上提出建议以来, min()max()已正式插入到CSS级别4值和单位的编辑者草案中,包括WebKit的早期采用。 开发人员可以使用WebKit Nightly(自10/24/17起)亲自进行实验和探索。 这是单个WebKit提交,用于奇怪的好奇,其中神奇地授予了min()max()

clamp()课程概览

Lea Verou发起的同一GitHub线程中另一个有趣的八卦是Tab Atkins建议使用实际的clip clamp()函数的注释。 clamp()会在边界值之间“夹紧”一个值。

“……我同意,虽然技术上是多余的,但是clamp()通常足够有用,以至于它可能应该存在。”

天啊! 这将是对数学表达式的补充。 诸如clamp()类的功能无疑是当今响应性需求的胜利,并且肯定会成为该语言的受欢迎朋友。

clamp(minN, midN, maxN)

当前的讨论围绕上述语法类型进行,而我恰好是一个同意该建议的语法。 它是有道理的,并且以逻辑方式读取。 我只是想知道,如果clamp()在将来真正出现时, min()max()的使用会发生什么情况。

由于我们的饮水机chat不休,我们可以集中精力讨论这里讨论的实际数学函数; calc()min()max()

现在满足calc()

这是我最喜欢的支持CSS的数学函数之一,并且可以执行各种向导。 一旦掌握了语法,语法也不是太粗糙,而且支持也很出色

.my-element {
    width: calc(50% - 10rem);
}

在上面的示例中,我们具有函数名称( calc ),其后是带括号的括号,其中包含“表达式”,即数学逻辑。

calc()函数允许将具有加法( + ),减法( - ),乘法( * )和除法( / )的数学表达式用作组件值。” – W3C

再次,这是说“您可以在括号内进行数学运算”的说法。

至于表达式,作者可以通过通用的值,如50% 2em40 ,并且可以使用calc()无论<长度><频率><角><时间><百分比><编号> ,或<integer>值是允许的。 我最喜欢在野外使用和检查的单位是视口单位( vhvwvminvmax )。 这些是我们即将看到的屏幕尺寸值,特别适合排版和布局。

calc()在野外

上面的示例只是处理响应式排版的一种方法。 通过结合使用媒体查询,Sass, calc()和视口单位,Mike向我们证明了响应式排版如何在特定像素值之间完美缩放。

这是另一个使用Tim Brown的calc()和视口单位的令人叹为观止的版式演示。 该演示用于他讨论CSS锁的文章 ,如果您关心排版,我鼓励您阅读。

视口单位和calc()也可以帮助创建一些我们最喜欢的布局模式。 在上面的演示中, calc()用于从视口的高度( vh )中减去页脚的高度。 克里斯·科耶尔(Chris Coyier)为我们的老朋友“ The Sticky Footer”提出了一个明智的解决方案,因此经常被要求。 与CSS变量结合使用时,该演示也可以很好地工作。

David Khourshid在此演示中肯定还涉及应用程序和动态状态。 David将calc()用于背景,偏移值,变换,滤镜,不透明度和均匀宽度。 对于那些希望与CSS变量一起学习React的人来说,这也是一个很棒的演示。

现在让我们看一下您当然会喜欢的两个附加数学函数,它们分别是min()max()

min()max() :定义约束

如前所述,这些功能仍处于起步阶段,因此演示用例的演示很暗淡,但是请不要吓到您进行试验。 为了研究min()max()您需要每晚下载WebKit 。 下载后,您可以自由打开Nightly(夜间)(黑色图标)并开始工作。

min(expression, [expression])
max(expression, [expression])

还记得我们什么时候学过的表情吗? 这只是说“数学逻辑”的一种奇特的方式。 例如:

min(1 * 10vw, 2 / 50vw)
max(1 * 10vw, 2 / 50vw)

每个表达式用逗号分隔,后面跟一个附加表达式。 我们还可以使用明确声明相同规则的规范:

min()max()函数的计算值是逗号分隔的表达式列表” – W3C

如果您错过了解释中非常重要的部分,则该规范只是声明了一个用逗号分隔的表达式列表,就像我们之前在代码段中所做的一样。

min()max()函数分别表示其包含的最小(最大负数)或最大(最大正数),以逗号分隔的计算。” – W3C

你明白了吗? 他们只是说最小(最负)或最大(最正)。 W3C只是允许我们写负数作为表达式的一部分。

现在让我们花点时间看一下min()max()如何在正在运行的演示中证明自己。 戴上帽子。

现实生活中的min()max()

这是一个演示,使用组件widthfont-size展示了min()max()的几个用例。 width有一个最小约束和一个最大约束,而我们组件的font-size也有一个最小值和最大值。 请记住,在撰写本文时,这仅在WebKit Nightly中有效; 如果您希望看到它的动画效果,请查看此GIF (坦白地说,它太重了,无法嵌入到页面中)。

在上面的示例中,我首先通过限制width并在一开始就这样做。

width: min(max(100px * 2, 70vw), 500px);

使用上面的方法,我可以包括一个中间约束与一个最小约束和一个最大约束。 这行代码告诉浏览器“ 尝试将宽度设置为70vw,但不要让宽度小于200px(100px * 2)或大于500px。” 您还可以走另一条路来获得类似的结果。

min(max(minN, midN), maxN)

为了更详细地解释,这等于最小,中间,最后是最大约束值。 将max()嵌套在min()有助于在所需约束之间进行钳位。

min-width: 200px
max-width: 500px

如果我们使用min-widthmax-width我们将通过min()max()到达等效的目标。 我很好奇,如果在未来几年中,诸如min-width属性在使用数学函数(如min()max()时会过时的话。

关于font-size我使用相同的最小/最大方法来创建响应式和锁定式。

font-size: min(max(1rem, 4vw), 2rem);

我告诉浏览器“ 尝试将字体大小设置为4vw,但不要让其小于1rem或大于2rem。” 不幸的是,没有像宽度那样的min-font-sizemax-font-size这样的等效项,但是从CSS Fonts Module Level 4规范开始可能成为现实。

这无疑是令人振奋的消息,当涉及到约束CSS中的值时,作者也同样感到兴奋。

只需搜索“ CSS锁”

如果使用搜索引擎查找CSS锁 ,则会发现大量文章和演示。 CodePen还可以在另一个CSS Locks搜索下显示各种笔。 对于CSS锁的新知识,让我更详细地解释一下。

锁定技术允许根据当前视口大小在两个值之间平滑过渡的能力。 蒂姆·布朗(Tim Brown)在他的文章“带有CSS锁的灵活印刷术 ”中将其称为“ CSS Locks”,但是该技术最初是由Mike Riethmuller在他的文章“精确控制响应印刷术”中引入的

当将calc()和视口单位用于标题和正文副本时,这会很有用,该标题和正文将根据屏幕尺寸进行缩放。 这种约束就是我们所熟知的“ CSS锁”。

关于CSS锁的文章很多,因此这里有一些我最喜欢的文章,您可以在自己的时间阅读。

用EQCSS锁定

在以上Tommy Hodgins的演示中,使用EQCSS来控制JavaScript的font-size ,而CSS位于后座。 我会让您自己决定如何将JavaScript与CSS混合使用。

使用CSS变量和JavaScript锁定

我编写了一个JavaScript帮助器,该帮助器使用CSS变量以及JavaScript来“锁定”标题的字体大小,正文和行高,因为屏幕尺寸在调整大小和页面加载事件时会有所变化,而无需使用媒体查询。

这些属性将“锁定”锁定在已定义的值上,但这并非没有警告。 在开发方面,每种方法都各有利弊。 由于发生了事件,并且CSS属性发生了更改,因此您很可能会在调整大小时遇到​​绘画和布局问题,因此最好谨慎使用,换句话说, 不要将其用于页面上的所有内容。

这是有关JS样式的一些智慧。

  1. 每当您使用JavaScript来帮助应用样式时,它都会比单独使用CSS慢。 用CSS可以完成的所有工作。
  2. 当使用JavaScript应用样式时,性能取决于执行测试的复杂程度以及需要测试页面上多少个元素。 尝试以限制执行的JS支持的测试次数的方式编写样式,以确定要应用的样式,并尝试限制JS支持的样式表探查或测试HTML中的元素数量。
  3. 了解哪些事件会触发样式的重新计算。 您希望样式与浏览器中发生的事情保持同步,但是您还希望限制在任何给定时间运行的事件侦听器的数量。 在这里,限制测试所要应用的元素数量确实很重要。 如果您使用的是UI库,则可能会在框架中内置事件和回调,这些事件和回调会触发以JS为基础的样式进行重新计算。 请注意,您正在编写的以JS为基础的样式将在其中运行的页面上,浏览器中显示哪些事件侦听器,并尝试找到方法来限制所需的事件侦听器数量; 限制您正在侦听的元素的数量,将类似的侦听器挂接到全局事件中,使用特定于框架的事件进行更紧密的集成,并考虑使用新的浏览器API(例如Resize Observer和Mutation Observer)来满足您的需求。

结论

现在,您已经对CSS数学函数有所了解,我希望它们对您有所启发,或者说服您开始使用稳定的属性并尝试最先进的属性。 如果您使用calc()或已经尝试过min()max()请在评论中告知我们。 编码愉快!

翻译自: https://webdesign.tutsplus.com/tutorials/mathematical-expressions-calc-min-and-max--cms-29735

css怎样调用css函数

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值