当前位置: 首页 > news >正文

重拾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系列文章中&#xff0c;欢迎阅读指正 在计算机编程中&#xff0c;函数有着重要的作用和意义&#xff0c;它可以实现封装&#xff0c;复用&#xff0c;模块化&#xff0c;参数等功能效果&#xff0c;在如何在CSS中写变量&#xff1f;一文带你了解前端样式利…...

经纬恒润与奇瑞汽车签订新能源项目重点供应商合作协议,共同开启合作新篇章

近日&#xff0c;2024年国家级芜湖经开区汽车零部件生态大会成功举行&#xff0c;经纬恒润受邀出席&#xff0c;与行业各伙伴齐聚经开区&#xff0c;同绘发展蓝图&#xff0c;助力经开区汽车产业高质量发展。会上&#xff0c;经纬恒润与奇瑞汽车签署合作协议&#xff0c;成为奇…...

@RestController和@Controller

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

STM32-寄存器DMA配置指南

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

【Django】anaconda环境变量配置及配置python虚拟环境

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

保障企业数据主权:安全可控的爬虫工具与管理平台

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

NC重建二叉树

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

2025第十九届中国欧亚国际军民两用技术及西安国防电子航空航天暨无人机展

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

电子邮件协议详解

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

C++客户端Qt开发——Qt窗口(工具栏)

2.工具栏 使用QToolBar表示工具栏对象&#xff0c;一个窗口可以有多个工具栏&#xff0c;也可以没有&#xff0c;工具栏往往也可以手动移动位置 ①设置工具栏 #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封装

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

DLMS/COSEM中公开密钥算法的使用_椭圆曲线加密法

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

argon主题调整日记

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

Godot入门 05收集物品

创建新场景&#xff0c;添加Area2D节点&#xff0c;AnimatedSprite2D节点 &#xff0c;CollisionShape2D节点 添加硬币 按F键居中&#xff0c;放大视图。设置动画速度设为10FPS&#xff0c;加载后自动播放&#xff0c;动画循环 碰撞形状设为圆形&#xff0c;修改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多得多&#xff0c;所以一定是html包python最优&#xff01;于是引出今天的模板。 大体分为三个步骤&#xff1a;…...

Java连接Redis和SpringBoot整合Redis

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

快速入门Jupyter notebook

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

JavaSec-RCE

简介 RCE(Remote Code Execution)&#xff0c;可以分为:命令注入(Command Injection)、代码注入(Code Injection) 代码注入 1.漏洞场景&#xff1a;Groovy代码注入 Groovy是一种基于JVM的动态语言&#xff0c;语法简洁&#xff0c;支持闭包、动态类型和Java互操作性&#xff0c…...

FFmpeg 低延迟同屏方案

引言 在实时互动需求激增的当下&#xff0c;无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作&#xff0c;还是游戏直播的画面实时传输&#xff0c;低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架&#xff0c;凭借其灵活的编解码、数据…...

pam_env.so模块配置解析

在PAM&#xff08;Pluggable Authentication Modules&#xff09;配置中&#xff0c; /etc/pam.d/su 文件相关配置含义如下&#xff1a; 配置解析 auth required pam_env.so1. 字段分解 字段值说明模块类型auth认证类模块&#xff0c;负责验证用户身份&am…...

【学习笔记】深入理解Java虚拟机学习笔记——第4章 虚拟机性能监控,故障处理工具

第2章 虚拟机性能监控&#xff0c;故障处理工具 4.1 概述 略 4.2 基础故障处理工具 4.2.1 jps:虚拟机进程状况工具 命令&#xff1a;jps [options] [hostid] 功能&#xff1a;本地虚拟机进程显示进程ID&#xff08;与ps相同&#xff09;&#xff0c;可同时显示主类&#x…...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

基于matlab策略迭代和值迭代法的动态规划

经典的基于策略迭代和值迭代法的动态规划matlab代码&#xff0c;实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...

Typeerror: cannot read properties of undefined (reading ‘XXX‘)

最近需要在离线机器上运行软件&#xff0c;所以得把软件用docker打包起来&#xff0c;大部分功能都没问题&#xff0c;出了一个奇怪的事情。同样的代码&#xff0c;在本机上用vscode可以运行起来&#xff0c;但是打包之后在docker里出现了问题。使用的是dialog组件&#xff0c;…...

JavaScript基础-API 和 Web API

在学习JavaScript的过程中&#xff0c;理解API&#xff08;应用程序接口&#xff09;和Web API的概念及其应用是非常重要的。这些工具极大地扩展了JavaScript的功能&#xff0c;使得开发者能够创建出功能丰富、交互性强的Web应用程序。本文将深入探讨JavaScript中的API与Web AP…...

【Android】Android 开发 ADB 常用指令

查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...

4. TypeScript 类型推断与类型组合

一、类型推断 (一) 什么是类型推断 TypeScript 的类型推断会根据变量、函数返回值、对象和数组的赋值和使用方式&#xff0c;自动确定它们的类型。 这一特性减少了显式类型注解的需要&#xff0c;在保持类型安全的同时简化了代码。通过分析上下文和初始值&#xff0c;TypeSc…...