CSS calc() 使用指南

这篇具有很好参考价值的文章主要介绍了CSS calc() 使用指南。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

CSS calc() 使用指南

你听说过或使用过 CSS 的 calc() 函数吗?也许你听说过它,但从未尝试过,或者尝试过使用它,但在使用过程中遇到了一些问题。这篇指南可以帮助你。

CSS calc() 是一个很好的工具,可以帮助你优化你的网页。在本文中,我们将研究 CSS calc() 函数,为什么它很有用,以及如何在项目中使用它。

1. 什么是 CSS calc() 函数?

calc() 函数允许在指定 CSS 属性值时执行计算。它对于计算 length、 percentage、 time、 numbers、integers、frequencies 和 angles 等特别有用。


CSS calc() 函数的一个强大功能是能够组合不同的单位。这个函数可以执行预处理器不能执行的数学计算。

CSS 中的预处理器只能组合具有固定关系的单位,如角度单位、时间单位、频率单位、分辨率单位和特定长度单位。

现在让我们看一下 CSS 的 calc() 语法:

calc( Expression)

calc() 函数接受一个表达式作为参数。然后将表达式的结果用作值。它可以采用任何形式并使用以下任何运算符,遵循标准运算符优先规则。
calc() 函数使用了四个基本运算符:

  • 加法 +
calc(50px + 50px)
  • 减法 -
calc(100% - 30px)
  • 除法 /
calc(100% / 2)
  • 乘法
calc(100vh * 2)

让我们来看一些使用 CSS calc() 函数的基本示例。然后,我们将探讨关于这个函数需要注意的一些事情,然后我们将深入研究一些更复杂的例子。

2. 使用 calc() 在 CSS 中进行单位转换

使用 CSS calc() 函数,我们可以将一个没有单位的值转换为一个有单位的值,方法是将该值乘以要转换的单位类型。这对 CSS 变量很有用,如下例所示:

.class {
  --fav-num: 3;
  width: calc(var(--fav-num) * 1px); // 3px
}

在本例中,我们将数字 3(它没有附加单位)赋值为 CSS 变量 --fav-num。然后我们用它来得到一个新的宽度值,用一个单位乘以 1px 变成 3px

3. 使用 calc() 转换字体大小

假设有这样一个场景,我们希望段落的字体在桌面屏幕上很大,但在移动屏幕上很小。当然,CSS 媒体查询是可以的,但是 calc() 函数也可以,所以我们不需要使用媒体查询。

让我们看看它是如何实现的:

p {
    font-family: Arial, Helvetica, sans-serif;
    font-size: calc(10px + 5vw);
}

这将允许我们的字体在移动视图中变小,当我们增加屏幕大小或在桌面视图中恢复正常。

请注意,如果你的字体大小对于桌面视图来说已经很小,则不应该使用这种方法,在这种情况下,让移动视图的字体尺寸更小是没有意义的。

4. 关于 CSS calc() 函数有几点需要注意

现在让我们看看在使用 CSS calc() 函数时需要注意的几件事。

首先,在编写 calc() 函数语法时,必须在每个操作之间包含空格,特别是在使用 +- 操作符时,否则表达式将无效。考虑下面的例子:

calc(50% -4px)

上面的表达式无效,因为在运算符和长度之间没有包含空格,使得长度显示为负数。为了纠正这个表达式,我们需要这样写:

calc(50% - 4px)

注意,尽管 */ 操作符不需要空格,但包含空格是允许的。因此,为了保持一致性,建议包含空格。

关于 CSS calc() 函数还有一些需要注意的地方:

  • 当应用于媒体查询时,它不能工作
  • 当除 0 时,HTML 解析器会生成一个错误
  • 可以嵌套 calc() 函数

让我们深入研究更多的例子。

5. 示例

5.1 使用 calc() 在 CSS 中调整位置和长度

为了理解如何使用 CSS calc() 函数调整位置和长度,让我们首先制作一些卡片并将它们放入容器中。

你将需要以下的HTML:

<div class="container">
   <div class="card"><p>card 1</p></div>
   <div class="card"><p>card2</p></div>
   <div class="card"><p>card3</p></div>
   <div class="card"><p>card4</p></div>
   <div class="card"><p>card4</p></div>
</div>

你的 CSS 代码应该如下所示:

*{
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}
body{
  display: flex;
  justify-content: center;
  align-items: center;
  min-height: 100vh;
}
.container{
  position: relative;
  display: flex;
  width: 1000px;
  height: 200px;
  background:#ccc
}
 .card{
  position: relative; 
  min-width: 200px;
  height: 200px;
  background:#FF0000;
  margin: 10px 10px 10px 10px;
  color: white;
  font-family: 'Franklin Gothic Medium', 'Arial Narrow', Arial, sans-serif;
}

结果如下:

calc css,前端,css,css,前端

你注意到我们的红卡片和灰色容器是不对齐的吗?现在让我们引入 CSS calc() 函数,在我们的卡片的 min-widthheight 上使用它:

min-width: calc(calc(100% / 5) - 20px);
height: calc(100% - 20px);

对于 min-width,我们在一个 calc() 函数中嵌套了一个 calc() 函数。嵌套的 CSS 函数用于将屏幕的全宽度(100%)除以 5,然后将结果减去 20px,以得到我们的最小宽度的最终值。

对于我们的高度,我们从 100% 的高度减去顶部和底部 margin 的总值(20px),结果是一个完美对齐的方框。

结果如下:

calc css,前端,css,css,前端

正如你所看到的,红色卡片现在完美地放置在我们的容器中。

5.2 使用 calc() 函数和 CSS 变量

使用带有 CSS 变量的 calc(),我们可以定义一个值一次,并使用数学方法修改它,以便获得一个对我们有用的新值。让我们看一个例子。

假设我们有两个按钮,每个按钮都有自己的类,像这样:

<div class="container">
  <button class="success">button 1</button> 
  <button class="danger">button2</button>
</div>

我们可以使用 CSS 变量定义一种颜色,然后使用 CSS calc() 函数派生另一种颜色。让我们为按钮创建一个颜色变量。我们将使用 hsl 表示,它接受变量(色调饱和度亮度)来指定颜色值:

:root{
  --hue:180;
}
.success{
	background-color: hsl(calc(var(--hue)), 100%, 50%);
}
.danger{
  background-color: hsl(calc(var(--hue) - 180), 100%, 50%);
}

结果如下:

calc css,前端,css,css,前端

通过给根色调指定一个特定的值,你可以看到我们可以使用 hsl 表示法中的 calc() 函数为第二个按钮派生另一种颜色。如果更改根色调的值,则为第二个按钮派生出另一种颜色。

5.3 CSS calc() 应用于动画

当然,我们可以使用 CSS calc() 函数来制作动画。

让我们创建一个示例,从以下 HTML 开始:

<section>
  <div class="animate-loading">
    <div class="block" style="--i: 1"></div>
    <div class="block" style="--i: 2"></div>
    <div class="block" style="--i: 3"></div>
    <div class="block" style="--i: 4"></div>
    <div class="block" style="--i: 5"></div>
    <div class="block" style="--i: 6"></div>
    <div class="block" style="--i: 7"></div>
    <div class="block" style="--i: 8"></div>
    <div class="block" style="--i: 9"></div>
    <div class="block" style="--i: 10"></div>
    <div class="block" style="--i: 11"></div>
    <div class="block" style="--i: 12"></div>
    <div class="block" style="--i: 13"></div>
    <div class="block" style="--i: 14"></div>
    <div class="block" style="--i: 15"></div>
    <div class="block" style="--i: 16"></div>
    <div class="block" style="--i: 17"></div>
    <div class="block" style="--i: 18"></div>
    <div class="block" style="--i: 19"></div>
    <div class="block" style="--i: 20"></div>
  </div>
</section>

我们的 CSS 应该是这样的:

*{
  margin: 0;
  padding: 0;
  box-sizing: border-box;
  font-family: 'Courier New', Courier, monospace;
}
section{
  display: flex;
  justify-content: center;
  align-items: center;
  min-height: 100vh;
  background: #001d10;
}
.animate-loading{
   position: relative;
   width: 250px;
   height: 250px;
}
.animate-loading .block{
  position: absolute;
  width: 8px;
  height: 25px;
  background: #050c09;
  left: 50%;
  border-radius: 8px;
  transform: rotate(calc(18deg * var(--i)));
  transform-origin: 0 125px ;
  animation: animate 1.9s ease-in-out infinite;
  animation-delay: calc(0.05s * var(--i));
}
@keyframes animate {
  0%,50%{
     background: #050c09;
     box-shadow: none;
  }
  50.1%,100%{
    background: #38d2dd;
    box-shadow: 0 0 5px #38d2dd,
                0 0 15px #38d2dd,
                0 0 30px #38d2dd,
                0 0 60px #38d2dd,
                0 0 90px #38d2dd;

  }
}

结果如下:

calc css,前端,css,css,前端

正如我们在代码中看到的,CSS calc() 函数在两个方面派上了用场:旋转动画和动画延迟。让我们仔细看看这两个部分。

transform: rotate(calc(18deg * var(--i)));

18deg 的值来自 360 度除以我们在 HTML 中创建的块数。然后我们通过用 18deg 乘以变量的值得到变换的旋转值。

animation-delay: calc(0.05s * var(--i));

我们还在 animation-delay 中使用了 CSS calc() 函数,将 0.05s 乘以变量。这是用来指定动画开始前的延迟时间。

6. CSS calc() 的浏览器兼容性

虽然 calc() 在 CSS 中是一个有用的函数,但它只有在与我们的浏览器兼容时才有用。看看下面的图表,看看这个功能的浏览器兼容性:

calc css,前端,css,css,前端

你可以查看 CanIUse 了解更多关于 CSS calc() 函数的浏览器兼容性的详细信息。

7. CSS calc()函数使用场景

很多时候我们需要 CSS calc() 函数来方便地解决一些问题。它们包括:

  • 当我们处理 CSS 变量时
  • 为了得到一个新的值
  • 用于不同单元之间的计算,这是预处理器无法做到的
  • 定位
  • 调整我们网站的结构和其他元素
  • 当我们想避免重复做相同的计算时

我们在本文中介绍的大多数示例都属于上述类别。

8. 小结

使用 CSS calc() 函数的方法有很多。CSS calc() 函数是你应该尝试的。它是 web 开发人员工具箱中必不可少的工具。如果你觉得这篇文章有帮助,请点赞加关注,谢谢支持!文章来源地址https://www.toymoban.com/news/detail-697737.html

到了这里,关于CSS calc() 使用指南的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • CSS前端开发指南:创造精美的用户界面

    《CSS前端开发指南:创造精美的用户界面》是一本旨在帮助读者掌握CSS技术,实现令人惊叹的前端用户界面的实用指南。无论您是初学者还是有经验的开发者,本书都将为您提供全面的知识和实用技巧,帮助您创建引人注目的网页和应用程序。 内容概述: 第一部分:CSS入门

    2024年02月13日
    浏览(35)
  • WebSocket的使用指南---前端

    使用:创建Wevsocket实例化  然后开启一个后端服务 我用的是no.js 创建index.js   启动服务器 后端终端  前端触发点击事件发送数据; 实例化对象中可以监听到以下事件: open 连接打开的回调事件,这时 readyState 变为 OPEN; message 收到消息的回调事件,同时回调函数接收到一个

    2024年02月09日
    浏览(25)
  • PDF.js 前端开发使用指南

    PDF.js是一个用于在网页中显示PDF文档的JavaScript库。它是由Mozilla开发的,是一个完全免费、开源的工具。在本篇文章中,我们将详细介绍如何使用PDF.js进行前端开发,包括基本的使用方法、代码示例以及一些实用的技巧。 1. 安装 PDF.js 安装PDF.js有两种方法: 方法1:通过npm安装

    2024年02月08日
    浏览(40)
  • 若依ruoyi-vue前端组件的使用指南

    若依ruoyi-vue提供了丰富的前端组件,可以帮助开发人员快速搭建现代化的Web应用。本文将介绍如何使用Ruoyi Vue的前端组件,包括自定义组件、组件注册和组件通信。 1. 自定义组件 自定义组件允许开发人员根据项目需求创建新的组件,以实现特定的功能或样式。在Ruoyi Vue中,

    2024年04月25日
    浏览(33)
  • CSS3 转换,死磕原理,写给前端开发的小程序布局指南

    height: 100px; border: 1px solid red; background-color: #cccccc; position: absolute; left: 50%; top: 50%; transform: translate(-50%,-50%); } 2D 缩放 - scale() scale() 方法用于改变元素的尺寸。 根据给定的高度和宽度。 scale(x) 或者 scale(x,y) 一个参数时,第二个参数默认和第一个一样。 可取值 -  默认为1

    2024年03月26日
    浏览(44)
  • 前端测试指南:Vue3 测试工具介绍与使用

    1.1 前端测试的重要性 在现代前端开发中,测试已经成为了必不可少的一环。测试可以保证代码的质量、可维护性和可靠性,防止代码的潜在错误和漏洞。同时,测试可以让开发者更加自信地提交代码和合并代码,以及更快地解决问题。因此,测试已经成为了前端开发中不可

    2024年02月10日
    浏览(37)
  • 丁鹿学堂:前端学习进阶指南之react入门(react在html中使用数据绑定和修改)

    在html中使用react 今天跟大家分享react的基础语法。 我们采用最简单的方法,就是在html中引入react 因为一上来就使用脚手架的话,很多配置大家不一定清楚。 而在html中使用react的话,可以直接去学习react最基本的语法。 这是零基础学习react的最佳实践。 引入react的依赖 react也

    2024年02月14日
    浏览(51)
  • 理解并使用CSS:前端邪术-化妆术

    文详细介绍了CSS(层叠样式表)的基本概念、语法规范、引入方式、代码风格、选择器种类以及常用元素属性。通过阅读本文,您可以深入理解CSS的强大功能,并学会如何在网页设计中灵活运用。

    2024年02月08日
    浏览(51)
  • 前端使用css去除input框的默认样式

    2024年01月23日
    浏览(47)
  • 使用css实现前端div右对齐,非float

    使用右对齐经常用float: right,准确的说是右侧浮动,float属性不占用文档位置 当我在一个div中添加两个按钮,想让按钮右对齐时就会出现这样的效果 所以采用flex布局来实现右对齐,按钮的父组件设置属性 display: flex; justify-content: flex-end;

    2024年02月12日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包