美文网首页
CSS 系列-如何画一个半圆?

CSS 系列-如何画一个半圆?

作者: fejavu | 来源:发表于2019-04-01 22:40 被阅读0次

在日常使用 CSS 的过程中,我们经常会遇到非常多种的需求,例如对话框,画三角形,画半圆,圆角矩形,阴影,图文列表,导航栏,水平居中,垂直居中等等。本人结合学习的过程,对一些常见的 CSS 方法进行一个总结,欢迎指正。

画一个半圆

如何去画一个半圆呢?这是张鑫旭在微博里提到的一个问题,很有可能是他在阅文集团面试前端的一个面试问题。首先 CSS 里并没有直接画圆的属性和函数,不使用canvas 和 svg 。


张鑫旭微博截图

先画一个正圆

我们先从简单的入手,先实现一个正圆。实现一个正圆,我们很容易从从常见的 border-radius 入手,因为圆角矩形的圆角到了极限,就是完全没有直线的矩形,就变成了圆形。


.ct {
  width:300px;
  height: 300px;
  border: 1px red solid;
  padding:0;
  margin:10px;
}

.circle {
  margin:0;
  width: 100%;
  height: 100%;
  background-color: rgb(31,135,217);
  border-radius: 50% ;
}

我们先用一个高宽相等的 div 包裹一个 p 或者是另一个高宽相等的块级元素,然后设置被包裹的元素的背景颜色,宽高,最重要的就是设置边框的圆角半径(border-radius),设置成 50%,就是宽高的 50%,这样我们就得到了四个圆角,圆角半径正好是宽高边的一半,就形成一个正圆。

代码与结果

画一个半圆

那如何画一个半圆呢?将正圆的一半切掉?但是一时间想不起来 CSS 有什么直接的函数可以将图形的一半切掉的属性或者函数。

我们可以利用 border-radius 的原理,将相邻的两个边长的 border-radius 设置成相等,而且半径恰好等于另一边边长的一半。因此,我们首先设置一个宽高为二比一的矩形,conainer 和上面正圆的一样:


.half-circle {

  width: 100%;

  height: 50%;

  color: rgb(31,135,217);

  border-radius: 150px 150px 0 0; /* 设置左上角,右上角,右下角,左下角 的圆角半径分别是 150px ,150px 0px 0px,150px刚好等于宽的一半 */
}

半圆代码与结果

这里我们简化了 border-radius 的值,实际上 border-radius 每个角应该有两个值,一个是长轴距一个是短轴距(如下图),就像椭圆里的 a 和 b,只是日常一般用不到,这里就先不深究了,进一步阅读请转到 MDN文档W3C文档

长轴距和短轴距

相关文章

  • CSS 系列-如何画一个半圆?

    在日常使用 CSS 的过程中,我们经常会遇到非常多种的需求,例如对话框,画三角形,画半圆,圆角矩形,阴影,图文列表...

  • 使用css画一些矢量图

    用纯CSS画一些矢量图:比如矩形、原型、半圆、扇形、三角形等等。重要的不是如何实现,而是在实现的过程中发现css还...

  • 一学就会的卡通小鱼,陪娃实用!

    首先画一个这样的半圆。 然后在半圆直线的一侧画一个有一点弧度的三角形,同时可以画出小鱼的嘴部。 在半圆的右侧画一个...

  • 如何用css画三角形&太极

    一、如何用css画一个三角形 搜索学习资源:Google >>css tricks shape >> 画一个如下图...

  • 我的手工作品七星瓢虫

    今天是周二,我的手工作品是一个七星瓢虫。第一步,画一个圆圈再画一个半圆,在大半圆的上面画上两个小半圆。第二步,在大...

  • 如何用 css 画一个心形

    如何用 css 画一个心形 (How to draw hearts using CSS) 用两个长方形切圆角倾斜位...

  • 2018-09-20

    今天我们上美术课,老师说今天天气不好,咱们今天来画几把雨伞。老师先教我们画雨伞,先画一个大半圆。再画一个小半圆。在...

  • 深入border-radius

    在掘金上看到一个话题,如何用border-radius画一个半圆,初看到这个题目觉得应该很简单,于是开始动手写,结...

  • 简单绘画——像精灵的小麻雀

    来张乱画… 先用铅笔画出一个大半圆,再画一个小半圆,就成功完成了,身体构造。不骗人,就是简单。 接着画出翅膀,尾巴...

  • css样式写半圆

    宽高比是2:1,border-radius设置为宽的长度 如图所示:

网友评论

      本文标题:CSS 系列-如何画一个半圆?

      本文链接:https://www.haomeiwen.com/subject/sykibqtx.html