CSS3运算 calc()函数是怎么实现计算

CSS3 的 calc() 函数允许我们在属性值中执行数学计算操作。例如,我们可以使用 calc() 指定一个元素宽的固定像素值为多个数值的和。

.foo {width: calc(100px + 50px);
}

为什么是 calc()

如果你使用过 CSS预处理器,比如 SASS,以上示例你或许碰到过。

.foo {width: 100px + 50px;
}// Or using SASS variables
$width-one: 100px;
$width-two: 50px;
.bar {width: $width-one + $width-two;
}

然而,calc() 函数提供了更好的解决方案。首先,我们能够组合不同的单元。特别是,我们可以混合计算绝对单元(比如百分比与视口单元)与相对单元(比如像素)。例如,我们可以创造一个表达式,用一个百分比减掉一个像素值。

.foo {width: calc(100% - 50px);
}

本例中,.foo 元素总是小于它父元素宽度 50px。 第二,使用 calc(),计算值是表达式它自己,而非表达式的结果。当使用 CSS 预处理器做数学运算时,给定值为表达式的结果。

// Value specified in SCSS
.foo {width: 100px + 50px;
}// Compiled CSS and computed value in browser
.foo {width: 150px;
}

然而,浏览器解析的 calc() 的值为真实的 calc() 表达式。

// Value specified in CSS
.foo {width: calc(100% - 50px);
}// Computed value in browser
.foo {width: calc(100% - 50px);
}

这意味着浏览器中的值可以更加灵活,能够响应视口的改变。我们能够给元素设定一个高度为视口的高度减去一个绝对值,它将随视口的改变进行调节。

使用 calc()

calc() 函数可以用来对数值属性执行四则运算。比如,& lt;length>,& lt;frequency>,& lt;angle>,& lt;time>,& lt;number> 或者 & lt; integer 数据类型 这里有一些示例:

.foo {width: calc(50vmax + 3rem);padding: calc(1vw + 1em);transform: rotate( calc(1turn + 28deg) );background: hsl(100, calc(3 * 20%), 40%);font-size: calc(50vw / 3);
}

calc() 函数可以用来对数值属性执行四则运算。比如

.foo {width: calc( 100% / calc(100px * 2) );
}

函数的计算值如下所示:

.foo {width: calc( 100% / (100px * 2) );
}

CSS3运算 calc()函数是怎么实现计算相关推荐

  1. 【uniapp】CSS3 的 calc() 函数使用表达式动态计算

    前言 css3 中增加了 calc() 函数 calc() 函数语法:property: calc(expression) expression 表达式为: "+". " ...

  2. css3 的 calc()函数在布局中的使用----头部高度固定,页面正好占满一屏

    最近项目遇到一个布局需求,头部高度固定,页面需要刚好占满一屏幕. 如下示意图: 方法:使用calc .wrap{position: relative;margin-left: 24px;margin- ...

  3. CSS3属性calc函数(CSS3)

    CSS3属性calc函数(CSS3) <!DOCTYPE html> <html lang="en"><head><meta charse ...

  4. CSS计算 CSS运算 calc函数的使用方法

    CSS也是可以进行运算的!!! CSS中的calc函数是可以对不同值进行计算的 它可以在 <length>, <frequency>,<angle>, <ti ...

  5. CSS3中的calc()函数以及在less中的使用

    1. calc()函数 在CSS3中我们可以通过calc()函数来动态计算长度值,如: #div {width: calc(100% - 100px); } 它的语法是 calc(expression ...

  6. web前端入门学习 css(8)(新增语义化标签、video/audio、新增input类型、新增表单属性、属性选择器、结构伪类选择器、伪元素选择器、css3盒子模型、模糊、calc函数、过渡

    https://www.bilibili.com/video/BV1pE411q7FU?p=276 文章目录 html5新特性 html5新增语义化标签 header头部 nav导航 article内 ...

  7. CSS3 calc() 函数,height: calc(100% - 70px);

    今天做练习的时候遇到了这样一行代码:height: calc(100% - 70px);,100%的高度减去70px???这是什么函数?竟然支持不同单位之间的运算?! 通过查阅资料,我终于认识了这个函 ...

  8. css calc()函数 动态根据屏幕宽度计算宽度

    今天写移动端H5页面,mui按钮在layer mobile 弹窗 html类型的时候,mui按钮宽度设置为100%的时候,mui按钮宽度会超出屏幕,听同事建议,使用 css calc()函数计算得以解 ...

  9. (九)HTML5+CSS3新特性:语义标签、多媒体标签、表单、新增选择器、盒子模型、模糊、calc函数、过渡

    本文仅用作学习记录,学习视频为B站的pink老师 文章目录 HTML5的新特性 HTML5新增的语义化标签 HTML5新增的多媒体标签 HTML5新增的input表单 HTML5新增的表单属性 CSS ...

最新文章

  1. Affinity Propagation+聚类
  2. ubuntu:通过封装验证码类库一步步安装php的gd扩展
  3. 如何在Rancher 2.2 Preview2上部署和管理多K8s集群应用 1
  4. 【手写系列】透彻理解Spring事务设计思想之手写实现
  5. Flutter:Navigator2.0介绍及使用
  6. Zookeeper基于Java访问-授权对象
  7. linux 无法访问docker mysql8_Apple M1芯片不支持Docker?Docker:正在努力适配
  8. pom 的第三方jar报错_01_maven-将第三方jar包一起打包到项目 jar 包中
  9. linux中initrd的含义,Linux2.6 内核的 Initrd 机制解析
  10. [原创]一个shell小案例
  11. Intellij IDEA 使用jrebel运行spring-boot并实现自动编译进行热部署
  12. 全网首发:终于把freetype的bitmap模式汉字字体旋转成功了
  13. vm虚拟机的安装使用装系统有序列号
  14. Opengl es2.0 学习笔记(九)颜色混合
  15. 利用Eigen求广义逆矩阵
  16. Unity Shader 一 激光特效Shader
  17. win10升级补丁_干掉烦人的win10升级助手gwx
  18. Kotlin入门-数据类与密封类 的解脱,由繁至简
  19. idea从插件市场或者外部插件库导入插件的方式
  20. 电商核心业务功能测试分析

热门文章

  1. 深度学习核心技术精讲100篇(四十三)-人工智能新技术-知识普及篇:一文带你深入认识下联邦学习的前世今生
  2. 大竹中学2021高考成绩查询,四川大竹中学2021录取分数线
  3. python面向对象和面向过程的区别_Python11-01_面向对象----面向对象和面向过程的区别...
  4. Matplotlib实例教程(十七)3D山体图
  5. 内存学习――为什么需要虚拟内存
  6. 使用Skywalking实现全链路监控
  7. 一个可供中小团队参考的微服务架构技术栈
  8. 如何用eclispe远程调试tomcat--转载
  9. Java多线程编程模式实战指南(二):Immutable Object模式--转载
  10. Lesson 12.1 深度学习建模实验中数据集生成函数的创建与使用