前端进阶之旅前端进阶之旅
基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
AI 篇
原理篇
每日一题
小程序题库
知识卡片
  • 场景篇按分类整理的大前端场景考点
  • 历年面经按年份追踪真实考点
  • 算法题库NEW在线编码即时判题
  • 专项自测100 题快速查漏
  • 前端基础
    • HTTP从报文一路讲到 HTTPS
    • 浏览器渲染、事件循环、进程
    • 计算机基础Linux、网络、操作系统
  • 进阶专项
    • 设计模式23 种模式怎么用
    • 前端系统进阶学习大型项目工程化
    • 前端综合文章长期沉淀的实践文
  • 工程与工具
    • Node学习指南从环境搭建到服务端
    • NPM工作流script、依赖与发布
    • Docker容器化部署上手
    • Canvas图形与动画实战
  • 路线与导图
    • 思维导图知识点全景图
    • 学习路线按图索骥不跑偏
  • 动态
    • 公众号动态公众号历史文章
    • 博客动态站长的技术博客
    • 开发者导航常用工具与文档站
  • AI 助手随时提问,即时解析
  • AI 模拟面试模拟真实面试 + 报告
  • AI 知识地图串起全站知识点
  • AI 定制路线按你的简历现排
AI 热点
旧版
基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
AI 篇
原理篇
每日一题
小程序题库
知识卡片
  • 场景篇按分类整理的大前端场景考点
  • 历年面经按年份追踪真实考点
  • 算法题库NEW在线编码即时判题
  • 专项自测100 题快速查漏
  • 前端基础
    • HTTP从报文一路讲到 HTTPS
    • 浏览器渲染、事件循环、进程
    • 计算机基础Linux、网络、操作系统
  • 进阶专项
    • 设计模式23 种模式怎么用
    • 前端系统进阶学习大型项目工程化
    • 前端综合文章长期沉淀的实践文
  • 工程与工具
    • Node学习指南从环境搭建到服务端
    • NPM工作流script、依赖与发布
    • Docker容器化部署上手
    • Canvas图形与动画实战
  • 路线与导图
    • 思维导图知识点全景图
    • 学习路线按图索骥不跑偏
  • 动态
    • 公众号动态公众号历史文章
    • 博客动态站长的技术博客
    • 开发者导航常用工具与文档站
  • AI 助手随时提问,即时解析
  • AI 模拟面试模拟真实面试 + 报告
  • AI 知识地图串起全站知识点
  • AI 定制路线按你的简历现排
AI 热点
旧版
首页程序员面试题库CSS linear-gradient 角度与渐变方向
CSS动画与视觉

linear-gradient 里 0deg 是朝上还是朝右?角度怎么影响渐变方向?

linear-gradient 的角度以元素的正上方为起点(0deg),顺时针旋转。0deg 是从下往上渐变,90deg 是从左往右,180deg 是从上往下,270deg 是从右往左。角度指的是渐变线的方向,颜色沿着这条线过渡。

前端进阶之旅 · 一题精讲更新于 2026.09.29
CSS#动画与视觉#动画
先看核心答案读代码示例
理解线索

渐变方向的参照系

  1. 渐变线从元素中心出发,沿指定角度方向延伸的一条线
  2. 角度起点0deg 指向正上方,顺时针增加
  3. 方向关键字to top 等于 0deg,to right 等于 90deg,以此类推

渐变线的长度不固定,它会自动延长到覆盖整个元素,所以同一个角度在正方形和长方形上的视觉效果不一样。

核心回答

先记住这个答案

linear-gradient 的角度以元素正上方为 0deg,顺时针旋转。0deg 表示渐变从底部到顶部,90deg 从左到右,180deg 从顶部到底部,270deg 从右到左。角度定义的是渐变线的方向——颜色沿着这条线过渡,起始颜色在渐变线的反方向,结束颜色在正方向。

  • 0deg 表示从下往上,不是从左往右
  • 角度顺时针旋转,和数学里的逆时针相反
  • 方向关键字 to right 等价于 90deg
  • 非正方形元素上对角线渐变的角度不是 45deg

常见角度和方向关键字的对应

CSS 同时支持角度值和方向关键字两种写法,面试时经常考它们的对应关系。关键字写法的 to 表示渐变的终点方向,比如 to right 是往右渐变,对应 90deg。

四个基本方向CSS
.box-0   { background: linear-gradient(0deg, red, blue); }
/* 从下往上:底部红色 → 顶部蓝色,等价于 to top */

.box-90  { background: linear-gradient(90deg, red, blue); }
/* 从左往右:左边红色 → 右边蓝色,等价于 to right */

.box-180 { background: linear-gradient(180deg, red, blue); }
/* 从上往下:顶部红色 → 底部蓝色,等价于 to bottom */

.box-270 { background: linear-gradient(270deg, red, blue); }
/* 从右往左:右边红色 → 左边蓝色,等价于 to left */

不写角度时默认是 180deg(to bottom),从上往下渐变。linear-gradient(red, blue) 和 linear-gradient(180deg, red, blue) 效果完全一样。

对角线渐变和非正方形的陷阱

写 to top right 或 to bottom left 这种对角线方向时,CSS 的规则和直觉有点不同。

to top right 并不等于 45deg。它的意思是渐变线的方向要保证右上角和左下角分别是纯结束色和纯起始色。在正方形元素上确实是 45 度,但在宽度是高度两倍的矩形上,角度大约是 63 度。

45deg 就是固定的 45 度,不管元素是什么形状。这意味着在长方形元素上,45deg 的渐变线不会刚好经过对角——它只是以中心为原点、从正上方顺时针转 45 度得到的方向。

这个区别在写 UI 时影响不大,但面试里问到「to top right 和 45deg 是不是一样」时就需要区分了。

负角度和超过 360 度的值

角度可以是负数。-90deg 等于 270deg,也就是从右往左。负数就是逆时针旋转。

超过 360 度的值会被等效处理:450deg 和 90deg 效果一样。浏览器不会报错,只是对 360 取模。

还有一个偶尔用到的单位是 turn。0.25turn 等于 90deg,0.5turn 等于 180deg。grad(梯度)也能用,100grad 等于 90deg,但项目里几乎没人用 grad。

回答前,多想一步

容易答错的地方

以为 0deg 是从左往右
很多人把 CSS 的角度和数学坐标系搞混了。数学里 0 度通常指向右边(x 轴正方向),逆时针增加。CSS 渐变的 0deg 指向正上方,顺时针增加。这是最常见的混淆点。
以为 to top right 和 45deg 完全等价
只有在正方形元素上它们效果才一样。在非正方形元素上,to top right 会自动调整角度让渐变线连接对角,而 45deg 永远是固定的 45 度。
试着用自己的话回答

面试官还会怎么问?

渐变线的长度是怎么算的?

渐变线会自动延长,直到它的垂直线能覆盖整个元素。在 0deg 和 180deg 时渐变线长度等于元素高度。在 90deg 和 270deg 时等于元素宽度。在其他角度时长度会大于宽和高中的任何一个。

repeating-linear-gradient 的角度规则和 linear-gradient 一样吗?

完全一样。repeating-linear-gradient 只是在渐变线上做了循环重复,角度、方向关键字的规则和 linear-gradient 没有区别。

怎么用 CSS 渐变画一条斜线?

用两个同色色标放在相邻的位置就行。比如 linear-gradient(45deg, transparent 49%, black 49%, black 51%, transparent 51%) 可以画一条 45 度的黑色斜线。色标之间没有过渡距离就不会有渐变效果,变成硬边。

从一道题,走向一组知识

把知识连起来

动画与视觉

linear-gradient 里两个色标写在同一位置,为什么会出现硬边?

理解了渐变方向之后,色标位置决定了颜色在渐变线上的分布和过渡。

动画与视觉

怎么用 conic-gradient 做一个圆环进度条?

conic-gradient 的角度参照系和 linear-gradient 类似,但颜色是沿圆弧过渡而非沿直线。

参考资料

  • CSS:动画与视觉参考资料

示例用于理解所注明的运行环境与边界;延伸学习可结合原文中的更多案例。

本题目录
  1. 先记住这个答案
  2. 常见角度和方向关键字的对应
  3. 对角线渐变和非正方形的陷阱
  4. 负角度和超过 360 度的值
  5. 容易答错的地方
  6. 面试官还会怎么问
  7. 把知识连起来
读懂,再试着讲出来

先看核心答案,再读代码。最后展开追问,检查自己有没有遗漏边界。

试着回答追问
浏览全部面试题理解原理,也关注真实的使用场景。回到顶部 ↑