CSS border-radius 生成器,免费
通过可视化方式创建圆角并复制 CSS。
预设
使用方法
- 拖动滑块以调整每个圆角的半径。
- 启用「联动所有圆角」可一次性修改全部圆角。
- 选择单位(px、%、rem、em)。
- 点击「复制 CSS」将该属性复制到剪贴板。
常见问题
如何做成圆形?
将所有圆角设为 50%(使用「圆形 / 胶囊」预设)。要得到完美圆形,请将其应用于正方形元素。
最大半径是多少?
滑块最多到 100。以 px 为单位时即 100 px。以 % 为单位时,100% 表示该圆角完全弯曲。您可以根据设计切换单位。
理解border-radius简写
CSS的border-radius属性定义于W3C CSS Backgrounds and Borders Module Level 3。其简写形式接受最多四个值用于圆形角,或最多八个值(以斜杠分隔)用于椭圆角。角的顺序是固定的:左上、右上、右下、左下,从左上角顺时针方向,正如读取时钟表盘的方式。规范没有歧义:「如果省略bottom-left,则与top-right相同。如果省略bottom-right,则与top-left相同。如果省略top-right,则与top-left相同。」
| 值 | 含义 | 示例 |
|---|---|---|
| 1个值 | 四个角 | border-radius: 12px |
| 2个值 | TL+BR取第一值;TR+BL取第二值 | border-radius: 12px 4px |
| 3个值 | TL=第一值;TR+BL=第二值;BR=第三值 | border-radius: 12px 8px 4px |
| 4个值 | TL TR BR BL顺时针 | border-radius: 12px 8px 4px 0 |
| 8个值(带/) | 水平半径 / 垂直半径(椭圆角) | border-radius: 30% 70% 70% 30% / 30% 30% 70% 70% |
四个单角长写属性允许您精确定位单个角而无需编写其他角:border-top-left-radius、border-top-right-radius、border-bottom-right-radius、border-bottom-left-radius。每个属性接受一个值(圆形角)或两个值(椭圆x y)。
像素、百分比与50%技巧
W3C规范定义了百分比的解析方式:「水平半径的百分比参照border box的宽度,而垂直半径的百分比参照border box的高度。」这产生了一个重要结论:border-radius: 50%只有在元素为正方形时才能创建完美的圆形。在200×100的矩形上,每个角50%会产生一个椭圆:100px水平半径(宽度的一半)和50px垂直半径(高度的一半)。
何时选择哪种单位:
- 像素(
px):精确的固定角,不随元素缩放。最适合按钮、卡片和一致的UI组件。 - 百分比(
%):随元素缩放。对形状变化的组件使用50%来获得圆形或椭圆形。 em/rem:随字体大小缩放。适用于角半径应随内部文本增长的按钮。calc():混合单位,例如calc(8px + 0.5em)可提供随文本大小微妙缩放的基础值。
胶囊形技巧
将border-radius设置为大于元素最短边一半的值会将每个角夹紧为真正的半圆,无论宽度如何都产生胶囊形状。惯例是border-radius: 9999px,任何大到现实中元素都不会超过的数字。这就是为什么Bootstrap的.rounded-pill使用50rem(约800px),而Tailwind v4的rounded-full解析为calc(infinity * 1px):两者都在编码同一个思想,即大于盒子的数字可以保证在任何元素上产生胶囊形。
椭圆角与有机Blob形状
八值(带斜杠)形式是设计师用于创建有机、不对称「blob」形状的方式,这类形状在主视觉插图和装饰背景中日益流行。每个角在斜杠前获得不同的水平半径,在斜杠后获得不同的垂直半径,产生不受圆弧限制的曲线。
/* Asymmetric blob */
.blob {
width: 280px;
height: 280px;
background: linear-gradient(135deg, #6366f1, #ec4899);
border-radius: 30% 70% 70% 30% / 30% 30% 70% 70%;
}
RTL布局的逻辑属性变体
CSS Logical Properties Module Level 1引入了四个适应书写方向的逻辑长写属性:
border-start-start-radius:LTR英语中为左上角,RTL阿拉伯语/希伯来语中为右上角。border-start-end-radius:LTR中为右上角,RTL中为左上角。border-end-start-radius:LTR中为左下角,RTL中为右下角。border-end-end-radius:LTR中为右下角,RTL中为左下角。
当同一组件在两种阅读方向下都必须看起来对称时非常有用:例如,聊天气泡的「口」角应始终位于说话者一侧,而不总是在左侧。请注意,目前还没有逻辑属性简写,因此您必须单独编写所有四个长写属性才能选择RTL感知的角。
边框较粗时的外边缘与内边缘
半径应用于边框的外边缘。浏览器会自动为内边缘计算一个较小的同心半径,使边框在角处不显得不连续。实际影响:16px外半径配合2px边框的内半径约为14px,因此边框看起来像一个四周厚度恒定的框架。如果您希望背景颜色在边框内边缘处停止而非渗入其下,请设置background-clip: padding-box。
实用尺寸惯例
| UI元素 | 典型半径 | 备注 |
|---|---|---|
| 卡片 | 8-12 px | Material 3中等 = 12 px;许多设计系统介于8到16之间。 |
| 按钮(商务风格) | 4-8 px | 轻微圆角读起来专业而不失轻松。 |
| 按钮(消费者/胶囊形) | 9999px | 读起来更友好;用胶囊形技巧锁定。 |
| 输入框/表单字段 | 4-8 px | 与按钮半径匹配以保持视觉一致性。 |
| 模态框/对话框 | 12-16 px | 较大的表面能承受更大的半径而不显得幼稚。 |
| 标签/徽章 | 4px或胶囊形 | 明确的风格选择:锐角或全圆角,鲜有居中状态。 |
| 头像 | 50% | 将其应用于正方形元素可获得完美的圆形。 |
| 移动端底部弹层 | 16-24 px(仅顶角) | 使用单独的长写属性,使底角保持与屏幕边缘齐平。 |
| 主视觉Blob背景 | 八值形式 | 例如30% 70% 70% 30% / 30% 30% 70% 70%。 |
常见错误
- 对非正方形元素使用50%并期望得到圆形。矩形上的50%是椭圆。要么保持元素为正方形,要么使用
border-radius: 9999px来获得真正的胶囊形。 - 忘记角的顺序。简写是从左上角顺时针方向(TL TR BR BL)。两值形式设置对角线相对的成对角,容易记错。
- 负值。规范将其定义为无效;浏览器会静默地夹紧为零。如果某个角的圆角效果不符合预期,请检查是否意外进行了减法。
- 圆角父元素泄漏子元素。具有
border-radius的元素默认不会裁剪其后代。如果您希望子元素在圆角边缘处停止,请在父元素上添加overflow: hidden。 - 单角属性放在简写之前。CSS层叠是顺序敏感的,因此
border-top-left-radius后跟border-radius会覆盖单角值。请将简写放在前面,然后是单角覆盖。 - 混用
%和px显得笨拙。在一个角上设置50%半径,在另一个角上设置12px,很少产生设计师所期望的效果。每个元素保持一种单位。 - 表格与
border-collapse: collapse。MDN参考文档明确指出:当边框折叠时,border-radius不适用于table或inline-table元素。要么切换到border-collapse: separate,要么将半径应用于包裹元素。
更多常见问题
为何我的图片没有获得圆角?
如果图片位于具有border-radius的容器内但角仍然看起来是方形的,则父元素没有进行裁剪。向父元素添加overflow: hidden。或者,直接将border-radius应用于<img>元素;图片原生响应该属性。
border-radius会影响性能吗?
可忽略不计。现代浏览器在GPU上渲染圆角,成本与直角基本相同。例外情况是每帧动画化大型元素上的border-radius(可能触发层重合成),但静态圆角实际上是免费的。
这在旧版浏览器中能使用吗?
可以。自IE9起,每个浏览器都支持无前缀的border-radius。逻辑属性变体(border-start-start-radius等)较新:Chrome 89+、Firefox 66+、Safari 15+。对于需要逻辑行为的旧版浏览器,请编写一个小型@supports块作为回退。
如何制作聊天气泡?
使用四个单角长写属性将三个角设为圆角,第四个设为小角或直角。那就是指向说话者的「口」角。例如,发出消息的气泡:border-radius: 16px 16px 4px 16px;。对于支持RTL的气泡,切换为逻辑长写属性,使口角随阅读方向翻转。
为何我的胶囊形按钮在不同元素宽度下看起来不均匀?
胶囊形将每个角夹紧为最短边的一半,对于典型按钮来说是高度。因此较短的按钮获得较小的半径,较高的按钮获得较大的半径。这是预期行为。如果您希望每个按钮无论大小都有恒定的半径,请使用固定像素值(例如border-radius: 24px)代替胶囊形技巧。
可以将CSS直接复制到Tailwind/Bootstrap项目中吗?
可以,生成的CSS是没有预处理器或框架依赖的纯标准语法。在Tailwind v4中,您还可以将任意值写成工具类(rounded-[12px]或rounded-[30%/70%]),如果您喜欢保持工具类风格的话。