conic-gradient()通过角度渐变实现旋转色彩效果,区别于线性与径向渐变,适用于饼图、仪表盘、动态加载器及创意背景等视觉设计。

CSS中的
conic-gradient()
要利用
conic-gradient()
linear-gradient
radial-gradient
基本语法结构是这样的:
conic-gradient([from <angle>]? [at <position>]?, <color-stop-list>)
这里有几个关键点:
from <angle>
0deg
90deg
180deg
at <position>
center
50% 50%
100px 50px
top left
<color-stop-list>
red 0deg, yellow 90deg, blue 180deg, green 270deg, red 360deg
red
0deg
yellow
90deg
举个例子,如果想创建一个简单的彩虹色环,我们可以这样做:
立即学习“前端免费学习笔记(深入)”;
.rainbow-circle {
width: 200px;
height: 200px;
border-radius: 50%;
background: conic-gradient(
from 0deg,
red 0deg,
orange 60deg,
yellow 120deg,
green 180deg,
blue 240deg,
indigo 300deg,
violet 360deg
);
}通过调整角度和颜色,我们就能创造出无限多的可能性。它不仅仅是关于色彩,更是关于空间和角度的巧妙运用。
在我看来,
conic-gradient()
linear-gradient
radial-gradient
linear-gradient
radial-gradient
conic-gradient()
举个例子,如果你想做一个简单的进度条,
linear-gradient
radial-gradient
conic-gradient()
利用
conic-gradient()
要创建一个色彩盘,比如一个色相环,我们只需要将光谱中的颜色按照它们在色相环上的顺序,以等分的角度排列即可。例如:
.color-wheel {
width: 250px;
height: 250px;
border-radius: 50%;
background: conic-gradient(
from 0deg,
hsl(0, 100%, 50%) 0deg, /* Red */
hsl(60, 100%, 50%) 60deg, /* Yellow */
hsl(120, 100%, 50%) 120deg, /* Green */
hsl(180, 100%, 50%) 180deg, /* Cyan */
hsl(240, 100%, 50%) 240deg, /* Blue */
hsl(300, 100%, 50%) 300deg, /* Magenta */
hsl(0, 100%, 50%) 360deg /* Back to Red */
);
/* 加上一点阴影,让它看起来更有立体感 */
box-shadow: 0 5px 15px rgba(0,0,0,0.3);
}这里我用了
hsl()
对于仪表盘效果,比如一个汽车的速度表或者一个数据百分比显示,
conic-gradient()
.dashboard-gauge {
width: 200px;
height: 200px;
border-radius: 50%;
background: #eee; /* 背景色,表示未填充部分 */
position: relative;
overflow: hidden; /* 隐藏超出部分 */
}
.dashboard-gauge::before {
content: '';
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
border-radius: 50%;
/* 关键:从0度开始,绿色填充到270度(75%),然后透明 */
background: conic-gradient(
from 0deg,
#4CAF50 0deg 270deg, /* 绿色填充到270度 */
transparent 270deg 360deg /* 剩余部分透明 */
);
}
/* 为了让它看起来像个圆环,可以在上面再盖一层 */
.dashboard-gauge::after {
content: '';
position: absolute;
top: 20px; /* 内环距离外环的边距 */
left: 20px;
width: calc(100% - 40px);
height: calc(100% - 40px);
border-radius: 50%;
background: white; /* 覆盖中心,形成环状 */
}在这个例子中,我们用
::before
0deg
270deg
270deg
360deg * 0.75
::after
conic-gradient()
除了常见的色彩盘和仪表盘,
conic-gradient()
一个我个人觉得很有趣的应用是创建带有角度纹理的背景。我们不一定要用它来做平滑的颜色过渡,而是可以利用其角度特性来模拟某种光影或者材质感。比如,通过快速交替的颜色停止点,我们可以创建出类似木材年轮、指纹或者某种抽象的放射状图案。
.abstract-texture {
width: 300px;
height: 300px;
background: conic-gradient(
from 0deg,
#f0f0f0 0deg 10deg,
#e0e0e0 10deg 20deg,
#d0d0d0 20deg 30deg,
#f0f0f0 30deg 40deg,
/* ...重复更多细小的角度,形成条纹 */
#e0e0e0 350deg 360deg
);
border-radius: 10px;
/* 还可以结合 background-blend-mode 创造更多效果 */
}这种方式可以为UI元素带来独特的背景,避免了单调的纯色或线性渐变。
另一个很酷的应用是制作动态加载指示器或进度条。传统的加载动画通常是旋转的圆圈或点,但
conic-gradient()
.loading-spinner {
width: 60px;
height: 60px;
border-radius: 50%;
background: conic-gradient(
from 0deg,
#4CAF50 0deg 90deg, /* 绿色扇形 */
transparent 90deg 360deg /* 其余透明 */
);
animation: spin 2s linear infinite; /* 旋转动画 */
transform-origin: center;
}
@keyframes spin {
to { transform: rotate(360deg); }
}这个例子创建了一个四分之一圆的绿色扇形,然后通过
animation
conic-gradient
此外,
conic-gradient()
border-image
conic-gradient()
.angled-border-box {
width: 200px;
height: 100px;
background: #fff; /* 内部背景 */
padding: 5px; /* 留出边框空间 */
border-radius: 8px;
background-clip: padding-box; /* 确保背景只在内边距区域 */
border: 5px solid transparent; /* 创建透明边框 */
background-image: conic-gradient(
from 0deg,
#ff7e5f, #feb47b, #ff7e5f 360deg /* 循环渐变 */
);
background-origin: border-box; /* 让渐变应用到边框区域 */
}通过将
conic-gradient
background-image
border-box
background-clip: padding-box
conic-gradient()
以上就是CSS中conic-gradient()函数有何特点?利用锥形渐变创建独特视觉效果的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号