首页 > 其他分享 >CSS 中的数学函数

CSS 中的数学函数

时间:2024-10-14 11:10:46浏览次数:1  
标签:rotate 函数 height 数学 rem round CSS mod

min()/max()/clamp()

和calc()函数类似,任何可以使用<length><frequency><angle><time><percentage><number><integer>数据类型的地方都可以使用min()/max()/clamp()这3个数学函数。

min()/max()/clamp()这3个数学函数和calc()函数是可以相互嵌套使用的,例如:

width: calc(min(800px, 100vw) / 6);

min()和max()函数

语法如下:

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

支持一个或多个表达式,每个表达式之间使用逗号分隔,max()函数返回的是最大值,min()函数返回的是最小值。

例如:

width: min(10px * 10, 10em);
width: min(calc(10px * 10), 10em);
width: min(10px * 10, var(--width));

width: max(10px * 10, 10em);
width: max(calc(10px * 10), 10em);
width: max(10px * 10, var(--width));

clamp()函数

clamp()函数作用是返回一个区间范围的值。语法如下:

clamp(MIN, VAL, MAX)

其中MIN表示最小值,VAL表示首选值,MAX表示最大值。意思是,如果VAL在MIN和MAX范围之间,则使用VAL作为函数返回值;如果VAL大于MAX,则使用MAX作为返回值;如果VAL小于MIN,则使用MIN作为返回值。

clamp(MIN, VAL, MAX)实际上等同于max(MIN, min(VAL, MAX))

示例:

button {
    width: clamp(200px, 50vw, 600px);
}

sin()/cos()等数学三角函数

  • sin()
  • cos()
  • tan()
  • asin()
  • acos()
  • atan()
  • atan2()

这7个三角函数中,有的函数根据角度返回对应的弧度值,有的是根据弧度值返回对应的角度值(以字母 a 打头的那几个函数)。

示例:

/* 正弦函数 */
width: calc(100px * sin(45deg));
/* 反正弦 */
transform: rotate(asin(-0.2));

mod()/rem()/round()函数

mod()函数

CSS mod()函数返回第一个参数除以第二个参数的取模结果,类似于JavaScript余数运算符(%)。
示例:

/* 数值,无单位 */
line-height: mod(7, 2); /* 1 */
line-height: mod(14, 5); /* 4 */
line-height: mod(3.5, 2); /* 1.5 */

/* 百分比或者带单位的尺寸 */
margin: mod(15%, 2%); /* 1% */
margin: mod(18px, 4px); /* 2px */
margin: mod(19rem, 5rem); /* 4rem */
margin: mod(29vmin, 6vmin); /* 5vmin */
margin: mod(1000px, 29rem); /* 72px - 如果根字号是16px */

/* 正负值 */
rotate: mod(100deg, 30deg); /* 10deg */
rotate: mod(135deg, -90deg); /* -45deg */
rotate: mod(-70deg, 20deg); /* 10deg */
rotate: mod(-70deg, -15deg); /* -10deg */

/* 计算*/
scale: mod(10 * 2, 1.7); /* 1.3 */
rotate: mod(10turn, 18turn / 3); /* 4turn */
transition-duration: mod(20s / 2, 3000ms * 2); /* 4s */

rem()函数

CSS rem()函数返回第一个参数除以第二个参数后的余数,类似于JavaScript余数运算符(%)。

示例

/* U数值,无单位 */
line-height: rem(21, 2); /* 1 */
line-height: rem(14, 5); /* 4 */
line-height: rem(5.5, 2); /* 1.5 */

/* 百分比或者带单位的尺寸 */
margin: rem(14%, 3%); /* 2% */
margin: rem(18px, 5px); /* 3px */
margin: rem(10rem, 6rem); /* 4rem */
margin: rem(26vmin, 7vmin); /* 5vmin */
margin: rem(1000px, 29rem); /* 72px - if root font-size is 16px */

/* 正负值 */
rotate: rem(200deg, 30deg); /* 20deg */
rotate: rem(140deg, -90deg); /* 50deg */
rotate: rem(-90deg, 20deg); /* -10deg */
rotate: rem(-55deg, -15deg); /* -10deg */

/* 计算*/
scale: rem(10 * 2, 1.7); /* 1.3 */
rotate: rem(10turn, 18turn / 3); /* 4turn */
transition-duration: rem(20s / 2, 3000ms * 2); /* 4s */

rem和mod的区别

mod 函数生成一个为零或与除数具有相同符号的结果。
rem 函数生成一个为零或与被除数具有相同符号的结果。

round()函数

语法规则:

round( <rounding-strategy>?, <valueToRound> , <roundingInterval> )

它最多可以接收 3 个参数,并且第一个参数是可选参数:

  • <rounding-strategy>:可选参数,表示舍入策略。 这可能是以下值之一:
    up: 相当于 JavaScript Math.ceil() 方法,将 valueToRound 向上舍入到 roundingInterval 最接近的整数倍。 这相当于 JavaScript Math.ceil() 方法。
    down:将 valueToRound 向下舍入为 roundingInterval 最接近的整数倍。 这相当于 JavaScript Math.floor() 方法。
    nearest:将 valueToRound 舍入为 roundingInterval 的最接近的整数倍,该倍数可以高于或低于该值。 如果 valueToRound 是上方和下方舍入目标之间的一半,则会向上舍入。 相当于 JavaScript Math.round()。
    to-zero:将 valueToRound 舍入为 roundingInterval 接近/接近零的最接近整数倍。 这相当于 JavaScript Math.trunc() 方法。
  • <valueToRound>:需要被四舍五入的值。 必须是 <number><dimension><percentage>,或者解析为这些值之一的数学表达式。
  • <roundingInterval>:舍入的间隔规则,表示最终计算值需要可以被此数值整除。 这是一个 <number><dimension><percentage>

示例:

line-height: round(2.2, 1); /* 2 */
line-height: round(14.82, 1); /* 15 */
line-height: round(5.5, 1); /* 6 */

height: round(nearest, 110px, 25px); /* 最终计算值:100px */
height: round(up, 110px, 25px); /* 最终计算值:125px */
height: round(down, 120px, 25px); /* 最终计算值:100px */
height: round(to-zero, 120px, 25px); /* 最终计算值:100px */
height: round(120px, 25px); /* 最终计算值:125px */

参考

https://www.zhangxinxu.com/wordpress/?p=9372
https://www.zhangxinxu.com/wordpress/?p=10901
https://www.zhangxinxu.com/wordpress/?p=11363
https://www.cnblogs.com/coco1s/p/17676226.html

标签:rotate,函数,height,数学,rem,round,CSS,mod
From: https://www.cnblogs.com/sunyongming/p/18463537

相关文章

  • 2021年华为杯数学建模竞赛D题论文和代码
     抗乳腺癌候选药物的优化建模乳腺癌是女性癌症高发性恶性肿瘤,近年来发病率和死亡率逐年上升,严重危害了女性健康。如何使用数学模型辅助专家高效研发抗乳腺癌药物具有重要意义。本文通过构建化合物的定量结构-活性关系(QSAR)模型来筛选潜在活性化合物,使其不仅具有较好的生物......
  • 2021年华为杯数学建模竞赛E题论文和代码
     草原放牧策略研究本文研究了多因素影响下的草原生态环境演化与放牧策略的关系,通过机理分析分别构建了放牧策略对土壤湿度、植被生物量、土壤化学性质影响模型,以此为基础得到了未来土壤湿度和土壤化学物质含量的预测值,并通过分析得到能够实现可持续发展的最优放牧策略和不......
  • QD1-P25 CSS 背景
    本节学习:CSS背景属性本节视频https://www.bilibili.com/video/BV1n64y1U7oj?p=25背景颜色​​背景图片不重复​​横向重复​​纵向重复​​双向重复​​背景图片大小400px​​600px​​原图大小​​显示器宽度不够时,显示图片的一部分​​‍‍本......
  • 信息安全数学基础第一章(部分)
    ......
  • Web前端开发入门学习笔记之CSS 43-47 --新手超级友好版-复合选择器+css特性篇
         Foreword写在前面的话: 大家好,我是一名刚开始学习HTML的新手。这篇文章是我在学习html过程中的一些笔记和心得,希望能和同样在学习HTML的朋友们分享。由于我的知识有限,文章中可能存在错误或不准确的地方,欢迎大家在评论区提出建议和指正。我非常期待大家的反馈,以便......
  • 使用HTML和CSS实现3D波浪动画效果
    使用HTML和CSS实现3D波浪动画效果在本篇博客中,将详细介绍如何使用HTML与CSS创建一个3D波浪动画效果。这个效果不仅能够在网页中创建立体感强的视觉体验,还能够通过悬停和聚焦实现与用户的交互。我们将逐步解析代码中的每个部分,帮助你掌握其中的关键技巧。1.效果2.HTML......
  • C语言中以下概念,以及这些概念之间的关系: 1.代码段 2.数据段 3.堆栈 4.全局变量 5.局部
    在C语言程序中,内存布局通常被分为几个主要的区域,每个区域都有不同的用途。以下是关于代码段、数据段、堆栈、全局变量、局部变量和函数的详细描述,以及它们之间的关系。1.代码段(TextSegment)代码段(也称为textsegment)是程序的只读部分,存储的是程序的指令(即代码)。这是可执行文......
  • 如何使用SQL函数处理和清理输入数据中的NULL值?
    处理和清理输入数据中的NULL值是一个重要的主题。NULL值代表未知或缺失的数据,这可能会影响数据分析的准确性。因此,在进行任何分析之前,正确地处理这些NULL值是至关重要的。以下是一些常用的方法来处理和清理输入数据中的NULL值,并附带了详细的例子。1.使用COALESCE函数COAL......
  • 对数函数log
    对数函数\(\log\)前言表扬一下福州屏东中学,新初一课本里是乘方,作业考的是\(\log\)的公式。(要不是作业我都快忘记\(\log\)了)定义若\(a^b=n\),则\(\log_an=b\)​。即“底不变,俩交换”。例如\(\because2^3=8,\therefore\log_28=3\)​。在这里的\(n\)称为真数。......
  • 面对配分函数 - 引言篇
    序言深度学习,作为人工智能领域的一个核心分支,近年来在图像识别、语音识别、自然语言处理等多个方面取得了显著进展。其核心思想是通过构建深层的神经网络模型,模拟人脑的学习机制,从而实现对复杂数据的自动特征提取和高效处理。然而,在深度学习的研究与实践中,配分函数(......