Як намалювати коло на html-сторінці?


Відповіді:


187

Ви не можете намалювати коло як таке. Але можна зробити щось ідентичне колу.

Вам доведеться створити прямокутник із закругленими кутами (через border-radius), які становлять половину ширини / висоти кола, який ви хочете зробити.

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


6
По-друге, ви можете приклеїти & nbsp; всередині цього <div>, щоб переконатися, що він відображається. В іншому випадку браузер може ігнорувати його.
ryanoshea

14
Я думаю, що ця відповідь неправильна, оскільки в ній ви не можете намалювати коло в HTML5. Полотно - це елемент HTML5, і ви МОЖЕТЕ намалювати коло в HTML5 ( w3schools.com/html/html5_canvas.asp )
jkj

19
використання -webkit-border-radius: 100%; -моз-границя-радіус: 100%; межі-радіус: 100%; таким чином вам потрібно лише чітко визначити ширину та висоту, щоб застосувати зміни в майбутньому
Аркадій

3
вам потрібно додати межу, щоб зробити її видимою.
хакан

4
Я виявив, що border-radius: 50%;добре працював, міняв розмір за бажанням. Для кольору можна використовувати background-colorабо border.
Гримех

76

Це цілком можливо в HTML 5 . Ваші варіанти: Вбудований SVG та <canvas>тег .

Щоб намалювати коло у вбудованому SVG:

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

Коло в <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

Ви можете скористатися кількома кодами Unicode:

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

Більше фігур тут .

Ви можете накладати текст на кола, якщо хочете:

Ви також можете використовувати спеціальний шрифт (наприклад, цей ), якщо хочете мати більше шансів на те, що він виглядати однаково в різних системах, оскільки не на всіх комп'ютерах / браузерах встановлені однакові шрифти.


19

border-radius:50% якщо ви хочете, щоб коло підлаштовувалося під будь-які розміри контейнера (наприклад, якщо текст змінної довжини)

Не забудьте -moz-і -webkit-префікси!


1
Ви повинні переконатися, що і ширина, і висота рівні, інакше це створить овал.
Hp93

9

Станом на 2015 рік, ви можете зробити його і відцентрувати текст за допомогою всього 15 рядків 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>

Без будь-якого -webkit-s це працює на IE11, Firefox, Chrome і Opera, і це дійсні HTML5 (експериментальні) та CSS3.

Те саме на MS Edge (2020).



4

Ви можете використовувати атрибут border-radius, щоб надати йому радіус кордону, еквівалентний радіусу кордону елемента. Наприклад:

<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>

(Причиною використання розширень -moz та -webkit є підтримка до-CSS3-фінальних версій Gecko та Webkit.)

На цій сторінці є більше прикладів . Що стосується вставлення тексту, ви можете це зробити, але ви повинні пам’ятати про позиціонування, оскільки в більшості браузерних моделей прокладки все ще використовується зовнішній квадрат.


4

Технічно немає способу намалювати коло за допомогою HTML (немає <circle>тегу HTML), але можна намалювати коло.

Найкращий спосіб намалювати його - додати border-radius: 50%до тегу, такого як div. Ось приклад:

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

4

border-radius: 50%;перетворить усі елементи в коло, незалежно від розміру. Принаймні, до тих пір, поки height і width ціль однакова, інакше вона перетвориться на овал .

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

Примітка : префікси браузера більше не потрібні для радіусу межі


Можна clip-path: circle();також перетворити елемент у коло. Навіть якщо елемент має більше , widthніж height(або навпаки), він все одно буде стати колом, а НЕ овал.

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

Примітка : кліп-шлях ще не підтримується всіма браузерами


Ви можете розмістити текст всередині кола, просто записавши текст всередині тегів цілі,
наприклад:

<div>text</div>

Якщо ви хочете централізувати текст у колі, ви можете зробити наступне:

#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
Дякуємо, що згадали про кліп-шлях!
umbe1987

3

Ви можете скористатися властивістю радіус кордону або зробити div з фіксованою висотою та шириною та фоном із колом png.


2

Просто виконайте наступне в тегах сценарію:

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

І там ви йдете, ви отримали своє коло.


Якою це мова повинна бути? ОП запитала про HTML5 та CSS3.
Клаус Вільке

Це можна зробити в HTML , використовуючи тег сценарію я думаю , що я згадував в першій лінії @ClausWilke
Dan

Надайте повний приклад, який показує, як ви використовуєте це всередині HTML-документа. Дивіться цю відповідь для прикладу того, як виглядає повний приклад.
Клаус Вільке

Я думаю, що це повинно допомогти тому, що ви не змогли зрозуміти, чи хочете, я можу додати зображення результату, як виглядає коло. . .
Ден

Не потрібно. Я помістив його в фрагмент коду. Він запускається при натисканні на кнопку.
Клаус Вільке


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>

простий і початківець :)


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
Хоча цей код може відповісти на питання, надаючи додатковий контекст щодо того, чому та / або як він відповідає на питання, значно покращить його довгострокове значення. Будь ласка , змініть свій відповідь , щоб додати деякі пояснення.
Toby Speight

0

Якщо ви використовуєте sass для написання CSS, ви можете зробити:

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

Які виходи:

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

Спробуйте тут: https://www.sassmeister.com/

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.