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

CSS radial-gradient函数详解

目录

基本语法

关键参数详解

1. 渐变形状(Shape)

2. 渐变大小(Size)

3. 中心点位置(Position)

4. 颜色断点(Color Stops)

常见应用场景

1. 基本圆形渐变

2. 椭圆渐变

3. 模拟光源效果

4. 多色渐变

5. 重复放射性渐变

高级技巧

1. 创建圆形光晕

2. 组合多个渐变

3. 实现 3D 球体效果

注意事项

示例代码


radial-gradient() 是 CSS 中用于创建放射性渐变的函数,它会从一个中心点向外扩散形成圆形或椭圆形的渐变效果。与线性渐变(linear-gradient)不同,放射性渐变的颜色过渡是从中心向四周辐射的。

基本语法

css

background: radial-gradient([shape] [size] [at position],color-stop1,color-stop2,...
);
  • 核心参数
    • shape:渐变形状(圆形或椭圆形)。
    • size:渐变的大小(如 closest-sidefarthest-corner)。
    • position:渐变中心点的位置(如 centertop left)。
    • color-stop:颜色断点(如 red 0%blue 100%)。

关键参数详解

1. 渐变形状(Shape)

  • circle:圆形(等宽高)。
  • ellipse:椭圆形(默认值,根据容器比例自适应)。

css

.circle-gradient {background: radial-gradient(circle, red, yellow);
}.ellipse-gradient {background: radial-gradient(ellipse, red, yellow);
}

2. 渐变大小(Size)

控制渐变结束点的位置,可选值:

  • closest-side:渐变到最近的边停止。
  • closest-corner:渐变到最近的角停止。
  • farthest-side:渐变到最远的边停止(默认值)。
  • farthest-corner:渐变到最远的角停止。
  • 具体长度值(如 100px)或百分比(如 50%)。

css

.closest-side {background: radial-gradient(circle closest-side, red, yellow);
}.farthest-corner {background: radial-gradient(circle farthest-corner, red, yellow);
}

3. 中心点位置(Position)

使用 at 关键字指定中心点,语法与 background-position 类似:

  • 关键字(如 at top leftat center)。
  • 长度值(如 at 20px 50px)。
  • 百分比(如 at 30% 70%)。

css

.top-left {background: radial-gradient(circle at top left, red, yellow);
}.custom-position {background: radial-gradient(circle at 20% 80%, red, yellow);
}

4. 颜色断点(Color Stops)

与线性渐变类似,可指定多个颜色及其位置:

css

multi-color {/* 从红到绿到蓝的渐变 */background: radial-gradient(circle, red 0%, green 50%, blue 100%);
}

常见应用场景

1. 基本圆形渐变

css

.circle {background: radial-gradient(circle, #ff9a9e, #fad0c4);
}

2. 椭圆渐变

css

.ellipse {background: radial-gradient(ellipse, #a1c4fd, #c2e9fb);
}

3. 模拟光源效果

css

.light {background: radial-gradient(circle at center, white, rgba(255,255,255,0) 70%);
}

4. 多色渐变

css

rainbow {background: radial-gradient(circle,red 0%, orange 20%, yellow 40%,green 60%, blue 80%, purple 100%);
}

5. 重复放射性渐变

使用 repeating-radial-gradient() 创建重复图案:

css

.stripes {background: repeating-radial-gradient(circle,#f0f0f0,#f0f0f0 10px,#e0e0e0 10px,#e0e0e0 20px);
}

高级技巧

1. 创建圆形光晕

css

.halo {width: 200px;height: 200px;background: radial-gradient(circle,rgba(255,255,255,0.8) 0%,rgba(255,255,255,0) 70%);border-radius: 50%;
}

2. 组合多个渐变

通过 background-image 叠加多个渐变:

css

.combined {background-image: radial-gradient(circle at 10% 20%, rgba(255,94,247,0.4) 0%, rgba(218,255,165,0.4) 90.1%),radial-gradient(circle at 80% 50%, rgba(0,255,255,0.4) 0%, rgba(255,121,0,0.4) 90%);
}

3. 实现 3D 球体效果

css

.ball {width: 100px;height: 100px;background: radial-gradient(circle at 30% 30%,white 0%,#66ccff 20%,#0066cc 100%);border-radius: 50%;box-shadow: 0 5px 15px rgba(0,0,0,0.3);
}

注意事项

  1. 浏览器兼容性
    所有现代浏览器均支持,IE10+ 需要前缀 -webkit-

  2. 性能考虑
    复杂的渐变(如多层叠加、高分辨率)可能影响渲染性能。

  3. 回退方案
    建议为不支持渐变的浏览器提供纯色背景:

    css

    .element {background: #ccc; /* 回退颜色 */background: radial-gradient(circle, #fff, #ccc);
    }
    
  4. 渐变定位与尺寸

    • 使用 circle 时,确保容器是正方形,否则会自动变为椭圆。
    • size 参数可能影响渐变的视觉效果,需根据需求调整。

示例代码

html

预览

<style>.example {width: 300px;height: 200px;margin: 20px;border-radius: 10px;}.basic-circle {background: radial-gradient(circle, #ff5e62, #ff9966);}.custom-size {background: radial-gradient(circle closest-side at 20% 30%, #4facfe, #00f2fe);}.multiple-colors {background: radial-gradient(ellipse,#a18cd1 0%,#fbc2eb 50%,#8ec5fc 100%);}.repeating {background: repeating-radial-gradient(circle,#e66465 0px,#9198e5 20px,#e66465 40px);}
</style><div class="example basic-circle"></div>
<div class="example custom-size"></div>
<div class="example multiple-colors"></div>
<div class="example repeating"></div>

通过组合不同的形状、大小、位置和颜色断点,radial-gradient() 可以创建出丰富多样的视觉效果,从简单的背景到复杂的图案都能轻松实现。

http://www.lryc.cn/news/2404546.html

相关文章:

  • n8n 自动化平台 Docker 部署教程(附 PostgreSQL 与更新指南)
  • 关于datetime获取时间的问题
  • 前端面试五之vue2基础
  • 使用python实现奔跑的线条效果
  • Oracle 审计参数:AUDIT_TRAIL 和 AUDIT_SYS_OPERATIONS
  • Android LinearLayout、FrameLayout、RelativeLayout、ConstraintLayout大混战
  • Unity版本使用情况统计(更新至2025年5月)
  • GPUCUDA 发展编年史:从 3D 渲染到 AI 大模型时代(上)
  • 人机融合智能 | 可穿戴计算设备的多模态交互
  • Impromptu VLA:用于驾驶视觉-语言-动作模型的开放权重和开放数据
  • AI智能体,为美业后端供应链注入“智慧因子”(4/6)
  • 跨平台资源下载工具:res-downloader 的使用体验
  • ps蒙版介绍
  • 数据湖是什么?数据湖和数据仓库的区别是什么?
  • 用Ai学习wxWidgets笔记——在 VS Code 中使用 CMake 搭建 wxWidgets 开发工程
  • 【深度学习新浪潮】如何入门三维重建?
  • Android实现点击Notification通知栏,跳转指定activity页面
  • Codeforces Round 1025 (Div. 2) B. Slice to Survive
  • ubuntu中使用docker
  • 复制与图片文件同名的标签文件到目标路径
  • 【深度学习-Day 24】过拟合与欠拟合:深入解析模型泛化能力的核心挑战
  • [ElasticSearch] DSL查询
  • iview中的table组件点击一行中的任意一点选中本行
  • 《探秘跨网段局域网IP广播:解锁网络通信的新姿势》
  • Kafka 单机部署启动教程(适用于 Spark + Hadoop 环境)
  • maven微服务${revision}依赖打包无法识别
  • 2025年06月07日Github流行趋势
  • WPS中将在线链接转为图片
  • 实战二:开发网页端界面完成黑白视频转为彩色视频
  • 二元函数可微 切平面逼近 线性函数逼近