当前位置: 首页 > article >正文

CSS中calc语法不生效

问题起因
在使用calc时发现无法生效,写法是:

height:calc(100vh-100px);

页面无效果,加空格后就发现有效果了:

height:calc(100vh - 100px);

这是为什么?

calc是什么?
css3 的计算属性,用于动态计算长度值。calc语法:

calc(expression)

用法&定义

运算符前后都需要保留一个空格,例如:height: calc(100% - 100px);
任何长度值都可以使用calc()函数进行计算;
calc() 函数支持 “+”, “-”, “*”, “/” 运算;
calc() 函数使用标准的数学运算优先级规则;

解析calc(100%-100px)
手动解析一下calc(100%-100px)。先过DIMENSION语法,{num}{ident}将其分割为num:100、ident:%-100px。

为什么是%-100px?

其实,应该是%和-100px,两个被作为单位解析。因为-100px符合nmchar语法,没有将其拆分。如果-100px有个空格,就会拆分为-和100以及px。但是这个例子,只能较好的解释为什么在-后面加空格。为什么前面也要加空格?

引出新的例子

在此,引出一个新的例子:

heght:calc(100px-1oopx);

在编译时时,会将其直接拆分为100和px-100px,将px-100px过nmchar完全符合\[\_a-z0-9-\]。将其保留作为单位解析。但是px-100px不属于CSS中任何一个单位,也并无单位的定义。
(这个案例,会更加好的解释,为什么-的前后都需要加空格。)
如果-的前后有空格,就会被拆分为100px(数字100和单位px)、-、100px(数字100和单位px)来解析。

源码为什么怎么写?

为什么要把-放在里面?写成calc(100% -100px)或者calc(100px -100px)为什么不行?
在这里,要引入一个正负数的概念,因为在数学标识符当中还有正号和负号这两个标识符。光看calc(100% -100px)和calc(100px -100px)的后半部分,-100px是不是更像是这里为-100和px。因为在CSS中是有负数的概念的,就像margin和padding中会常常用到负数。再引出一个新的例子:

height:clac(500px - -100px);

再遇到这种情况怎么办?

如果没有对于负号的定义应该就会500px、-、-、100px,两个减号怎么编译呢。在-的前后都加上空格,区别开减法和负号。


http://www.kler.cn/a/404411.html

相关文章:

  • C++设计模式行为模式———状态模式
  • 自研芯片逾十年,亚马逊云科技Graviton系列芯片全面成熟
  • Java基础1.0
  • Leetcode(双指针习题思路总结,持续更新。。。)
  • Apollo9.0源码部署(Nvidia显卡)
  • 【计算机网络】多路转接之poll
  • Android 从本地选择视频,用APP播放或进行其他处理
  • 缓冲区的奥秘:解析数据交错的魔法
  • C#(12) 内部类和分部类
  • 弹幕发送功能‘简单’实现
  • 数据集论文:面向深度学习的土地利用场景分类与变化检测
  • 设计模式-Adapter(适配器模式)GO语言版本
  • 2024信创数据库TOP30之达梦DM8
  • php:nginx如何配置WebSocket代理?
  • 接雨水
  • 智能工厂的设计软件 为了监管控一体化的全能Supervisor 的监督学习 之 序8 进化论及科学的信息技术创新:分布式账本/区块链/智能合约 之2
  • yolov5 数据集分享:纯干货
  • GEE 训练教程——Sentinel-1的卷积(核函数)的分析和可视化
  • this.$prompt 限制输入长度
  • Windows环境GeoServer打包Docker极速入门
  • 出海第一步:搞定业务系统的多区域部署
  • 大模型-微调与对齐-非强化学习的对齐方法
  • CSS3 动画:前端开发的动态美
  • 实现了图像处理、绘制三维坐标系以及图像合成的操作
  • 对原jar包解压后修改原class文件后重新打包为jar
  • RestTemplate应用实践总结