重拾CSS,前端样式精读-函数(颜色,计算,图像和图形)
前言
本文收录于CSS系列文章中,欢迎阅读指正
在计算机编程中,函数有着重要的作用和意义,它可以实现封装,复用,模块化,参数等功能效果,在如何在CSS中写变量?一文带你了解前端样式利器文章中,我介绍了CSS中的变量的使用方式,通过var函数以及--变量的写法实现了动态修改css的效果。除此之外CSS还提供了哪些函数供开发者使用?
我将CSS的函数分为以下几类方便理解及归类:颜色,计算,图像和图形,渐变,滤镜,变换,其他。本文将详细介绍CSS中颜色,计算,图像和图形函数以及使用方式。更多函数及详细使用参照:CSS 值函数 - CSS:层叠样式表 | MDN
颜色函数
rgb()
定义颜色使用红色(R)、绿色(G)和蓝色(B)三个颜色通道的值,格式为rgb(255,255,255),其中值的范围为0到255。
rgba()
与rgb()功能相似,但增加了一个alpha通道来指定透明度,格式为rgba(255,255,255,0.5),其中最后一个值的范围为0到1表示透明度。
hsl()
使用色相(Hue)、饱和度(Saturation)、亮度(Lightness)来定义颜色,格式为hsl(120,100%,50%)。
hsla()
hsl()的扩展,增加了一个alpha通道来控制透明度,格式为hsla(120,100%,50%,0.3)。
opacity()
控制元素整体的透明度,且透明度的继承方式有所不同,在新版本中常用于rgba()或hsla()函数内。
上述函数的用法如下:
<!DOCTYPE html>
<html lang="zh-CN"><head><meta charset="UTF-8"><title>CSS颜色函数</title><style>.color-box {padding: 20px;margin: 10px 0;color: #fff;text-shadow: 1px 1px 1px #000;border: 1px solid #ddd;/* 添加边框便于观察透明度效果 */}.rgb {background-color: rgb(255, 0, 0);/* 纯红色 */}.rgba {background-color: rgba(0, 255, 0, 0.5);/* 50% 透明度的绿色 */}.hsl {background-color: hsl(240, 100%, 50%);/* 鲜艳的蓝色 */}.hsla {background-color: hsla(60, 100%, 50%, 0.3);/* 30% 透明度的黄色 */}.opacity {background-color: #0000ff;/* 蓝色 */opacity: 0.75;/* 75% 的透明度 */}</style>
</head><body><div class="color-box rgb">这是一个背景为RGB颜色的div。</div><div class="color-box rgba">这是一个背景为带透明度的RGBA颜色的div。</div><div class="color-box hsl">这是一个背景为HSL颜色的div。</div><div class="color-box hsla">这是一个背景为带透明度的 HSLA 颜色的 div。</div><div class="color-box opacity">这是一个背景颜色为蓝色且设置了75%透明度的div。</div>
</body></html>
计算函数
calc()
它允许你在CSS属性值中进行计算。它可以用来加、减、乘以或除以任何数值,并且可以结合使用不同的单位。这是一个强大的函数,因为它允许混合使用百分比、像素、REM等单位,从而实现复杂的布局。
min()
接受一组值作为参数,并返回最小的值。在响应式设计中特别有用,因为它可以帮助确保值不会超出所需的范围。
max()
与min()相反,max()函数从所提供的一系列值中取最大值。这同样适合响应式设计,允许设置一个值不低于某个特定的范围。
clamp()
clamp()函数是min()和max()的结合体,用于将一个值限制在一个范围之内。它接收三个参数:最小值、理想值(通常是一个可变的值,如视口的宽度的百分比),以及一个最大值。
var()
参照文章:如何在CSS中写变量?一文带你了解前端样式利器。用于插入自定义属性的值,这些自定义属性通常称为CSS变量。有一点在之前文章没提到:它接收两个参数,第一个是变量值。第二个是默认值,当变量不存在时就会默认使用第二个值。它们在全局或局部作用域定义,然后可以在文档的任何地方重复使用。
我们同样使用一个html文件对上述函数做个案例介绍
<!DOCTYPE html>
<html lang="zh"><head><meta charset="UTF-8"><title>CSS计算函数</title><style>:root {--main-padding: 10px;/* CSS变量 */}.container {max-width: 800px;margin: 0 auto;padding: var(--main-padding, 20px);/* 使用CSS变量var */border: 2px solid #333;background-color: lightblue;}.dynamic-width {background-color: lightcoral;width: calc(100% - 2 * var(--main-padding));/* 使用calc()计算宽度 */margin: 20px 0;padding: 20px;text-align: center;}.default-width {background-color: lightseagreen;width: var(--main-width, 200px);/* var的第一个参数取不到时,使用第二个参数的默认值 */margin: 20px 0;padding: 20px;text-align: center;}.min-max-example {background-color: lightcyan;width: max(300px, 50%);/* 使用max() */height: min(150px, 25%);/* 使用min() */margin: 20px 0;padding: 20px;text-align: center;}.clamp-example {background-color: lightgreen;width: 100%;padding: 20px;font-size: clamp(12px, 2vw, 18px);/* 使用clamp() */text-align: center;}</style>
</head><body><div class="container"><div class="dynamic-width">文字框(宽度动态计算)</div><div class="default-width">使用默认宽度</div><div class="min-max-example">此框体的宽度不小于300px,且不超过父容器的50%,高度为150px或父容器的25%,取较小值。</div><div class="clamp-example">字体大小会根据视口宽度动态调整,但不会小于12px,也不会超过18px。</div></div>
</body></html>
图像
url()
url用于引入外部资源,如图像或Web字体文件。它通常用于background-image或border-image等属性。
image-set()
image-set允许作者根据屏幕的分辨率提供一组图像。浏览器会选择最适合设备的图像来显示。
图形
以下函数常用于clip-path、offset-path和shape-outside属性中
circle()
circle(<shape-radius>, <position>)函数用于创建剪切路径,形成一个圆形的剪裁区域。
ellipse()
与circle类似,ellipse(<shape-radius>, <position>)函数用于创建椭圆形的剪裁路径。
inset()
inset(top right bottom left round border-radius)函数用于创建一个矩形的裁剪路径,位置参数类型是<length-percentage>,round: 是可选关键词,后面跟着矩形的圆角半径。
polygon()
polygon用于创建多边形的剪裁路径,可以指定多个点来定义多边形的每个角,polygon(<fill-rule>, x1 y1, x2 y2, x3 y3)。
path()
path是用于定义一个复杂的剪裁路径。此函数使用SVG的路径语法来规定一个shape。
我们使用一个例子来介绍一下上述函数,其中图像集背景效果可以使用鼠标滚轮对页面缩放来观察效果
<!DOCTYPE html>
<html lang="zh-CN"><head><meta charset="UTF-8"><title>CSS图像和图形函数</title><style>div {float: left;width: 300px;height: 300px;background-size: cover;text-align: center;line-height: 300px;}.background-image {background-image: url('../img/example.jpg');}.background-image-set {background-image: image-set('../img/example2.jpg' 1x, '../img/example.jpg' 2x);}.clip-path-circle {background: pink;clip-path: circle(50% at 50% 50%);}.clip-path-ellipse {background: lightblue;clip-path: ellipse(50% 25% at 50% 50%);}.clip-path-inset {background: lightseagreen;clip-path: inset(50px 100px 30px 70px round 30px);}.clip-path-polygon {background: lightgreen;clip-path: polygon(50% 0%, 100% 50%, 50% 100%, 0% 50%);}.clip-path-path {background: lightsalmon;clip-path: path('M10 80 Q 95 10 180 80 T 280 80');}</style>
</head><body><div class="background-image">背景图片</div><div class="background-image-set">图像集背景</div><div class="clip-path-circle">圆形裁剪</div><div class="clip-path-ellipse">椭圆裁剪</div><div class="clip-path-inset">矩形裁剪</div><div class="clip-path-polygon">多边形裁剪</div><div class="clip-path-path">复杂裁剪</div>
</body></html>
总结
文章对css的颜色,计算,图像和图形三类函数做了介绍,并且简述了它们的使用方式及效果,希望可以帮助到你。
最后,感谢你看到了这里,如果觉得本篇或者这个系列写的不错,还望三连支持一下,你的支持就是我创作的最大动力,谢谢!
相关代码
myCode: 基于js的一些小案例或者项目 - Gitee.com
参考
CSS 值函数 - CSS:层叠样式表 | MDN
<url> - CSS:层叠样式表 | MDN
相关文章:

重拾CSS,前端样式精读-函数(颜色,计算,图像和图形)
前言 本文收录于CSS系列文章中,欢迎阅读指正 在计算机编程中,函数有着重要的作用和意义,它可以实现封装,复用,模块化,参数等功能效果,在如何在CSS中写变量?一文带你了解前端样式利…...

经纬恒润与奇瑞汽车签订新能源项目重点供应商合作协议,共同开启合作新篇章
近日,2024年国家级芜湖经开区汽车零部件生态大会成功举行,经纬恒润受邀出席,与行业各伙伴齐聚经开区,同绘发展蓝图,助力经开区汽车产业高质量发展。会上,经纬恒润与奇瑞汽车签署合作协议,成为奇…...

@RestController和@Controller
RestController和Controller 在 Spring MVC 中,RestController 和 Controller 是用于定义控制器的注解,但它们有一些重要的区别。下面是对它们的详细解释和示例: Controller Controller 注解用于标记一个类是一个 Spring MVC 控制器&#…...

STM32-寄存器DMA配置指南
配置步骤 在STM32F0xx中文参考手册中的DMA部分在开头给出了配置步骤 每个通道都可以在外设寄存器固定地址和存储器地址之间执行 DMA 传输。DMA 传输的数据 量是可编程的,最大达到 65535。每次传输之后相应的计数寄存器都做一次递减操作,直到 计数为&am…...

【Django】anaconda环境变量配置及配置python虚拟环境
文章目录 配置环境变量配置python虚拟环境查看conda源并配置国内源在虚拟环境中安装django 配置环境变量 control sysdm.cpl,,3笔者anaconda安装目录为C:\ProgramData\anaconda3 那么需要加入path中的有如下三个 C:\ProgramData\anaconda3 C:\ProgramData\anaconda3\Scripts C:…...

保障企业数据主权:安全可控的爬虫工具与管理平台
摘要 在数据驱动的时代,企业对数据的需求日益增长,但如何在保障数据主权的前提下高效采集数据?本文深入探讨了选择安全可控爬虫工具与管理平台的重要性,分析了关键特性,并提出实用建议,助力企业维护数据安…...

NC重建二叉树
系列文章目录 文章目录 系列文章目录前言 前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。 描述 给定节点数为…...

2025第十九届中国欧亚国际军民两用技术及西安国防电子航空航天暨无人机展
2025第十九届中国欧亚国际军民两用技术及西安国防电子航空航天暨无人机展 时间:2025年3月14-16日 地点:西安国际会展中心 详询主办方陆先生 I38(前三位) I82I(中间四位) 9I72(后面四位&am…...

电子邮件协议详解
电子邮件作为互联网通信的重要组成部分,已经成为日常交流不可或缺的一部分。为了确保电子邮件的有效传输和管理,计算机网络使用了多种协议。本文将深入探讨电子邮件协议中的三大核心协议:SMTP、POP3 和 IMAP。我们将详细介绍这些协议的工作原…...

C++客户端Qt开发——Qt窗口(工具栏)
2.工具栏 使用QToolBar表示工具栏对象,一个窗口可以有多个工具栏,也可以没有,工具栏往往也可以手动移动位置 ①设置工具栏 #include "mainwindow.h" #include "ui_mainwindow.h" #include<QToolBar> #include<…...

Python酷库之旅-第三方库Pandas(046)
目录 一、用法精讲 161、pandas.Series.cumsum方法 161-1、语法 161-2、参数 161-3、功能 161-4、返回值 161-5、说明 161-6、用法 161-6-1、数据准备 161-6-2、代码示例 161-6-3、结果输出 162、pandas.Series.describe方法 162-1、语法 162-2、参数 162-3、功…...

element表单disabled功能失效问题
element表单disabled功能失效问题 场景:当需要根据商品状态来判断是否开启disabled来禁用表单时, disabled绑定了对应的值, 但无论商品是哪种状态, 表单都能操作, disabled失效 <el-form-item label"商品分类"><el-selectv-model"form.packagesTypeI…...

react防抖和节流hooks封装
一、防抖和节流概述 防抖(debounce)和节流(throttle)是前端经常用到的工具函数。 在进行窗口的resize、scroll,输入框内容校验等操作时,如果事件处理函数调用的频率无限制,会加重浏览器的负担…...

DLMS/COSEM中公开密钥算法的使用_椭圆曲线加密法
1.概述 椭圆曲线密码涉及有限域上的椭圆曲线上的算术运算。椭圆曲线可以定义在任何数字域上(实数、整数、复数),但在密码学中,椭圆曲线最常用于有限素数域。 素数域上的椭圆曲线由一组实数(x, y)组成,满足以下等式: 方程的所有解的集合构成…...

argon主题调整日记
前言 argon主题是一款由solstice23开发的一款简洁美观的WordPress主题,在使用过程中也发现了几个可以优化的点,在查阅主题文档无果后对其进行以下几点修改。 1、使用子主题 为了避免修改源文件而引起主题更新后修改丢失的问题,还是尽量使用子…...

Godot入门 05收集物品
创建新场景,添加Area2D节点,AnimatedSprite2D节点 ,CollisionShape2D节点 添加硬币 按F键居中,放大视图。设置动画速度设为10FPS,加载后自动播放,动画循环 碰撞形状设为圆形,修改Area2D节点为Co…...

353_C++_Boost.Asio库来处理异步操作
逐行解析这段C++代码。该代码使用了Boost.Asio库来处理异步操作,并且使用了智能指针和线程相关的一些内容。 #include <boost/asio.hpp> #include <memory>这两行代码包含了Boost.Asio库和标准库中的智能指针std::shared_ptr的头文件。 /**********************…...

【Django】django模板与前端技术(html模板)
文章目录 “python包html”还是“html包python”?1.新建模板2.模板语法3.views.py测试 “python包html”还是“html包python”? 在前端页面中html代码比python多得多,所以一定是html包python最优!于是引出今天的模板。 大体分为三个步骤:…...

Java连接Redis和SpringBoot整合Redis
1. Java连接Redis 思考:我们之前操作redis都是通过命令行的客户端来操作。在开发时都是通过java项目操作redis java提高连接redis的方式为jedis。我们需要遵循jedis协议。 java提供连接mysql的方式为jdbc。 1.1 单机模式 引入依赖 <!--引入java连接redis的驱动…...

快速入门Jupyter notebook
快速入门 Jupyter notebook 一、前言(一)优点(二)特点(三)调用运行(四)新建 二、认识界面快捷键(一)三种模式(1)蓝色模式:…...

Java反射详细学习笔记
动态代理 特点 : 无侵入式的给代码增加额外的功能 ; 代理里面就是对象要被代理的方法 ; 通过接口保证,后面的对象和代理需要实现同一个接口 , 接口中就是被代理的所有方法 ; 如何为java对象创建一个代理 : java.lang.reflect.Proxy类 : 提供了为对象产生代理对象的…...

区块链在艺术市场中的创新:数字艺术品的溯源与版权保护
随着数字技术的迅猛发展,数字艺术品正逐渐成为艺术市场的重要组成部分。然而,数字艺术品的复制和版权问题日益突出,传统的版权管理方式面临挑战。区块链技术作为一种去中心化的分布式账本技术,为解决这些问题提供了新的可能性。本…...

智能编程,一触即发:使用AIGC优化CSS——提升前端开发效率与质量
文章目录 一、AIGC在CSS优化中的应用场景智能代码生成自动布局调整性能优化建议样式和色彩建议 二、使用AIGC优化CSS的具体步骤明确需求选择AIGC工具输入描述或设计稿审查和调整集成和测试 三、AIGC优化CSS的优势与挑战优势:挑战: 《CSS创意项目实践&…...

鸿蒙界面开发
界面开发 //构建 → 界面 build() {//行Row(){//列Column(){//文本 函数名(参数) 对象.方法名(参数) 枚举名.变量名Text(this.message).fontSize(40)//设置文本大小.fontWeight(FontWeight.Bold)//设置文本粗细.fontColor(#ff2152)//设置文本颜色}.widt…...

【JavaScript】use strict
“use strict” 声明时,代码将会在严格模式下执⾏。严格模式包含了⼀些额外的规则和限制。 使⽤ “use strict” 的主要作⽤包括: 变量必须声明后再使⽤,不能通过不使⽤关键字创建全局变量不能通过 delete 操作符删除变量(包括对…...

Linux云计算 |【第一阶段】SERVICES-DAY3
主要内容: 分离解析介绍、NTP时间服务、基础邮件服务(MX记录)、部署postfix邮件服务器、自定义YUM仓库 实操提前准备: ① 设置SELinux、关闭防火墙服务(两台主机) [rootsvr7 ~]# getenforce Permissive …...

Java面试八股之Spring-boot-starter-parent的作用是什么
Spring-boot-starter-parent的作用是什么 spring-boot-starter-parent 是Spring Boot项目中的一个特殊POM(Project Object Model),它主要的作用是提供一系列默认的配置和依赖管理,以便简化项目的构建过程。以下是spring-boot-sta…...

Python 和 Boto3 生成 Amazon S3 对象的 HTTPS URL
在使用 Amazon S3 存储服务时,我们经常需要获取存储桶中对象的 HTTPS URL。这篇博文将详细介绍如何使用 Python 和 Boto3 库来实现这一功能。 背景 Amazon S3(Simple Storage Service)是一种广泛使用的云存储服务。在许多场景中,我们需要获取 S3 存储桶中对象的公开访问 …...

V-bind动态绑定style的案例集合
目录 绑定对象 绑定数组 绑定函数 V-bind 动态绑定 Class 的案例集合-CSDN博客 绑定对象 示例代码如下: <!--html--> <p :style="{width:widthVal,height:heightVal,border:borderVal}">段落</p> <!--js--> data(){ ret…...

深度学习守护夜行安全:夜视行人检测系统详解
基于深度学习的夜视行人检测系统(UI界面YOLOv8/v7/v6/v5代码训练数据集) 引言 夜视行人检测在自动驾驶和智能监控中至关重要。然而,由于光线不足,夜间行人检测面临巨大挑战。深度学习技术,特别是YOLO(You…...