Làm thế nào để vẽ vòng tròn trong trang html?


Câu trả lời:


186

Bạn không thể vẽ một vòng tròn mỗi se. Nhưng bạn có thể làm một cái gì đó giống hệt với một vòng tròn.

Bạn sẽ phải tạo một hình chữ nhật với các góc tròn (thông qua border-radius) bằng một nửa chiều rộng / chiều cao của vòng tròn bạn muốn thực hiện.

    #circle {
      width: 50px;
      height: 50px;
      -webkit-border-radius: 25px;
      -moz-border-radius: 25px;
      border-radius: 25px;
      background: red;
    }
<div id="circle"></div>


6
Ở ý nghĩ thứ hai, bạn có thể muốn dán & nbsp; bên trong <div> để đảm bảo nó được hiển thị. Nếu không, trình duyệt có thể bỏ qua nó.
ryanoshea

14
Tôi nghĩ rằng câu trả lời này là sai vì nó nói rằng bạn không thể vẽ một vòng tròn trong HTML5. Canvas là một phần tử HTML5 và bạn CÓ THỂ vẽ một vòng tròn trong HTML5 ( w3schools.com/html/html5_canvas.asp )
jkj

19
sử dụng -webkit-Border-radius: 100%; -moz-viền-bán kính: 100%; bán kính biên giới: 100%; bằng cách này, bạn chỉ cần tối ưu hóa chiều rộng và chiều cao để áp dụng các thay đổi của mình trong tương lai
Arkady

3
bạn phải thêm đường viền để làm cho nó hiển thị.
Hakan

4
Tôi thấy sử dụng border-radius: 50%;làm việc tốt, thay đổi kích thước như mong muốn. Đối với màu sắc, bạn có thể sử dụng background-colorhoặc border.
Grimeh

76

Nó hoàn toàn có thể có trong HTML 5 . Tùy chọn của bạn là: SVG nhúng<canvas>thẻ .

Để vẽ vòng tròn trong SVG nhúng:

<svg xmlns="http://www.w3.org/2000/svg">
    <circle cx="50" cy="50" r="50" fill="red" />
</svg>

Khoanh tròn vào <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()
<canvas id="circlecanvas" width="100" height="100"></canvas>


53

Có một vài vòng tròn unicode bạn có thể sử dụng:

* { font-size: 50px; }
&#x25CB;
&#x25CC;
&#x25CD;
&#x25CE;
&#x25CF;

Nhiều hình dạng hơn ở đây .

Bạn có thể chồng văn bản lên các vòng tròn nếu bạn muốn:

Bạn cũng có thể sử dụng một phông chữ tùy chỉnh (như cái này ) nếu bạn muốn có cơ hội cao hơn nó trông giống nhau trên các hệ thống khác nhau vì không phải tất cả các máy tính / trình duyệt đều cài đặt cùng một phông chữ.


19

border-radius:50% nếu bạn muốn vòng tròn điều chỉnh theo bất kỳ kích thước nào mà container chứa (ví dụ: nếu văn bản có độ dài thay đổi)

Đừng quên -moz--webkit-tiền tố!


1
Bạn phải chắc chắn rằng cả chiều rộng và chiều cao đều bằng nhau, nếu không nó sẽ tạo ra một hình bầu dục.
Hp93

9

Kể từ năm 2015, bạn có thể tạo nó và căn giữa văn bản chỉ với 15 dòng CSS ( Fiddle ):

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;
}
<!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>

Không có bất kỳ -webkit- s , cái này hoạt động trên IE11, Firefox, Chrome và Opera và nó là HTML5 (thử nghiệm) và CSS3 hợp lệ.

Tương tự trên MS Edge (2020).


5

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


4

Bạn có thể sử dụng thuộc tính bán kính đường viền để cung cấp cho nó bán kính đường viền tương đương với bán kính đường viền của phần tử. Ví dụ:

<div style="border-radius 10px; -moz-border-radius 10px; -webkit-border-radius 10px; width: 20px; height: 20px; background: red; border: solid black 1px;">&nbsp;</div>

(Lý do sử dụng các tiện ích mở rộng -moz và -webkit là để hỗ trợ các phiên bản cuối cùng của CSS3 của Gecko và Webkit.)

Có nhiều ví dụ trên trang này . Theo như chèn văn bản, bạn có thể làm điều đó nhưng bạn phải chú ý đến việc định vị, vì hầu hết mô hình đệm hộp của trình duyệt vẫn sử dụng hình vuông bên ngoài.


4

Về mặt kỹ thuật không có cách nào để vẽ một vòng tròn bằng HTML (không có <circle> thẻ HTML), nhưng có thể vẽ một vòng tròn.

Cách tốt nhất để vẽ một cái là thêm border-radius: 50%vào một thẻ như div. Đây là một ví dụ:

<div style="width: 50px; height: 50px; border-radius: 50%;">You can put text in here.....</div>

4

border-radius: 50%;sẽ biến tất cả các yếu tố thành một vòng tròn, bất kể kích thước. Ít nhất, miễn là height width của mục tiêu là như nhau, nếu không nó sẽ biến thành hình bầu dục .

#target{
    width: 100px;
    height: 100px;
    background-color: #aaa;
    border-radius: 50%;
}
<div id="target"></div>

Lưu ý : không cần tiền tố trình duyệt nữa cho bán kính đường viền


Ngoài ra, bạn cũng có thể sử dụng clip-path: circle();để biến một phần tử thành một vòng tròn. Ngay cả khi phần tử có lớn widthhơn height(hoặc ngược lại), nó vẫn sẽ trở thành một hình tròn chứ không phải hình bầu dục.

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

Lưu ý : đường dẫn clip không (chưa) được hỗ trợ bởi tất cả các trình duyệt


Bạn có thể đặt văn bản bên trong vòng tròn, chỉ cần viết văn bản bên trong các thẻ của mục tiêu,
như vậy:

<div>text</div>

Nếu bạn muốn căn giữa văn bản trong vòng tròn, bạn có thể làm như sau:

#target{
    width: 100px;
    height: 100px;
    background-color: #aaa;
    border-radius: 50%;

    display: flex;
    align-items: center;
}

#text{
    width: 100%;
    text-align: center;
}
<div id="target">
    <div id="text">text</div>
</div>


1
Cảm ơn đã đề cập đến clip-path!
umbe1987

3

Bạn có thể sử dụng thuộc tính bán kính đường viền hoặc tạo div với chiều cao và chiều rộng cố định và nền có vòng tròn png.


2

Chỉ cần làm như sau trong các thẻ script:

<!Doctype html>
<html>
<head>
	<title>Circle Canvas</title>
</head>
<body>
	<canvas id="myCanvas" width="300" height="150" style="border:1px solid 
#d3d3d3;">
	<body>
		<script>
			var c = document.getElementById("myCanvas");
			var ctx = c.getContext("2d");
			ctx.beginPath();
			ctx.arc(100, 75, 50, 0, 2 * Math.PI);
			ctx.stroke();
		</script>
    </body>
</body>
</html>

Và ở đó bạn đi bạn có vòng tròn của bạn.


Ngôn ngữ này được cho là gì? OP đã hỏi về HTML5 và CSS3.
Claus Wilke

Điều này có thể được thực hiện trong html bằng cách sử dụng các thẻ script mà tôi nghĩ rằng tôi đã đề cập trong dòng đầu tiên @ClausWilke
Dan

Vui lòng cung cấp một ví dụ đầy đủ sau đó cho thấy cách bạn sử dụng tài liệu này trong tài liệu HTML. Xem câu trả lời này cho một ví dụ về một ví dụ hoàn chỉnh trông như thế nào.
Claus Wilke

Tôi nghĩ rằng điều đó sẽ giúp những gì bạn không thể hiểu nếu bạn muốn tôi có thể thêm một hình ảnh về kết quả của vòng tròn trông như thế nào. . .
Dan

Không cần thiết. Tôi đặt nó vào một đoạn mã. Nó chạy khi bạn nhấp vào nút.
Claus Wilke

2
  1. h1 {
    border: dashed 2px blue;
      width: 200px;
      height: 200px;
      border-radius: 100px;
      text-align: center;
      line-height: 60px;
      
    }
    <h1> <br>hello world</h1>


1
.at-counter-box {
    border: 2px solid #1ac6ff;
    width: 150px;
    height: 150px;
    border-radius: 100px;
    font-family: 'Oswald Sans', sans-serif;
    color:#000;
}
.at-counter-box-content {
    position: relative;
}
.at-counter-content span {
    font-size: 40px;
    font-weight: bold ;
    text-align: center;
    position: relative;
    top: 55px;
}

1
   <head>
       <style>

       #circle{
       width:200px;
       height:200px;
       border-radius:100px;
       background-color:red;
       }
       </style>
   </head>

    <body>
       <div id="circle"></div>
   </body>

đơn giản và mới lạ :)


0

<div class="at-counter-box-content">

  <div class="at-counter-content">

      <span>40%</span>

  </div><!--at-counter-content-->

</div><!--at-counter-box-content-->


3
Mặc dù mã này có thể trả lời câu hỏi, cung cấp ngữ cảnh bổ sung về lý do tại sao và / hoặc cách nó trả lời câu hỏi sẽ cải thiện đáng kể giá trị lâu dài của nó. Vui lòng chỉnh sửa câu trả lời của bạn để thêm một số lời giải thích.
Toby Speight

0

Nếu bạn đang sử dụng sass để viết CSS, bạn có thể làm:

@mixin draw_circle($radius){
  width: $radius*2;
  height: $radius*2;
  -webkit-border-radius: $radius;
  -moz-border-radius: $radius;
  border-radius: $radius;
}

.my-circle {
  @include draw_circle(25px);
  background-color: red;
}

Đầu ra nào:

.my-circle {
  width: 50px;
  height: 50px;
  -webkit-border-radius: 25px;
  -moz-border-radius: 25px;
  border-radius: 25px;
  background-color: red;
}

Dùng thử tại đây: https://www.sassmeister.com/

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.