Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >自定义属性--和calc

自定义属性--和calc

作者头像
张炳
发布于 2019-08-02 09:08:50
发布于 2019-08-02 09:08:50
77000
代码可运行
举报
运行总次数:0
代码可运行

>>>点击获取更多文章<<<

最近在弄练习写demo11,写到有关于 --XXX的自定义属性,calc,平时很少用,比较生面口,于是将它mark下来。

自定义属性 (--*)

带有前缀--的属性名,比如--example--name,表示的是带有值的自定义属性,其可以通过 var 函数在全文档范围内复用的。

CSS 自定义属性是可以级联的:每一个自定义属性可以多次出现,并且变量的值将会借助级联算法和自定义属性值运算出来。

语法

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
--somekeyword: left;
--somecolor: #0000ff;
--somecomplexvalue: 3px 6px rgb(20, 32, 54);

Link to section示例

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<style type="text/css">
:root {
  --first-color: #488cff;
  --second-color: #ffff8c;
}

#firstParagraph {
  background-color: var(--first-color);
  color: var(--second-color);
}

#secondParagraph {
  background-color: var(--second-color);
  color: var(--first-color);
}

#container {
  --first-color: #48ff32;
}

#thirdParagraph {
  background-color: var(--first-color);
  color: var(--second-color);
}
</style>


<p id="firstParagraph">This paragraph should have a blue background and yellow text.</p>
<p id="secondParagraph">This paragraph should have a yellow background and blue text.</p>
<div id="container">
  <p id="thirdParagraph">This paragraph should have a green background and yellow text.</p>
</div>

结果

calc

概述

CSS函数calc()可以用在任何一个需要<length>、<frequency>, <angle>、<time>、<number>、或<integer>的地方。有了calc(),你就可以通过计算来决定一个CSS属性的值了。你还可以在一个 calc() 内部嵌套另一个 calc() ,里面的 calc() 会被简单地视为加了括号。

语法

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
calc( <calc-sum> )
where 
<calc-sum> = <calc-product> [ [ '+' | '-' ] <calc-product> ]*

where 
<calc-product> = <calc-value> [ '*' <calc-value> | '/' <number> ]*

where 
<calc-value> = <number> | <dimension> | <percentage> | ( <calc-sum> )
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/* property: calc(expression) */
width: calc(100% - 80px);

其中的表达式,可以用+(加法) -(减法) *(乘法,乘数中至少要有一个是 <number> 类型的) /(除法,被除数(/右面的数)必须是 <number> 类型的)。表达式中的操作数可以使用任意语法种类的长度。如果你愿意,你可以在一个表达式中混用多种不同的长度单位。在需要时,你还可以使用小括号来调整计算顺序。

注意,+ 和 - 运算符的两边必须始终要有空白符。

例子(使用指定的外边距定位一个对象)

使用 calc() 可以很容易的为一个对象设置一个左右两边相等的外边距.在这个例子中,使用 CSS 创建了一个横跨整个窗口的 banner,该 banner 左右两边各有一个距离窗口边缘 40 像素的间距:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
.banner {
    position: absolute;
/* fallback for browsers which still doesn't support for `calc()` */
    left: 5%;
    width: 90%;
/* overwrite, if the browsers support for `calc()`*/
    left: calc(40px);
    width: calc(100% - 80px);
    border: 1px solid black;
    box-shadow: 1px 2px;
    background-color: yellow;
    padding: 6px;
    text-align: center;
}
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<div class="banner">This is a banner!</div>

使用CSS变量来嵌套calc()

我们来看一下下面的代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
.foo {
  --widthA: 100px;
  --widthB: calc(var(--widthA) / 2);
  --widthC: calc(var(--widthB) / 2);
  width: var(--widthC);
}

在所有的变量都被展开后, widthC 的值就会变成 calc( calc( 100px / 2) / 2),然后当它被赋值给 .foo 的 width属性 时,所有内部的这些calc()(无论嵌套的有多深)都将会直接被“拍”成一个括号(原文:be flattened to just parentheses),所以这个 width属性 的值就直接相当于 calc( ( 100px / 2) / 2)了,或者说就变成25px了。 简而言之:一个 calc() 里面的 calc() 就仅仅相当于是一个括号。

参考来源

https://developer.mozilla.org...*

https://developer.mozilla.org...

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
HTML5 data-* 自定义属性
  在HTML5中添加了data-*的方式来自定义属性,所谓data-*实际上上就是data-前缀加上自定义的属性名,使用这样的结构可以进行数据存放。使用data-*可以解决自定义属性混乱无管理的现状。
超然
2018/08/03
9850
【CSS】470- 是时候开始用 CSS 自定义属性了
自定义属性(有时候也被称作CSS变量或者级联变量)是由CSS作者定义的,它包含的值可以在整个文档中重复使用。由自定义属性标记设定值(比如:--main-color: black;),由var() 函数来获取值(比如:color: var(--main-color);)
pingan8787
2020/08/04
1.1K0
【CSS】470- 是时候开始用 CSS 自定义属性了
使用CSS自定义属性实现骨架屏
其实这篇文章网上已经有翻译版本,但是读起来明显是机翻的,实在是受不了,于是就用自己的理解翻译了一下
coder_koala
2022/11/28
9950
使用CSS自定义属性实现骨架屏
CSS自定义属性:引入 | 使用var() | cal()计算 | css 与 js 的连接
自定义属性,是一种开发者可以自主命名和使用的CSS属性。浏览器在处理像 color 、position 这样的属性时,需要接收特定的属性值,而自定义属性,在开发者赋予它属性值之前,它是没有意义的。所以要怎么给 CSS 自定义属性赋值呢?这倒和习惯无异:
科技新语
2022/08/10
1.4K0
2小时-带你实现-360官网-主题换肤功能
然后要注意的事,重点吸收的部分是less,原生的css变量 只是作为一个了解即可。
万少
2025/02/11
670
2小时-带你实现-360官网-主题换肤功能
5个好用的 CSS 函数
CSS 包含了许多函数,而且它能够完成许多早期需要用 JavaScript才能完成的事情。每年都有新的特性被添加进来,这让我们的开发更加轻松,也减少了对JavaScript的依赖。CSS 函数是它所具有的最强大的特性之一,在本文中,我将介绍一些我认为有用的函数。
前端小智@大迁世界
2020/09/10
5390
5个好用的 CSS 函数
5个好用的 CSS 函数,快来试试手吧!
最近开源了一个 Vue 组件,还不够完善,欢迎大家来一起完善它,也希望大家能给个 star 支持一下,谢谢各位了。
前端小智@大迁世界
2021/01/26
4740
5个好用的 CSS 函数,快来试试手吧!
jquery 基础
("[href$='.jpg']") 选取所有 href 值以 ".jpg" 结尾的元素。
用户5760343
2019/08/26
4990
jquery 基础
使用 CSS 自定义属性
CSS 自定义属性(也称为 CSS 变量)是一种在 CSS 中预定义和使用的变量。它们提供了一种简洁和灵活的方式来通过多个 CSS 规则共享相同的值,使得样式更易于维护和修改。
打不着的大喇叭
2024/03/11
2060
大胆尝试这些新的CSS属性,释放CSS的力量吧(一)
本文章系《Unleashing the Power of CSS》(释放CSS的力量,暂且这么翻译吧)一书的学习笔记,希望通本书的学习,系统的梳理下CSS相关的高级新特性。本篇文章是其第一部分,由于全书英文版,理解和阅读会有偏差,欢迎各位大佬们指正,我们一起共同提高。
前端达人
2023/09/11
3501
大胆尝试这些新的CSS属性,释放CSS的力量吧(一)
【Hello CSS】第七章-CSS的继承与可变性
鱼头注:有很多人会认为 !important 也参与了优先级的排列,但 !important 是在优先级的规则之外的,如果参与了优先级的排列,意思就是 !important 是可以被覆盖的,但事实显然不是。
陈大鱼头
2020/04/16
4740
【Hello CSS】第七章-CSS的继承与可变性
【实战技巧】CSS自定义属性以及在VUE3中的使用
官方称之为 自定义属性 ,但我比较习惯叫它 变量 ,简单点说就是一种开发者可以自主命名和使用的 CSS 属性.
一尾流莺
2022/12/10
2.9K0
【实战技巧】CSS自定义属性以及在VUE3中的使用
长度单位、calc() 表达式
(adsbygoogle = window.adsbygoogle || []).push({});
双面人
2019/07/15
8500
CSS 计算属性 calc()的完整指南(下)
从之前的文章:CSS 计算属性 calc()的完整指南(一),我们可以学习到几个方面:
前端开发博客
2020/11/04
1.9K0
CSS 计算属性 calc()的完整指南(下)
深入了解 CSS 变量,让 CSS 创造更多可能!
日常开发中所说的 CSS 变量,实际上是 CSS 的变量函数 var() 与 CSS 自定义属性的统称。
奋飛
2023/07/24
2530
深入了解 CSS 变量,让 CSS 创造更多可能!
Web前端开发CSS笔记
CSS引用:直接引用 直接在HTML标签的后面加上style类型声明即可,多个类型请用分号隔开.
王 瑞
2022/12/28
2.5K0
Web前端开发CSS笔记
从零开始学 Web 之 jQuery(四)元素的创建添加与删除,自定义属性
一般 val() 是获取表单的 value 属性; val(值); 设置表单的 value 属性。
Daotin
2018/08/31
2.4K0
从零开始学 Web 之 jQuery(四)元素的创建添加与删除,自定义属性
CSS 自定义属性/变量 (variables)
自定义属性(有时候也被称作CSS 变量或者级联变量)是由 CSS 开发者自行定义的,它包含的值可以在整个文档中重复使用。由自定义属性标记设定值(比如: --main-color: black;),由 var() 函数来获取值(比如: color: var(--main-color);)复杂的网站都会有大量的 CSS 代码,通常也会有许多重复的值。
泯泷、
2024/03/13
2820
每日分享html之2个悬停、2个加载、1个button
1.前端工程师主要利用HMTL与CSS建构页面(其中html构建骨架,css构建样式),用JavaScript获取后端数据以及完善交互以及用户体验。 2.通俗来讲,前端在一个项目里,拿到UI设计师设计的设计稿,然后实现UI设计师设计稿,调用后端程序员给的数据接口以获取数据,然后测试,最后部署上线。 3.前端可以对设计图负责,大部分情况下,不需要特别的去理解业务逻辑,因为我们90后都是玩着十几年手机电脑长大的,十几年的经验足够我们在潜意识里想明白应该怎么做,怎么去一步步实现,会有什么意外情况。 4.我感觉前端发展有个很大的缺陷----晋升问题. 正如第三点所言,作为领导必须对项目有足够的了解,显然是要重点包括业务逻辑,这点上,后端开发者需要涉及数据库逻辑,是必须要跟业务逻辑打交道的(重中之重),因此,大部分的领导岗位都是后端开发者更有晋升的机会。当然,个别公司有专门的前端组长(这也不算什么),如果说前端开发者在自己工作范围之外还要腾出时间去研究业务逻辑,属实是觉得出力不讨好(因为这样的操作需要持续很久才能看出效果),而且再怎么研究业务逻辑也不会比每时每刻跟业务逻辑打交道的后端开发者了解更多。说实在的,大部分情况下,前端在配合后端进行开发.后端需要了解业务逻辑,要跟领导和客户商量细节,露脸机会很大,在老板面前刷脸次数众多。这些都是拉开前后端程序员晋升机会差距的因素。
淼学派对
2022/11/20
1.1K0
每日分享html之2个悬停、2个加载、1个button
博客园 主题自定义美化
在浏览器中直接打开https://files.cnblogs.com/files/JetpropelledSnake/cnblogs.css,然后按ctrl + s,即可将本人博客用到的自定义css下载下来。接着在博客的管理页面,找到文件选项卡,上传刚刚下载的文件:
Jetpropelledsnake21
2019/02/15
1.3K0
相关推荐
HTML5 data-* 自定义属性
更多 >
LV.0
这个人很懒,什么都没有留下~
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验