Je me demande s'il existe un moyen plus facile de créer des divs circulaires que ce que je fais maintenant.
Actuellement, je ne fais que créer une image pour chaque taille différente, mais c'est agaçant de le faire.
Est-ce que CSS utilise toujours pour faire des div qui sont circulaires et que je peux spécifier le rayon?
Voici une démo: http://jsfiddle.net/thirtydot/JJytE/1170/
CSS:
.circleBase {
border-radius: 50%;
behavior: url(PIE.htc); /* remove if you don't care about IE8 */
}
.type1 {
width: 100px;
height: 100px;
background: yellow;
border: 3px solid red;
}
.type2 {
width: 50px;
height: 50px;
background: #ccc;
border: 3px solid #000;
}
.type3 {
width: 500px;
height: 500px;
background: aqua;
border: 30px solid blue;
}
HTML:
<div class="circleBase type1"></div>
<div class="circleBase type2"></div><div class="circleBase type2"></div>
<div class="circleBase type3"></div>
Pour que cela fonctionne dans IE8 et les versions antérieures , vous devez télécharger et utiliser CSS3 PIE . Ma démo ci-dessus ne fonctionnera pas dans IE8, mais c'est uniquement parce que jsFiddle n'héberge pas PIE.htc
.
Ma démo ressemble à ceci:
Si vous définissez le rayon de bordure de chaque côté d’un élément sur 50%, l’affichage du cercle sera créé à n’importe quelle taille:
.circle {
border-radius: 50%;
width: 200px;
height: 200px;
/* width and height can be anything, as long as they're equal */
}
Essaye ça
.iphonebadge {
border-radius:99px;
-moz-border-radius:99px;
-webkit-border-radius:99px;
background:red;
color:#fff;
border:3px #fff solid;
background-color: #e7676d;
background-image: -webkit-gradient(linear, left top, left bottom, from(#e7676d), to(#b7070a)); /* Saf4+, Chrome */
background-image: -webkit-linear-gradient(top, #e7676d, #b7070a); /* Chrome 10+, Saf5.1+, iOS 5+ */
background-image: -moz-linear-gradient(top, #e7676d, #b7070a); /* FF3.6 */
background-image: -ms-linear-gradient(top, #e7676d, #b7070a); /* IE10 */
background-image: -o-linear-gradient(top, #e7676d, #b7070a); /* Opera 11.10+ */
background-image: linear-gradient(top, #e7676d, #b7070a);
filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#e7676d', EndColorStr='#b7070a');
-webkit-box-shadow: 0px 2px 4px #000000; /* Saf3-4 */
-moz-box-shadow: 0px 2px 4px #000000; /* FF3.5 - 3.6 */
box-shadow: 0px 2px 4px #000000; /* Opera 10.5, IE9, FF4+, Chrome 10+ */
display:inline-block;
padding:2px 2px 2px 2px ;
margin:3px;
font-family:arial;
font-weight:bold;
}
C'est effectivement possible.
Voir: Astuce CSS: Comment créer des cercles sans images . Voir demo .
Mais soyez averti, il présente de gros inconvénients en termes de compatibilité, vous êtes en train d'aboyer un chat.
_ {Cela fonctionneici
Comme vous le verrez, il vous suffit de configurer height
et width
à la moitié du border-radius
Bonne chance!
Donnez la largeur et la hauteur en fonction de la taille mais gardez les deux égaux
.circle {
background-color: gray;
height: 400px;
width: 400px;
border-radius: 100%;
}
<div class="circle">
</div>
.fa-circle{
color: tomato;
}
div{
font-size: 100px;
}
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet"/>
<div><i class="fa fa-circle" aria-hidden="true"></i></div>
Je voulais juste mentionner une autre solution qui répond à la question "Un moyen plus facile de créer un cercle div que d'utiliser une image?" qui consiste à utiliser FontAwesome.
Vous importez le fichier css fontawesome ou à partir du CDN ici
et alors vous venez:
<div><i class="fa fa-circle" aria-hidden="true"></i></div>
et vous pouvez lui donner n'importe quelle couleur et n'importe quelle taille de police.
Il y a aussi [la mauvaise idée de] utiliser plusieurs div (20+) horizontales ou verticales 1px pour construire un cercle. Ce plugin jQuery utilise cette méthode pour construire différentes formes.
Vous pouvez utiliser le rayon mais cela ne fonctionnera pas sur IE: border-radius: 5px 5px;
.
Disons que vous avez cette image:
pour en faire un cercle, il suffit d’ajouter
.circle {
border-radius: 50%;
width: 100px;
height: 100px;
}
Donc, si vous avez un div, vous pouvez faire la même chose.
Vérifiez l'exemple ci-dessous:
.circle {
border-radius: 50%;
width: 100px;
height: 100px;
animation: stackoverflow-example infinite 20s linear;
pointer-events: none;
}
@keyframes stackoverflow-example {
from {
transform: rotate(0deg);
}
to {
transform: rotate(360deg);
}
}
<div>
<img class="circle" src="https://www.sitepoint.com/wp-content/themes/sitepoint/assets/images/icon.javascript.png">
</div>
en gros, cela utilise la position absolue de div pour placer un caractère aux coordonnées données. donc en utilisant l'équation paramétrique pour un cercle, vous pouvez dessiner un cercle. si vous deviez changer la position de div en relative, cela produirait une onde sinusoïdale ...
essentiellement, nous traçons des équations en abusant de la propriété de position. Je ne suis pas très bien versé en CSS, donc quelqu'un peut certainement rendre cela plus élégant. prendre plaisir.
cela fonctionne sur tous les navigateurs et les appareils mobiles (que je sache). Je l'utilise sur mon propre site Web pour dessiner des ondes sinusoïdales de texte (www.cpixel.com). la source originale de ce code se trouve ici: www.mathopenref.com/coordcirclealgorithm.html
<html>
<head></head>
<body>
<script language="Javascript">
var x_center = 50; //0 in both x_center and y_center will place the center
var y_center = 50; // at the top left of the browser
var resolution_step = 360; //how many times to stop along the circle to plot your character.
var radius = 50; //how big ya want your circle?
var plot_character = "·"; //could use any character here, try letters/words for cool effects
var div_top_offset=10;
var div_left_offset=10;
var x,y;
for ( var angle_theta = 0; angle_theta < 2 * Math.PI; angle_theta += 2 * Math.PI/resolution_step ){
x = x_center + radius * Math.cos(angle_theta);
y = y_center - radius * Math.sin(angle_theta);
document.write("<div style='position:absolute;top:" + (y+div_top_offset) + ";left:"+ (x+div_left_offset) + "'>" + plot_character + "</div>");
}
</script>
</body>
</html>
Vous pouvez essayer la fonction CSS radial-gradient
:
.circle {
width: 500px;
height: 500px;
border-radius: 50%;
background: #ffffff; /* Old browsers */
background: -moz-radial-gradient(center, ellipse cover, #ffffff 17%, #ff0a0a 19%, #ff2828 40%, #000000 41%); /* FF3.6-15 */
background: -webkit-radial-gradient(center, ellipse cover, #ffffff 17%,#ff0a0a 19%,#ff2828 40%,#000000 41%); /* Chrome10-25,Safari5.1-6 */
background: radial-gradient(ellipse at center, #ffffff 17%,#ff0a0a 19%,#ff2828 40%,#000000 41%); /* W3C, IE10+, FF16+, Chrome26+, Opera12+, Safari7+ */
}
Appliquez-le à une couche div
:
<div class="circle"></div>
Ajout de la propriété css
de:
border-radius: 50%;
à toute div le rend circulaire.