Css画圆弧的方法

一、核心方法 1:border-radius 属性(最常用,适用于矩形 / 正方形的圆角 / 圆弧)

border-radius 是 CSS 绘制圆弧最基础、最高效的方式,本质是为元素的四个角设置圆角(圆弧),支持单独控制每个角,也支持设置椭圆弧。

1. 基本语法
  • 简写形式:border-radius: 左上角 右上角 右下角 左下角;(顺时针顺序,可省略部分值,遵循 CSS 简写规则)
  • 单独控制单个角:border-top-left-radiusborder-top-right-radiusborder-bottom-right-radiusborder-bottom-left-radius
  • 椭圆弧设置:每个角可传入两个值(水平半径 / 垂直半径),用 / 分隔,例如 border-radius: 50px/30px;
2. 关键示例
(1)绘制圆形(正圆弧闭合形态)

当元素为正方形,且 border-radius 设置为 50% 时,可得到完美圆形(本质是四个角的圆弧半径等于正方形边长的一半):

复制代码
.circle {
  width: 100px;
  height: 100px; /* 宽高相等,保证正方形 */
  background-color: #42b983;
  border-radius: 50%; /* 圆角半径为元素宽高的50%,形成圆形 */
}
(2)绘制单个圆角(圆弧)

单独为元素的某个角设置圆弧,适用于局部圆角场景:

复制代码
.single-arc {
  width: 150px;
  height: 80px;
  background-color: #3498db;
  /* 仅左上角设置圆弧,半径30px */
  border-top-left-radius: 30px;
  /* 若要设置椭圆弧:border-top-left-radius: 40px/20px;(水平40px,垂直20px) */
}
(3)绘制矩形的全圆角(四个圆弧)
复制代码
.round-rect {
  width: 200px;
  height: 100px;
  background-color: #e74c3c;
  border-radius: 16px; /* 四个角统一圆弧半径16px */
}
3. 特点
  • 优点:语法简单、性能优异、兼容性极好(支持所有现代浏览器,包括 IE9+)
  • 缺点:仅能基于矩形元素生成圆角 / 圆弧,无法绘制独立的、不闭合的圆弧(如半圆、1/4 圆弧的单独展示,需配合元素裁剪)

二、核心方法 2:CSS clip-path 属性(灵活绘制自定义圆弧 / 不规则弧形)

clip-path 是通过 "裁剪路径" 控制元素可见区域的方式,可绘制更灵活的圆弧形态,支持半圆、1/4 圆弧、自定义弧形等,甚至可以组合多种形状。

1. 核心用法(圆弧相关)

clip-path 常用 ellipse()(椭圆裁剪)、circle()(圆形裁剪)或 path()(自定义 SVG 路径)来实现圆弧效果,其中 path() 支持最灵活的圆弧绘制(需传入 SVG 路径语法)。

2. 关键示例
(1)绘制半圆(上半圆 / 下半圆)
复制代码
/* 下半圆 */
.semi-circle-bottom {
  width: 100px;
  height: 50px;
  background-color: #9b59b6;
  /* clip-path: ellipse(水平半径 垂直半径 at 中心点x 中心点y) */
  clip-path: ellipse(50% 100% at 50% 100%); /* 以元素底部中点为中心,裁剪出下半圆 */
}

/* 上半圆 */
.semi-circle-top {
  width: 100px;
  height: 50px;
  background-color: #f39c12;
  clip-path: ellipse(50% 100% at 50% 0); /* 以元素顶部中点为中心,裁剪出上半圆 */
}
(2)用 path() 绘制自定义圆弧(更灵活)

path() 中使用 SVG 的圆弧指令 A(参数:rx ry x-axis-rotation large-arc-flag sweep-flag x y),可精准控制圆弧的半径、方向、起始点等:

复制代码
.custom-arc {
  width: 200px;
  height: 200px;
  background-color: #1abc9c;
  /* SVG path语法:M(起始点) A(圆弧参数) L(连线) Z(闭合),裁剪出1/4圆弧 */
  clip-path: path('M 100 100 A 80 80 0 0 1 180 180 L 100 180 L 100 100 Z');
}
3. 特点
  • 优点:灵活性极高,可绘制任意形态的圆弧(半圆、1/4 圆弧、不规则弧形等),支持组合多种形状
  • 缺点:语法相对复杂(尤其是 path() 需掌握 SVG 路径基础),兼容性略低于 border-radius(IE 浏览器不支持,现代浏览器需注意部分参数兼容)

三、补充:绘制独立不闭合圆弧(伪元素 / 背景配合)

如果需要绘制不闭合的圆弧 (仅圆弧线条,无填充),可结合 border-radius + border + 元素裁剪,或使用 SVG 配合 CSS,示例:

复制代码
/* 不闭合的半圆弧形边框 */
.arc-border {
  width: 100px;
  height: 50px;
  border: 4px solid #34495e;
  border-top: none; /* 隐藏顶部边框,仅保留底部圆弧边框 */
  border-radius: 0 0 50px 50px; /* 底部圆角形成半圆弧形 */
  background: transparent;
}

总结

  1. 简单圆角 / 圆形 / 矩形圆弧:优先使用 border-radius,语法简单、性能好、兼容性优
  2. 自定义圆弧(半圆、1/4 圆弧、不规则弧形):使用 clip-path,灵活性强
  3. 不闭合圆弧线条:可通过 border-radius + border 裁剪实现,复杂场景可配合 SVG
  4. border-radius 支持椭圆弧(双值语法),clip-path 支持更精准的圆弧控制(path() + SVG 指令)
相关推荐
掘金安东尼1 天前
让 JavaScript 更容易「善后」的新能力
前端·javascript·面试
掘金安东尼1 天前
用 HTMX 为 React Data Grid 加速实时更新
前端·javascript·面试
灵感__idea1 天前
Hello 算法:众里寻她千“百度”
前端·javascript·算法
yinuo1 天前
轻松接入大语言模型API -04
前端
袋鼠云数栈UED团队1 天前
基于 Lexical 实现变量输入编辑器
前端·javascript·架构
cipher1 天前
ERC-4626 通胀攻击:DeFi 金库的"捐款陷阱"
前端·后端·安全
UrbanJazzerati1 天前
非常友好的Vue 3 生命周期详解
前端·面试
AAA阿giao1 天前
从零构建一个现代登录页:深入解析 Tailwind CSS + Vite + Lucide React 的完整技术栈
前端·css·react.js
兆子龙1 天前
像 React Hook 一样「自动触发」:用 Git Hook 拦住忘删的测试代码与其它翻车现场
前端·架构
兆子龙1 天前
用 Auto.js 实现挂机脚本:从找图点击到循环自动化
前端·架构