Comment dessiner un cercle dans la page html?

Comment dessiner un cercle en utilisant HTML5 et CSS3?

est-il également possible de mettre du texte à l'intérieur?

93
demandé sur Stewartside 2011-08-03 08:53:57

16 réponses

on ne peut pas dessiner un cercle en soi. Mais vous pouvez faire quelque chose d'identique à un cercle.

Vous devez créer un rectangle avec des coins arrondis (via border-radius ) qui sont la moitié de la largeur/hauteur du cercle que vous voulez faire.

    #circle {
      width: 50px;
      height: 50px;
      -webkit-border-radius: 25px;
      -moz-border-radius: 25px;
      border-radius: 25px;
      background: red;
    }
<div id="circle"></div>
157
répondu ryanoshea 2016-01-26 13:01:12

il est tout à fait possible dans HTML 5 . Vos options sont: Embedded SVG et <canvas> tag .

pour dessiner un cercle dans SVG intégré:

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

Cercle <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>
67
répondu jkj 2016-04-20 15:59:52

il y a quelques cercles unicode que vous pouvez utiliser:

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

plus de formes ici .

Vous pouvez superposer du texte sur les cercles, si vous voulez:

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

vous pouvez également utiliser une police personnalisée (comme celui ) si vous voulez avoir une plus grande chance de le regarder la même sur systèmes différents puisque tous les ordinateurs / navigateurs n'ont pas les mêmes polices installées.

47
répondu Alex 2016-10-10 15:23:54

border-radius:50% si vous voulez que le cercle s'ajuste aux dimensions du conteneur (par exemple si le texte est de longueur variable)

N'oubliez pas les préfixes -moz- et -webkit- !

18
répondu Lea Verou 2011-08-03 20:45:48

à partir de 2015, vous pouvez le faire et centrer le texte avec aussi peu que 15 lignes de CSS ( violon ):

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>

sans aucun -webkit- s, cela fonctionne sur IE11, Firefox, Chrome et Opera, sur Windows7, et il est valide HTML5 (expérimental) et CSS3.

7
répondu MattAllegro 2016-01-26 12:45:58

vous pouvez utiliser l'attribut border-radius pour lui donner un border-radius équivalent au border-radius de l'élément. Par exemple:

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

(la raison d'utiliser les extensions-moz et-webkit est de prendre en charge les versions pré-CSS3-finales de Gecko et Webkit.)

il y a d'autres exemples sur cette page . Aussi loin que l'insertion de texte, vous pouvez le faire, mais vous devez être conscient de positionnement, comme la plupart des navigateurs boîte rembourrage modèle utilise toujours le carré extérieur.

4
répondu fluffy 2011-08-03 04:59:49

il n'y a pas techniquement de façon de dessiner un cercle avec HTML (il n'y a pas de balise HTML <circle> ), mais un cercle peut être dessiné.

la meilleure façon d'en dessiner un est d'ajouter border-radius: 50% à une étiquette telle que div . Voici un exemple:

<div style="width: 50px; height: 50px; border-radius: 50%;">You can put text in here.....</div>
4
répondu lachlanjc 2015-07-16 23:37:47

vous pouvez utiliser la propriété border-radius, ou faire une div avec une hauteur et une largeur fixes et un arrière-plan avec un Cercle png.

3
répondu Bardt 2015-07-29 18:59:08

.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>
3
répondu Sunny 2017-04-27 03:50:07

il suffit de faire ce qui suit dans le script tags:

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

et voilà, vous avez votre cercle.

2
répondu Dan 2017-12-19 07:21:15
.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
répondu shashi kumar 2016-05-31 11:14:20

  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
répondu Mukhtar 2016-08-31 14:01:06
   <head>
       <style>

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

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

simple et novice :)

1
répondu 2017-06-13 05:16:00

border-radius: 50%; transformera tous les éléments en un cercle, quelle que soit leur taille. Au moins, aussi longtemps que les height 1519150920" et width de la cible sont les mêmes, sinon il se transformera en un ovale .

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

Note : les préfixes de navigateur sont Non nécessaire plus pour le rayon de bordure


vous pouvez aussi utiliser clip-path: circle(); pour transformer un élément en cercle. Même si l'élément a une plus grande width que height (ou l'inverse), il deviendra un cercle, et pas un ovale.

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

en fait, vous pouvez utiliser clip-path à transformer des éléments en toutes sortes de formes

Note : clip-path est pas (encore) pris en charge par tous les navigateurs


vous pouvez placer du texte à l'intérieur du cercle, simplement en écrivant le texte à l'intérieur des balises de la cible,

comme ainsi:

<div>text</div>

Si vous voulez centre texte dans le cercle, vous pouvez faire ce qui suit:

#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
répondu Peter Prakker 2018-05-16 09:54:51

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

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

      <span>40%</span>

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

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

0
répondu shashi kumar 2016-05-31 11:01:58

si vous utilisez sass pour écrire votre CSS vous pouvez faire:

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

qui produit:

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

Essayez ici: https://www.sassmeister.com/

0
répondu Rimian 2017-05-29 01:04:13