除法,除数必须是number规则
+
和-
运算符的两边必须要有空白字符 。比如 ,calc(50% -8px)
会被解析成为一个无效的表达式 , 解析结果是:一个百分比 后跟一个负数长度值 。而加有空白字符的、有效的表达式calc(8px + -50%)
会被解析成为:一个长度 后跟一个加号 再跟一个负百分比 。*
和/
这两个运算符前后不需要空白字符 , 但如果考虑到统一性,仍然推荐加上空白符 。- 用 0 作除数会使 HTML 解析器抛出异常 。
- 涉及自动布局和固定布局的表格中的表列、表列组、表行、表行组和表单元格的宽度和高度百分比的数学表达式,
auto
可视为已指定 。 calc()
函数支持嵌套,但支持的方式是:把被嵌套的calc()
函数全当成普通的括号 。
DIMENSION语法
DIMENSION{num}{ident}
文章插图
这里的
num
值的是数字,那么ident
代表什么呢,这个我们也可以在CSS规范中找到答案ident
ident[-]?{nmstart}{nmchar}*
nmstart和nmcharnmstart [_a-z]|{nonascii}|{escape}nmchar [_a-z0-9-]|{nonascii}|{escape}
文章插图
解惑calc(100%-50px)了解完CSS的基础语法与数据结构,我们现在可以来看看解析器是如何解析
calc(100%-50px)
的 。- 首先DIMENSION语法 , {num}{ident}会将其分割为
num:100
、ident:%和-100px
%
是单位,这个应该没有疑问-100px
这个符合nmchar语法 , 所以没有将其拆开,而是保留作为单位解析,但CSS中没有-100px
这个单位,所以这个表达式不会生效
文章插图
最后喜欢的同学欢迎点个赞呀,想要查看源码的同学快来公众号回复碎片吧~
原文首发地址点这里 , 欢迎大家关注公众号 「前端南玖」,如果你想进前端交流群一起学习 , 请点这里我是南玖,我们下期见?。。?
推荐阅读
- 俦杌这个字念什么(山海经中的梼杌)
- 原神3.0成就众花园中的一棵核桃树怎么完成
- 分布式ID生成方案总结整理
- vue中动态引入图片为什么要是require, 你不知道的那些事
- day03-CSS
- iqoo8为什么不值得买_iqoo8不值得买的原因
- Kotlin Mockito使用方法
- 为什么我的世界没法做枪(我的世界里怎样能有枪)
- JS中数值类型的本质
- 可处置的 ref 结构 C# 8.0 中的 Disposable ref structs