如何在html页面中绘制圆圈?

Ser*_*lov 106 html css geometry css3 css-shapes

你如何使用HTML5和CSS3绘制圆圈?

是否也可以将文字放入?

rya*_*hea 174

你不能画一个圆圈本身.但你可以做一些与圆相同的东西.

您必须创建一个圆角(通孔border-radius)的矩形,它是您想要制作的圆的宽度/高度一半.

    #circle {
      width: 50px;
      height: 50px;
      -webkit-border-radius: 25px;
      -moz-border-radius: 25px;
      border-radius: 25px;
      background: red;
    }
Run Code Online (Sandbox Code Playgroud)
<div id="circle"></div>
Run Code Online (Sandbox Code Playgroud)

  • 使用-webkit-border-radius:100%; -moz-border-radius:100%; border-radius:100%; 这样,您只需要定制宽度和高度,以便将来应用您的更改 (18认同)
  • 我认为这个答案是错误的,因为它说你不能在HTML5中绘制一个圆圈.Canvas是一个HTML5元素,你可以在HTML5中绘制一个圆圈(http://www.w3schools.com/html/html5_canvas.asp) (14认同)
  • 再想一想,你可能想要坚持一个&nbsp; 在<div>里面,以确保它显示出来.否则,浏览器可能会忽略它. (6认同)
  • 你必须添加边框才能使其可见. (3认同)
  • 我发现使用`border-radius:50%;`运行良好,根据需要改变大小.对于颜色,您可以使用`background-color`或`border`. (3认同)

jkj*_*jkj 74

HTML 5中很有可能.您可以选择:嵌入式SVG<canvas>标签.

要在嵌入式SVG中绘制圆形:

<svg xmlns="http://www.w3.org/2000/svg">
    <circle cx="50" cy="50" r="50" fill="red" />
</svg>
Run Code Online (Sandbox Code Playgroud)

圈内<canvas>:

var canvas = document.getElementById("circlecanvas");
var context = canvas.getContext("2d");
context.arc(50, 50, 50, 0, Math.PI * 2, false);
context.fillStyle = "red";
context.fill()
Run Code Online (Sandbox Code Playgroud)
<canvas id="circlecanvas" width="100" height="100"></canvas>
Run Code Online (Sandbox Code Playgroud)


Ale*_*lex 51

您可以使用几个unicode圈子:

* { font-size: 50px; }
Run Code Online (Sandbox Code Playgroud)
&#x25CB;
&#x25CC;
&#x25CD;
&#x25CE;
&#x25CF;
Run Code Online (Sandbox Code Playgroud)

这里有更多形状.

如果您愿意,可以在圈子上叠加文字:

#container {
    position: relative;
}
#circle {
  font-size: 50px;
  color: #58f;
}
#text {
    z-index: 1;
    position: absolute;
    top: 21px;
    left: 11px;
}
Run Code Online (Sandbox Code Playgroud)
<div id="container">
    <div id="circle">&#x25CF;</div>
    <div id="text">a</div>
</div>
Run Code Online (Sandbox Code Playgroud)

如果您希望在不同系统上看起来相同,则可以使用自定义字体(如此),因为并非所有计算机/浏览器都安装了相同的字体.


Lea*_*rou 19

border-radius:50% 如果您希望圆圈调整到容器获得的任何尺寸(例如,如果文本是可变长度)

别忘了-moz--webkit-前缀!

  • 您必须确保宽度和高度相等,否则会创建一个椭圆形。 (2认同)

Mat*_*gro 9

从2015年开始,您可以使用少至15行CSS(小提琴)制作文本并使文本居中:

body {
  background-color: #fff;
}
#circle {
  position: relative;
  background-color: #09f;
  margin: 20px auto;
  width: 400px;
  height: 400px;
  border-radius: 200px;
}
#text {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  color: #fff;
}
Run Code Online (Sandbox Code Playgroud)
<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <title>circle with text</title>

</head>

<body>
  <div id="circle">
    <div id="text">Text in the circle</div>
  </div>
</body>

</html>
Run Code Online (Sandbox Code Playgroud)

没有任何-webkit-s,这适用于Windows7上的IE11,Firefox,Chrome和Opera,它是有效的HTML5(实验性)和CSS3.


小智 5

从技术上讲,没有一种方法可以用 HTML 绘制圆(没有\xe2\x80\x99t<circle> HTML 标记),但可以绘制圆。

\n\n

绘制一个的最佳方法是添加border-radius: 50%到标签,例如div。这里\xe2\x80\x99s 是一个例子:

\n\n
<div style="width: 50px; height: 50px; border-radius: 50%;">You can put text in here.....</div>\n
Run Code Online (Sandbox Code Playgroud)\n


Sun*_*nny 5

.circle{
    height: 65px;
    width: 65px;
    border-radius: 50%;
    border:1px solid red;
    line-height: 65px;
    text-align: center;
}
Run Code Online (Sandbox Code Playgroud)
<div class="circle"><span>text</span></div>
Run Code Online (Sandbox Code Playgroud)


Tha*_*guy 5

border-radius: 50%;将所有元素变成一个圆圈,无论大小。至少,只要 height width 目标都是一样的,否则它会变成一个椭圆形

#target{
    width: 100px;
    height: 100px;
    background-color: #aaa;
    border-radius: 50%;
}
Run Code Online (Sandbox Code Playgroud)
<div id="target"></div>
Run Code Online (Sandbox Code Playgroud)

在浏览器前缀不是不再需要为边界半径


或者,您也可以使用clip-path: circle();将元素变成圆形。即使该元素具有较大的widthheight(或者反过来),它仍然会成为一个圆圈,而不是一个椭圆形。

#target{
    width: 200px;
    height: 100px;
    background-color: #aaa;
    clip-path: circle();
}
Run Code Online (Sandbox Code Playgroud)
<div id="target"></div>
Run Code Online (Sandbox Code Playgroud)

注意并非所有浏览器都(还)支持clip-path


您可以将文本放置在圆圈内,只需将文本写入目标标签内,
如下所示:

<div>text</div>
Run Code Online (Sandbox Code Playgroud)

如果要使圆圈中的文本居中,可以执行以下操作:

<div>text</div>
Run Code Online (Sandbox Code Playgroud)
#target{
    width: 100px;
    height: 100px;
    background-color: #aaa;
    border-radius: 50%;

    display: flex;
    align-items: center;
}

#text{
    width: 100%;
    text-align: center;
}
Run Code Online (Sandbox Code Playgroud)

  • 感谢您提到剪辑路径! (2认同)

dab*_*eng 5

以下是我的9个解决方案。您可以随意将文本插入 divs 或 svg 元素中。

  1. 边界半径
  2. 剪辑路径
  3. html实体
  4. 伪元素
  5. 径向渐变
  6. svg 圆和路径
  7. 画布圆弧()
  8. 图片标签
  9. 预标记

var c = document.getElementById('myCanvas');
var ctx = c.getContext('2d');
ctx.beginPath();
ctx.arc(50, 50, 50, 0, 2 * Math.PI);
ctx.fillStyle = '#B90136';
ctx.fill();
Run Code Online (Sandbox Code Playgroud)
#circle1 {
  background-color: #B90136;
  width: 100px;
  height: 100px;
  border-radius: 50px;
}

#circle2 {
  background-color: #B90136;
  width: 100px;
  height: 100px;
  clip-path: circle();
}

#circle3 {
  color: #B90136;
  font-size: 100px;
  line-height: 100px;
}

#circle4::before {
  content: "";
  display: block;
  width: 100px;
  height: 100px;
  border-radius: 50px;
  background-color: #B90136;
}

#circle5 {
  background-image: radial-gradient(#B90136 70%, transparent 30%);
  height: 100px;
  width: 100px;
}
Run Code Online (Sandbox Code Playgroud)
<h3>1 border-radius</h3>
<div id="circle1"></div>
<hr/>
<h3>2 clip-path</h3>
<div id="circle2"></div>
<hr/>
<h3>3 html entity</h3>
<div id="circle3">&#11044;</div>
<hr/>
<h3>4 pseudo element</h3>
<div id="circle4"></div>
<hr/>
<h3>5 radial-gradient</h3>
<div id="circle5"></div>
<hr/>
<h3>6 svg circle & path</h3>
<svg width="100" height="100">
  <circle cx="50" cy="50" r="50" fill="#B90136" />
</svg>
<hr/>
<h3>7 canvas arc()</h3>
<canvas id="myCanvas" width="100" height="100"></canvas>
<hr/>
<h3>8 img tag</h3>
&nbsp; &nbsp; &lt;img src="circle.png" width="100" height="100" /&gt;
<hr/>
<h3>9 pre tag</h3>
<pre style="line-height:8px;">
     +++
    +++++
   +++++++
  +++++++++
 +++++++++++
 +++++++++++
 +++++++++++
  +++++++++
   +++++++
    +++++
     +++
</pre>
Run Code Online (Sandbox Code Playgroud)