转义(Escaping)允许你使用任意字符串作为属性或变量值 。任何我们希望less不要帮我们处理 , 所以这里我们可以使用less的转义语法让~"anything"
或~'anything'
形式的内容都将按原样输出 , 除非 interpolation 。
calc
函数原样输出就好了.box {width: calc(~"100% - 50px")}
- 升级
less
和less-loader
CSS calc 函数用于在指定 CSS 属性值时执行计算 。它可以用于可以使用任何数值的地方 。它将表达式作为参数 , 并将结果用作使用它的 CSS 属性的值 。我们可以用它进行加法语法+
、减法-
、乘法*
和除法/
。
/* property: calc(expression) */width: calc(100% - 80px);
calc() 函数用一个表达式作为它的参数 , 用这个表达式的结果作为值 。这个表达式可以是任何如下操作符的组合 , 采用标准操作符处理法则的简单表达式 。+
加法-
减法*
乘法 , 乘数中至少有一个是 number/
除法 , 除数必须是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
这个单位 , 所以这个表达式不会生效

文章插图
最后喜欢的同学欢迎点个赞呀 , 想要查看源码的同学快来公众号回复碎片吧~
经验总结扩展阅读
- 中元节为什么不能出门
- 为什么说章鱼是四维生物
- 下元节又称为什么节 下元节是干什么的
- 鲛儿姑娘是哪个电视剧中的人物?
- 庞宽为什么叫宽博士?
- 齐飞倪好是哪部电视剧中的人物?
- 陶瓷涂层不粘锅为什么少人买
- 为什么火星适合移民
- 为什么立秋要吃西瓜
- 秋天为什么容易咳嗽 秋天咳嗽的原因是什么