CSS如何编写一个带折角效果的便签纸_利用线性渐变在右上角切出一个三角形作为折角

2次阅读

用 linear-gradient 在右上角切三角形折角,核心是通过 to bottom left 方向的渐变在顶层覆盖出小三角形,需 background-size 固定、渐变尺寸约 15px、多层背景中折角层置前,或用 ::after 伪元素独立控制更稳妥。

CSS 如何编写一个带折角效果的便签纸_利用线性渐变在右上角切出一个三角形作为折角

linear-gradient 在右上角切出三角形折角

核心是把背景层拆成两部分:主色区域 + 右上角的透明(或浅色)三角形,用一个 linear-gradient 模拟“裁切”效果。不是真裁剪,而是靠渐变色过渡出视觉上的缺口。

关键在角度和位置控制:从右上角出发,向左下方向铺一个很小的三角形渐变,让它颜色和父容器背景一致(比如白色),就能“盖住”一部分内容,形成折角错觉。

  • 必须设 background-size 为固定值(如 100% 100%),否则渐变会平铺重复,破坏三角形形状
  • 渐变方向写成 to bottom left 最稳,比角度数值(如 225deg)更直观、兼容性更好
  • 起始色块要足够小(比如 15px 15px),否则三角形太大,像缺了一大块而不是折角

background 多层叠加时的顺序和层级陷阱

CSS 背景层是从后往前绘制的:第一个声明的背景在最底层,最后一个在最上层。折角必须放在顶层,否则会被主背景盖掉。

常见错误是把折角渐变写在主背景色前面,结果完全看不见;或者忘了加 background-color,导致折角区域透出父级背景,看起来像错位而不是折角。

立即学习 前端免费学习笔记(深入)”;

  • 正确顺序:background: linear-gradient(……), #fff;(渐变在前,纯色在后)
  • 更稳妥写法:background: linear-gradient(to bottom left, transparent 0, transparent 14px, #fff 15px), #fff;
  • 如果容器有边框或阴影,折角层不会自动继承,得单独给伪元素或额外容器加

用伪元素 ::after 实现更干净的折角控制

纯背景渐变难微调旋转、阴影或点击区域,而用 ::after 伪元素画三角形,能独立定位、加 transform、甚至 hover 动画。

原理一样是线性渐变,但把它抽成独立图层,不干扰主内容流,也不怕背景色覆盖问题。

  • 设置 position: absolute,右上角对齐:top: 0; right: 0;
  • 宽高设为 0,靠 borderlinear-gradient 构造三角形(推荐后者,更可控)
  • 示例:background: linear-gradient(-135deg, #f8f8f8 0, #f8f8f8 8px, transparent 9px); width: 24px; height: 24px;
  • 注意 z-index:伪元素默认在内容上方,但若父容器有 overflow: hidden,可能被裁掉

IE 和旧版 Safari 下 linear-gradient 的兼容写法

IE10+ 支持标准 linear-gradient,但必须带 -ms- 前缀;Safari 6.1 之前只认 -webkit-linear-gradient,且角度方向逻辑相反(top left 对应 to bottom right)。

现在多数项目已不需兼容 IE,但如果真要保,别只加前缀——旧引擎对多背景层支持差,容易整个背景失效。

  • 最低安全写法:background: #fff; background: linear-gradient(to bottom left, transparent 0, transparent 14px, #fff 15px), #fff;
  • 不推荐补全所有前缀,因为 Safari 旧版的 -webkit- 渐变语法和现代差异大,容易引入新 bug
  • 真正要兼容 IE 的场景,建议改用 SVG 折角图标,更稳定
折角看着简单,但像素级对齐、多背景层顺序、以及旧浏览器里渐变方向的反直觉表现,是最容易反复调试的地方。

星耀云
版权声明:本站原创文章,由 星耀云 2026-03-18发表,共计1558字。
转载说明:转载本网站任何内容,请按照转载方式正确书写本站原文地址。本站提供的一切软件、教程和内容信息仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。
text=ZqhQzanResources