5个好用的 CSS 函数
作者:Milos Protic 译者:前端小智 来源:devinduct
简介
CSS 包含了许多函数,而且它能够完成许多早期需要用 JavaScript才能完成的事情。每年都有新的特性被添加进来,这让我们的开发更加轻松,也减少了对JavaScript的依赖。CSS 函数是它所具有的最强大的特性之一,在本文中,我将介绍一些我认为有用的函数。
attr()
attr
函数用于获取所选元素的属性值。 它接受三个参数,属性名称
,类型
和默认值
。
语法: attr( attribute-name <type-or-unit>? [, <fallback> ]? )
事例:
<p data-text="the attr function"
data-tooltip="Hi from attr!" class="attr">This text is combined with</p>
css
p::after {
content: ' ' attr(data-text);
}
p.attr:hover::after {
content: ' ' attr(data-tooltip);
background-color: orange;
color: white
}
效果:
源码:https://codepen.io/protic_milos/pen/GRpYJKd
calc()
这个函数使我们能够计算CSS值,而不是指定确切的值。通常用于计算元素的大小或位置。它支持加法、减法、乘法和除法。
需要特别注意重要一点是+
和-
运算符必须用空格隔开,不然无法正常工作。*
和/
运算符不有这限制,但出于一致性的考虑,建议添加空格。
另外,很棒的是,我们可以混合CSS单位,例如,我们可以减去百分比和像素。
我们可以用calc
构建一个带有居中元素的示例:
<p class="calc">Centered with calc</p>
css
p.calc {
padding: 10px;
background-color: orange;
color: white;
width: 200px;
text-align:center;
margin-left: calc(50% - 100px)
}
效果:
源码:https://codepen.io/protic_milos/pen/GRpYJKd
var()
通过这个函数,我们可以使用一个自定义属性的值作为另一个CSS属性的值。简单地说,我们可以定义一个颜色,例如,将它放在自定义属性(CSS变量)中,然后通过调用var
函数重用该属性值。
与CSS变量一起,该函数提高了可维护性并减少了重复。一个用例是为网站创建主题。
此函数接受两个参数,即自定义属性和一个默认值,如果出现问题,将使用它们。
:root {
--bg-color: green;
--color: white
}
p.var {
background-color: var(--bg-color);
color: var(--color)
}
效果:
源码:https://codepen.io/protic_milos/pen/GRpYJKd
counter()
就我个人而言,我从未使用过这种方法,但它看起来是很有趣。这个函数返回指定计数器的当前值,需要与 counter-reset
和counter-increment
配合使用。
我们可以用它来计算其他元素,比如有序列表。
<div class="counter">
<span>Mars</span>
<span>Bounty</span>
<span>Snickers</span>
</div>
源码:https://codepen.io/protic_milos/pen/GRpYJKd
circle()
这个函数创建一个圆形区域来屏蔽它所应用的元素。你可以指定它的半径和位置。通常与图像一起使用来创建圆角形状。此函数是clip-path
属性值。
另外,值得一提的是,除了圆之外,您还可以创建椭圆和多边形形状。
<img class="circle"
src="https://devinduct.com/Uploads/PostImages/1122dcb9-954a-4641-9ca6-c38e9472698f.png"
/>
css
img.circle {
clip-path: circle(30%);
}
源码:https://codepen.io/protic_milos/pen/GRpYJKd
总结
正如我之前多次提到的,在很多情况下,开发人员都忽视了CSS的可能性,因此失去了web站点的简单性。每一年我们都可以依靠CSS为我们提供所需的设计能力,这很好,JavaScript 应该把注意力放在其他事情上,而不是设计上。
- qq侧滑
- Novell 发布Mono 1.2 推动.NET跨平台
- 【Java SE】Java NIO系列教程(十一) Pipe
- 仿qq最新侧滑菜单
- 【高能】用PyMC3进行贝叶斯统计分析(代码+实例)
- 【Java SE】Java NIO系列教程(十二)Java NIO与IO
- 【贝叶斯系列】预测未来回报的交易算法基于Bayesian cone
- android viewgroup事件分发机制
- Rafy 领域实体框架示例(1) - 转换传统三层应用程序
- android view事件分发机制
- Rafy 领域实体框架演示(2) - 新功能展示
- ormlite介绍一
- 从Encoder到Decoder实现Seq2Seq模型(算法+代码)
- 【Java SE】Java NIO系列教程(六) Selector
- HTML 教程
- HTML 简介
- html div 标签介绍
- html span 标签介绍
- html a 超链接标签
- HTML Br换行标签介绍
- HTML P段落标签介绍
- HTML br与p标签区别
- Html H 标题标签
- html px em pt长度单位
- HTML form 标签
- HTML radio 单选框
- HTML B 加粗标签
- HTML strong加粗粗体标签
- HTML em 强调标签
- HTML i 斜体标签
- HTML u下划线标签
- HTML s 删除线标签
- Html img 图片标签
- Html上标注sup与下标注sub标签
- HTML nobr 禁止换行标签
- HTML hr 水平线标签
- HTML label 标签
- HTML input 标签
- HTML textarea 标签
- HTML select下拉列表标签
- HTML checkbox 多选框
- HTML font color 标签
- HTML iframe 框架标签
- HTML Table 表格
- HTML dl dt dd 标签
- HTML ol li有序列表标签
- HTML ul li 无序列表标签
- HTML 注释
- CSS 教程
- CSS 简介
- CSS 语法
- CSS Id 和 Class选择器
- CSS 样式的创建
- CSS background 背景介绍
- CSS 文本样式
- CSS font 字体
- CSS A 链接
- CSS ul ol列表样式
- CSS TABLE 样式
- CSS 框模型
- CSS border 边框
- CSS Outlines 轮廓
- CSS 外边距 Margin
- CSS Padding 内边距
- CSS 分组和嵌套选择器
- CSS 尺寸 (Dimension)
- CSS Display 属性
- CSS Position 定位
- CSS Float 浮动
- CSS 水平对齐(Horizontal Align)
- CSS 组合选择符
- CSS 伪类
- CSS 伪元素
- CSS 导航栏
- CSS 下拉菜单
- CSS 图片廊
- CSS 图像透明/不透明
- CSS sprite 图像拼合技术
- CSS 媒体类型
- CSS 属性选择器
- CSS 实例
- python剪切文件
- 设计模式(一):Android 源码中的单例模式
- Flask(数据库操作 十一)
- Golang | 既是接口又是类型,interface是什么神仙用法?
- 剑指offer第11题:机器人运动范围
- SQL 查找是否"存在",别再 count 了,很耗费时间的!
- 【LeeCode 中等 字节 python3】567. 字符串的排列
- Spark实现WordCount的几种方式总结
- Redis6之pub/sub发布与订阅(对比List和Kafka)
- SpringBoot原理?属性配置?在这里
- 【LeeCode 中等 矩阵】面试题 01.07. 旋转矩阵
- pytest文档44-allure.dynamic动态生成用例标题
- Java自动化测试(TestNg参数化 11)
- 宋宝华:论Linux的页迁移(Page Migration)上集
- 火遍全网的自热火锅哪款最好吃?我们用Python告诉你!