新手刚开始接触 CSS 渐变时,可能会被各种参数绕晕,但别怕,咱们慢慢来。线性渐变是最常用的类型,简单说就是颜色沿着一条直线过渡,这条直线的方向可以任意调整。比如,网页最常见的顶部导航栏渐变背景,大多就是线性渐变的功劳。
linear-gradient(),括号里首先要定义渐变方向。默认是从上到下,也就是to bottom,但如果想让渐变从左到右,就写成to right。更精确的话,还能直接写角度,比如45deg就是斜向右上的渐变方向。接下来就是颜色 stops,比如linear-gradient(to right, #ff0000, #00ff00),这样就会从红色平滑过渡到绿色。linear-gradient(to bottom, #000 20%, #fff 80%),这样黑色会占据前 20% 的空间,白色从 20% 开始到 80% 结束,最后 80% 到 100% 还是白色?不,其实最后一个颜色会自动延伸到结束,所以这里白色会从 20% 一直到 100%,相当于中间 60% 是黑白过渡,最后 20% 是纯白色。刚开始可能会混淆,多试几次就明白了。径向渐变和线性渐变最大的区别,就是它是以一个点为中心向外扩散的,特别适合做按钮的高光效果或者背景的光影层次。语法是
radial-gradient(),默认是从中心向外的圆形渐变,如果想变成椭圆形,就加上ellipse,比如radial-gradient(ellipse at center, #fff, #000)。at top left就是左上角为圆心,at 30% 40%就是坐标 (30%, 40%) 的位置。渐变形状除了圆形、椭圆形,还能指定大小,比如closest-side表示渐变到最近的边,farthest-corner到最远的角落。举个例子,给一个按钮设置径向渐变,圆心在顶部中间,颜色从白色到浅蓝色,瞬间就有了阳光照射的立体感,用户点击欲望都能提升不少。radial-gradient(circle, #ffd700 20%, #ff8c00 50%),金色在 20% 半径内,然后过渡到橙色直到 50% 半径,之外的区域默认是最后一个颜色吗?不,和线性渐变一样,最后一个颜色会延伸到整个区域,所以 50% 半径外都是橙色,这样就能做出中间亮边缘暗的效果,很适合模拟光源。角度渐变其实是线性渐变的一种特殊形式,只不过方向是通过角度精确控制的。比如
0deg是向上,90deg是向右,180deg向下,270deg向左,当然也可以写30deg、120deg这样的角度,让渐变方向更灵活。比如做一个斜向的条纹背景,就可以用角度渐变配合重复渐变函数repeating-linear-gradient()。background: repeating-linear-gradient(45deg, #000 0, #000 25px, #fff 25px, #fff 50px);,这样每 50px 就会重复一次黑白交替,形成条纹效果。角度渐变在背景设计中非常实用,能做出各种几何图案,比如菱形、斜线、网格等,只要调整角度和颜色 stops 的位置,就能创造出无限可能。说了这么多理论,现在该推荐几款好用的在线工具了,毕竟手动写代码容易出错,特别是复杂的渐变参数,有了生成器就能事半功倍。
1. CSS Gradient(https://cssgradient.io/)
2. Canva Gradient Generator(https://www.canva.com/colors/gradient-generator/)
3. Color Hunt Gradient(https://colorhunt.co/gradient)
以 CSS Gradient 为例,详细说说怎么用在线生成器制作一个复杂的径向渐变。
第一步:打开网站进入渐变编辑器
第二步:设置圆心位置和形状
第三步:添加颜色节点
第四步:调整渐变范围
第五步:实时预览和生成代码
background: radial-gradient(at % %, #f0f8ff, #87ceeb, #00008b);
说了这么多,该看看实际应用场景了,毕竟学会了不用等于白学,对吧?
1. 按钮设计
linear-gradient(to bottom, #ffffff, #e0e0e0),再加上边框和阴影,按钮立刻有了立体感。点击状态还可以换一个渐变,比如linear-gradient(to bottom, #e0e0e0, #ffffff),模拟按下的效果,用户体验瞬间提升。2. 背景图替代
3. 文字效果
background-clip: text和-webkit-background-clip: text,比如:h1 {
background: linear-gradient(deg, #ff0000, #00ff00);
-webkit-background-clip: text;
background-clip: text;
color: transparent;
}
4. 图像叠加效果
linear-gradient(rgba(0,0,0,0.5), rgba(0,0,0,0.8))作为背景,覆盖在图片上,再调整透明度和位置,就能做出电影海报那种朦胧的文字效果。Q:为什么我的渐变在某些浏览器上显示不正常?
A:可能是没加浏览器前缀,比如
-webkit-linear-gradient、-moz-linear-gradient,虽然现代浏览器大多支持标准语法,但为了兼容性,最好加上前缀。A:可以用百分比,也可以用像素值,比如
20px,表示从距离起点 20px 的位置开始过渡。注意最后一个颜色不需要指定位置,会自动延伸到结束。A:用
repeating-linear-gradient或者repeating-radial-gradient,参数和普通渐变一样,只是会无限重复,适合做图案背景。A:可以用
at关键字后面跟坐标,比如at center、at top right,也可以用百分比或像素值,比如at 50% 50%就是中心,at 100px 200px就是具体坐标位置。