css 线性渐变在页面中显示为不连续的水平色带,根本原因是 body 未占据视口全高,导致渐变被“截断”并重复平铺;只需确保 html 元素高度为 100%,即可让渐变完整渲染。
css 线性渐变在页面中显示为不连续的水平色带,根本原因是 body 未占据视口全高,导致渐变被“截断”并重复平铺;只需确保 html 元素高度为 100%,即可让渐变完整渲染。
当为 <body> 设置 linear-gradient 作为背景时,若页面内容高度不足或容器未明确撑开,浏览器会将 body 视为“仅包裹内容”的非伸展元素。此时,background 默认以 background-repeat: repeat(尽管渐变本身不可重复)的方式在 body 的计算高度内渲染——而该高度往往远小于视口,导致渐变被压缩、采样失真,视觉上呈现为生硬的水平分段或色带(banding),尤其在深色过渡区域尤为明显。
根本解法:确保根容器具备明确的高度上下文
html { height: 100%;}body { margin: 0; min-height: 100vh; /* 推荐:保证至少占满视口 */ background: linear-gradient( 135deg, rgba(45, 20, 44, 1) 0%, rgba(81, 10, 50, 1) 25%, rgba(128, 19, 54, 1) 50%, rgba(199, 44, 65, 1) 75%, rgba(238, 69, 64, 1) 100% );}
✅ 关键说明:
⚠️ 注意事项:
立即学习“前端免费学习笔记(深入)”;
总结:渐变断层不是 CSS 渐变本身的缺陷,而是文档流高度塌陷导致的渲染上下文缺失。通过 html { height: 100%; } + body { min-height: 100vh; } 组合,即可一劳永逸地解决该问题,同时保持响应式与可扩展性。