使用CSS圆锥渐变创建背景图案

news2024/11/27 16:43:45

本文翻译自 How to create background pattern using CSS & conic-gradient,作者: Temani Afif, 略有删改。

拥有一个好的背景图案可以使你的网站设计与众不同。多亏了CSS渐变,我们可以使用几行代码创建花哨炫酷的图案。在这篇文章中,我们将学习conic-gradient并使用它来创建不同的CSS图案。

圆锥梯度如何工作?

圆锥渐变从指定圆心开始,类似于径向渐变,不同之处在于圆锥渐变色标放置在圆的圆周周围,而不是从圆心出现的直线上,从而使颜色在围绕圆心旋转时平滑过渡,而不是从圆心向外过渡。

这是MDN页面上的一张图:

举一个基本的例子来看看它是如何工作的:

background: conic-gradient(at 75% 25%, red, blue, yellow)

我们将中心点放置在X=75%和Y=25%处,然后在红色,蓝色和黄色之间创建颜色过渡。

在大多数情况下,我们不需要平滑的过渡,而是不同的颜色值。要做到这一点,我们需要使颜色从上一个结束的地方开始:

background: conic-gradient(at 75% 25%, red 90deg, blue 90deg 225deg, yellow 225deg)

注意两种颜色(90deg和225deg)之间使用相同的角度。代码可以进一步优化,就像下面这样。

background: conic-gradient(at 75% 25%, red 90deg, blue 0 225deg, yellow 0)

通过指定0(小于前一个值),浏览器将自动使其等于前一个值。这样可以避免我们两次写入相同的值。最终的效果如下:

和上面的效果图保持有相同的中心点,但没有颜色之间的过渡效果。红色填充90deg。蓝色从红色结束的地方开始,一直持续到225deg,所以它填充了135deg。黄色填充了剩余的135deg空间。

如果我们定义一个background-size,我们就创建了一个图案:

这不是一个好看的图案效果,但说明了我们将在本文中使用的技术来构建更好的图案效果!

棋盘图案

我们从一个基本图案开始:

下面的图来理解这种模式的逻辑:

可以看到我们的圆心被放置在背景区域的中心(默认位置),所以我们不需要定义它。然后我们有4种颜色(2白2黑),每种颜色填充90deg(区域比例为25%)。代码为:

background: conic-gradient(#000 90deg, #fff 0 180deg, #000 0 270deg, #fff 0);

继续优化语法使用重复渐变代码:

background: repeating-conic-gradient(#000 0 90deg, #fff 0 180deg);

我们也可以用百分比来代替度数:

background: repeating-conic-gradient(#000 0 25%, #fff 0 50%);

我们要做的就是更新background-size来控制图案显示格子的比例。

background-size: 100px 100px;

Z字形图案

接下来我们创建一个更花哨的图案效果,这次我们将使用两个渐变。

此效果中我们将学习from选项,该选项允许我们控制渐变的旋转。

在上面的例子中,每个渐变都由两种颜色组成。第一种颜色填充90deg,而第二种颜色填充剩余的空间。两种渐变之间的唯一区别是旋转。 第一渐变旋转-45deg,而第二渐变旋转135deg。

这两个梯度加在一起会给予下面的结果。

上面的(1)对应的代码如下:

background:
  conic-gradient(from -45deg,#ECEDDC 90deg,#0000   0),
  conic-gradient(from 135deg,#ECEDDC 90deg,#29AB87 0);
background-size: 100px 100px;

这不是我们想要的结果。为了得到我们想要的结果,我们需要移动第二个渐变代码,如(2)所示,以获得以下代码:

background:
  conic-gradient(from -45deg,#ECEDDC 90deg,#0000   0),
  conic-gradient(from 135deg,#ECEDDC 90deg,#29AB87 0) 50px 0;
background-size: 100px 100px;

50px 0只是第二梯度的background-position50pxbackground-size的一半。

可以通过引入CSS变量进一步优化代码:

--s: 100px; 
  
--_g: #ECEDDC 90deg,#0000 0;
background:
  conic-gradient(from -45deg,var(--_g)),
  conic-gradient(from 135deg,var(--_g)) calc(var(--s)/2) 0,
  #29AB87;
background-size: var(--s) var(--s)

图纸图案

这个图案我们将使用两个类似的梯度,但这次有不同的大小。 除了background-position,我们还将看到使用background-size也可以帮助我们创建图案。

第一梯度定义如下:

设置100px后的background-size最终效果如下:

第二个渐变是相同的,但不是2px 2px,我们使用1px 1px来拥有更细的线条,我们将大小除以5。这将给予我们一个更大的正方形内的小正方形(5x5网格)的逻辑结果。

background: 
 conic-gradient(from 90deg at 2px 2px,#0000 90deg,#366 0) 0 0/100px 100px,
 conic-gradient(from 90deg at 1px 1px,#0000 90deg,#366 0) 0 0/20px  20px;

使用CSS变量的优化代码:

--s: 100px; 
  
--_g: #0000 90deg,#366 0;
background: 
 conic-gradient(from 90deg at 2px 2px,var(--_g)) 0 0/var(--s) var(--s),
 conic-gradient(from 90deg at 1px 1px,var(--_g)) 0 0/calc(var(--s)/5) calc(var(--s)/5);

三角形图案

在这三个简单的图案之后,我们可以使用相同的技术来处理更复杂的图案效果,接下来创建一些三角形图案。

对于这个图案效果可以分解以下的渐变代码:

与Z字形图案类似,我们使用background-position的第二个梯度的偏移,以获得以下代码:

--s: 120px;
  
background:
  conic-gradient(from 150deg at 50% 33%,#FA6900 60deg,#0000 0) 
      calc(var(--s)/2) calc(var(--s)/1.4),
  conic-gradient(from -30deg at 50% 66%,#D95B43 60deg,#ECD078 0);
background-size: var(--s) calc(var(--s)/1.154);

以下还有两个三角形的图案。这里就不一一解析详细的代码实现过程,有兴趣的可以尝试实现看看。

代码可能看起来很复杂,但如果你遵循上面的实现过程,你可以很容易地理解它。

星型图案

为什么不尝试星星的图案呢!

下面是一个逐步演示来说明不同的梯度

正如你所看到的,每一个梯度都很容易理解,所有的组合给了我们一个很好的结果。这就是渐变的力量,我们将基本形状组合在一起,得到一个复杂的图案。

更多的图案效果

在我们结束之前,我们来看看其他的图案效果例子,向你展示conic-gradient()在创建花哨的图案时是多么强大!

结论

在我们看到不同的例子之后,你应该能够使用conic-gradient()创建很酷的模式。你可能会发现这很难,但通过一些练习你会对不同的技术感到舒服,你可以很容易地创建你的图案。

组合不同的渐变是获得更多图案的另一种方法。我做了很多例子,你可以在这个网站css-pattern.com上发现更多有趣的图案效果。


看完本文如果觉得有用,记得点个赞支持,收藏起来说不定哪天就用上啦~

专注前端开发,分享前端相关技术干货,公众号:南城大前端(ID: nanchengfe)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1096814.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

品牌被侵权也可以免费维权了

构成品牌侵权的理由一般有,商标侵权、专利侵权、著作权侵权等,当这些侵权链接持续存在,必然会影响品牌声誉和利益,同时不利于品牌和谐健康的渠道环境构建,低价、假货、窜货也可算作侵权,那何种侵权可以免费…

抖音热搜榜上榜策略

热点事件是抖音热搜榜的常客,要想登上热搜榜,首先要把握住热点,抢占先机。关注时事新闻、娱乐圈动态、社会热点等,结合自己的短视频内容,迅速制作出相关的短视频,以便在话题讨论初期就吸引用户的关注。同时…

获取时间Calendar类(LocalDateTime、LocalDate、LocalTime)

1.Calendar 是一个抽象类,并且构造器是private 2.我们只能通过getInstance()来获取实例 3.里面包含了大量的字段和方法提供给程序员 4. Calendar 没有提供对应的格式化的类,因此需要程序员自己组合来输出(灵活) 5.如果我们想要使用24小时制 Calendar.Hou…

二十五、【色调调整基础】

文章目录 1、亮度/对比度a、亮度b、对比度 2、曝光度3、阈值4、色阶5、反相6、黑白7、渐变映射 1、亮度/对比度 a、亮度 亮度是指画面的明亮程度 b、对比度 对比度指的是一幅图像中,明暗区域最亮和最暗之间不同亮度层级的测量,如下图所示&#xff0…

递归最小二乘法RLS

参考:RLS递归最小二乘法(Recursive Least Squares)_hymwgk的博客-CSDN博客

Springboot3 + knife4j(springdoc) 框架整合

前言 kinfe4j文档地址&#xff1a;https://doc.xiaominfo.com/docs/quick-start springdoc文档地址&#xff1a;https://springdoc.org/#demos 原本使用的是springfox&#xff0c;自Springboot3开始&#xff0c;knife4j引入了springdoc。 Maven引入 <dependency><…

无线设备的天线怎么安装最好?

天线作为无线传输过程中一个必不可少的配件&#xff0c;因此天线的安装和选型对于无线传输的稳定性发挥着至关重要的作用。本文将介绍影响天线安装对于无线通信效果的影响。 一、天线的工作原理 天线是一种能量变换器&#xff0c;它把传输线上传播的导行波&#xff0c;变换成在…

有哪些免费的数据恢复软件?EasyRecovery免费版下载

EasyRecovery作为一款专业的数据电脑恢复软件&#xff0c;它能够轻松搞定数据恢复&#xff0c;恢复丢失和删除的文件&#xff0c;支持电脑、相机、移动硬盘、U盘、SD卡、内存卡、光盘、本地电子邮件和 RAID 磁盘阵列等各类存储设备的数据恢复。这个新版本功能更加强大。目前的最…

54 完全平方数

完全平方数 理解&#xff1a;dp[i] 1 min ⁡ j [ 1 , i ] d p [ i − j 2 ] 1 {\min}_{j[1, \sqrt{i}]}dp[i-j^2] 1minj[1,i ​]​dp[i−j2] (不是贪心)题解1 DP 给你一个整数 n &#xff0c;返回 和为 n 的完全平方数的最少数量 。 完全平方数是一个整数&#xff0c;其值…

信号频谱分析与功率谱密度

当我们涉及无线通信、信号处理和电子设备时&#xff0c;信号频谱分析与功率谱密度是两个至关重要的概念。它们帮助我们理解信号的特性、噪声和频率分布&#xff0c;从而优化通信系统、设计滤波器以及进行故障诊断。本文将初步探讨信号频谱分析与功率谱密度&#xff0c;一起理解…

StarRC:版本陈旧引发的多corner提取RC失败

我正在「拾陆楼」和朋友们讨论有趣的话题&#xff0c;你⼀起来吧&#xff1f; 拾陆楼知识星球入口 运行StarRC提取多corner RC时会遇到提取失败的情况&#xff0c;当分次提取各个corner RC时却成功了&#xff0c;这种时候优先考虑nxtgrd版本陈旧的情况。 debug方法也简单&…

理解LoadRunner,基于此工具进行后端性能测试的详细过程(下)

5、录制并增强虚拟用户脚本 从整体角度看&#xff0c;用LoadRunner 开发虚拟用户脚本主要包括下面四步骤&#xff1a; 识别测试应用使用的协议 录制脚本 完善录制得到的脚本 验证脚本的正确性 识别被测应用使用的协议 如果明确知道了被测系统所采用的协议&#xff0c;可…

java小区物业水电费管理系统springboot+vue

智能小区管理系统被人们投放于现在的生活中进行使用&#xff0c;该款管理类软件就可以让管理人员处理信息的时间介于十几秒之间。在这十几秒内就能完成信息的编辑等操作。有了这样的管理软件&#xff0c;智能小区管理信息的管理就离无纸化办公的目标更贴近了。 这次开发的智能小…

RFID智能制造应用:助力企业提升制造效率!

随着企业间竞争加剧&#xff0c;如何提升企业生产效率&#xff0c;降低成本成为不少制造企业持续追求的目标。利用智能制造中的RFID设备&#xff0c;可以对企业入库、盘点、生产、出库等流程进行监控&#xff0c;本文将探讨智能制造中的RFID设备如何帮助企业提升制造效率&#…

Maven打包知识点

一.前言 今天在工作中需要给测试同学提供一个jar包&#xff0c;里面包含了pom里面得外部依赖&#xff0c;我依旧按照往常得方式进行打包 二.外部依赖变成jar包里面的class 发现打的jar包里面并没有外部依赖。 直接上代码 <plugins><plugin><artifactId>ma…

如何实现前端数据持久化(LocalStorage、IndexedDB等)?

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 欢迎来到前端入门之旅&#xff01;感兴趣的可以订阅本专栏哦&#xff01;这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…

TIA博途软件中如何设置在程序中自动显示变量的注释信息?

TIA博途软件中如何设置在程序中自动显示变量的注释信息? 本例以TIA博途V15为例进行举例说明 如下图所示,新建一个项目后,打开PLC变量表,这里我选择几个变量进行举例说明,给这几个变量添加注释信息, 打开OB1,编写一句简单的程序,如下图所示,可以看到此时变量只显示名称…

第三章 运算符与表达式Pro

三、运算符与表达式 C语言一共有34个运算符&#xff0c;记这些运算符时从以下几个方面记&#xff1a; 运算符的书写形式&#xff1b; 运算符的运算规则;(两个整数相除,结果为整数) 所能进行的操作数&#xff1b;&#xff08;取余运算符%&#xff0c;操作数只能是整数&#xff0…

面试题:Java反射和new效率对比,差距有多大?

文章目录 一、基础概念二、new 对象和反射创建对象的效率对比所以下面我们来探讨一下为什么这么大差别?总结起来有下面几个原因 三、反射和new 的使用场景反射的部分使用场景new对象和反射的区别 一、基础概念 Java中&#xff0c;一般我们创建一个对象可能会选择new一下个实例…

回顾vmware 补充细节

安装好esxi后怎么直接在DCUI界面&#xff08;直接控制台用户界面&#xff09;进入命令行页面 在该界面使用 ALT F1 进入 ALT 退出 I界面&#xff08;直接控制台用户界面&#xff09;用户需要在机房直连服务器上才可以看到该界面 VSphere 在老的CPU是不支持的 三种方式访…