45° 深度补偿
squircle · 44px
匹配对角线方向的切入深度,补偿较激进
算法补偿(面积匹配)
squircle · 41px
匹配圆角切掉的面积,补偿更温和
仅 border-radius(降级效果)
24px
不支持 corner-shape 的浏览器看到的效果
corner-shape 未补偿
squircle · 24px
直接使用相同 radius,不做任何补偿
四种方案对比:两种补偿策略 / 无 corner-shape 降级 / 未补偿原始效果
匹配对角线方向的切入深度,补偿较激进
匹配圆角切掉的面积,补偿更温和
不支持 corner-shape 的浏览器看到的效果
直接使用相同 radius,不做任何补偿
想象从矩形的角点沿 45° 对角线画一条线,这条线与圆角曲线的交点到角点的距离,就是「切入深度」。
superellipse(k) 当 k > 1 时,曲线比标准圆弧更「饱满」,同样 radius 下 45° 处的切入深度更浅。这种补偿通过放大 border-radius,让超椭圆曲线在 45° 方向切到和标准圆弧一样深的位置。
r = R × (1 - 2-0.5) / (1 - 2-1/(2k))
特点:补偿较激进,圆角整体偏大,但对角线方向的「圆角深度感」与降级效果一致。
从角点画一个 r×r 的正方形区域,圆角曲线会「切掉」其中一部分。这块被切掉的面积,就是人眼感受到的「圆角大小」。
超椭圆曲线更饱满,同样 radius 下切掉的面积更小(因为曲线更贴近角点)。这种补偿通过放大 border-radius,让超椭圆切掉的面积等于标准圆弧切掉的面积。
r = R × √( (1 - π/4) / (1 - Γ(1+1/(2k))² / Γ(1+1/k)) )
特点:补偿更温和,基于整体面积感知,视觉上更自然,圆角大小感与降级效果更接近。
如何选择?看上方四个方块,哪种补偿后的效果(左上 / 右上)与降级效果(左下)视觉差异最小,就用哪种。通常面积补偿更稳妥,深度补偿则在对角线方向更精准。