当前位置:首页 > CSS

用css制作半圆

2026-04-02 04:19:52CSS

使用 CSS 制作半圆

方法一:通过 border-radius 和固定宽高

通过设置元素的 border-radius 为 50%,并结合固定的宽度和高度,可以制作半圆。通常需要将宽度设置为高度的两倍(或反之),并仅对一个角应用圆角。

.half-circle {
  width: 100px;
  height: 50px;
  background-color: #ff6b6b;
  border-radius: 50px 50px 0 0;
}
  • width: 100pxheight: 50px 确保宽度是高度的两倍。
  • border-radius: 50px 50px 0 0 使顶部左右两侧圆角化,底部保持直角。

方法二:通过 clip-path 裁剪

使用 clip-path 可以更灵活地裁剪出半圆形,适用于复杂形状需求。

.half-circle {
  width: 100px;
  height: 100px;
  background-color: #4ecdc4;
  clip-path: circle(50% at 50% 0);
}
  • clip-path: circle(50% at 50% 0) 将元素裁剪为以顶部中心为圆心的半圆。
  • 调整 at 后的坐标可以改变半圆的方向(如 50% 100% 为底部半圆)。

方法三:通过旋转和溢出隐藏

结合 transformoverflow: hidden 实现半圆效果。

.container {
  width: 100px;
  height: 50px;
  overflow: hidden;
}

.circle {
  width: 100px;
  height: 100px;
  background-color: #ff9f1c;
  border-radius: 50%;
  transform: translateY(-50%);
}
  • 外层容器限制高度为半圆高度。
  • 内层圆形通过 transform: translateY(-50%) 上移,隐藏下半部分。

方法四:使用 SVG 内联

直接使用 SVG 绘制半圆,适合需要动态修改或动画的场景。

用css制作半圆

<svg width="100" height="50" viewBox="0 0 100 50">
  <path d="M 0,50 A 50,50 0 0 1 100,50 Z" fill="#2ec4b6" />
</svg>
  • d 属性中的 A 50,50 0 0 1 100,50 定义半径为 50 的半圆弧。
  • Z 闭合路径形成半圆。

注意事项

  • 方向调整:通过修改 border-radius 的顺序(如 0 0 50px 50px)或 clip-path 的坐标可以改变半圆朝向。
  • 浏览器兼容性:clip-path 和 SVG 在现代浏览器中支持良好,但需测试旧版本兼容性。

标签: 半圆css
分享给朋友:

相关文章

css制作图标

css制作图标

使用CSS制作图标的方法 使用伪元素和边框 通过CSS的::before和::after伪元素结合border属性可以创建简单的几何形状图标。例如制作一个三角形: .triangle { w…

css div 制作导航菜单

css div 制作导航菜单

基本导航菜单结构 使用HTML创建一个简单的导航菜单结构,通常使用<ul>和li>列表实现。每个菜单项用<a>标签包裹以实现链接功能。 <div class="n…

css图形制作

css图形制作

CSS 图形制作方法 使用 CSS 可以创建各种基本和复杂的图形,主要通过 border、transform、clip-path 等属性实现。以下是几种常见图形的实现方式: 三角形 通过设置元素的…

css 制作

css 制作

CSS 制作基础 CSS(层叠样式表)用于控制网页的样式和布局。通过CSS,可以定义字体、颜色、间距、背景等视觉效果,使HTML内容更具吸引力。 内联样式 直接在HTML元素的style属性中编写C…

css的制作

css的制作

CSS 的基本概念 CSS(层叠样式表)用于控制网页的样式和布局。通过 CSS 可以定义字体、颜色、间距、背景等视觉效果,使 HTML 结构更美观。 CSS 的引入方式 内联样式:直接在 HTML…

网页制作css

网页制作css

CSS 基础语法 CSS(层叠样式表)用于控制网页的样式和布局。基本语法由选择器和声明块组成: 选择器 { 属性: 值; 属性: 值; } 例如: p { color: blu…