HTML et CSS Fluide Cercle
Je suis en train de créer un fluide cercle à l'aide de HTML et CSS. Je suis presque fait, mais comme il doit être fluide et le contenu à l'intérieur est dynamique, c'est l'évolution de sa forme de cercle, d'ovale, et d'autres.
CSS:
body {
position: relative;
}
.notify {
position: absolute;
top: 100%;
left: 20%;
background: red;
border: 2px solid white;
border-radius: 50%;
text-align: center;
}
.notify > div {
padding: 20px;
}
HTML:
<div class="notify">
<div>
12
</div>
</div>
Pouvez-vous m'aider s'il vous plaît?
- Assurez-vous de tester en changeant le texte à l'intérieur de la div de 12 à 100 et etc
- J'ai vu beaucoup de réponses, ce qui suggère l'utilisation de JavaScript afin de faire un carré ratio d'aspect de l'élément pour un 50% rayon des frontières. J'ai récemment écrit un billet de blog sur la façon dont cela peut être fait uniquement avec du CSS: ansciath.tumblr.com/post/7347495869/css-aspect-ratio
- Oh, et Safari ne permet pas encore de traiter une frontière rayon spécifié comme un pourcentage.
Vous devez vous connecter pour publier un commentaire.
La
border-radius:50%
hack qui vous êtes à l'aide fait l'hypothèse que le<div>
est place avant l'arrondi des coins appliquée, sinon il va produire un ovale, plutôt que d'un cercle, exactement comme vous l'avez remarqué.Par conséquent, si vous voulez le cercle de rester circulaire que le contenu se développe, vous devez ajuster dynamiquement la hauteur pour correspondre à la largeur. Vous auriez probablement besoin d'utiliser le Javascript pour atteindre cet objectif.
Aussi, veuillez noter que
border-radius
n'est pas pris en charge dans les anciennes versions de IE, de sorte que les utilisateurs avec IE6, IE7 ou IE8 ne verrez pas votre cercle à tous. (si il y a un hack pour cela appelé CSS3Pie)Bien sûr, le réglage de la
height
aura l'effet secondaire de la prise de l'élément de prendre plus d'espace à la verticale. Cela peut ne pas être ce que vous voulez; vous pouvez le cercle de la même taille, indépendamment de ce que le contenu est en elle? Dans ce cas, vous devez corriger la hauteur et la largeur du cercle, et de donner le contenuposition:absolute;
pour l'empêcher d'affecter la taille de son parent.Une alternative à l'utilisation de la
border-radius
hack pour produire un cercle serait l'utilisation de SVG. SVG est un vecteur format graphique qui est intégré dans la plupart des navigateurs.De nouveau, à l'exception notable de IE8 et plus tôt, mais IE prend en charge un autre format appelé VML. Divers scripts existent qui peut convertir entre les formats SVG et VML, de sorte que vous pouvez produire une solution de navigateur avec SVG plus de Javascript.
Si nous allons accepter le Javascript est une partie de la solution, vous pouvez simplement utiliser une bibliothèque javascript pour l'attirer en premier lieu. Ma suggestion serait Raphaël, qui génère SVG ou VML graphique selon le navigateur, il est en cours d'exécution.
Espère que ça aide.
Vous devez définir
width
etheight
au maximum de ces deux, afin de rendre un carré, avec 50% rayon des coins, des résultats dans un cercle.Vous pouvez le faire en jQuery:
Essayer de modifier le contenu (à la fois en largeur et en hauteur) ici
Exemple d'un fluide cercle en utilisant seulement l'HTML et du CSS. Comme mentionné dans mes commentaires à la question, la technique est expliqué dans mon post de blog. Aussi, comme mentionné, Safari ne permet pas actuellement de jouer à nice avec une bordure rayon spécifié comme un pourcentage.
La manière
Jose Rui Santos
ne vous pouvez atteindre votre objectif. Mais faire quelques changements dans votre css.Comme enlever le rembourrage de
.notify > div
et ajouter des styles comme ceci:et ajouter rembourrage en
.notify
classe comme ceci:et Jquery code comme mentionné par
Jose Rui Santos
:Voir le travail de Démonstration: http://jsfiddle.net/2j5Ek/63/
Forcer la hauteur maximale et le poids par la mise en
max-width:XXpx; max-height:XXpx
va faire le travail.Veuillez noter que vous devrez peut-être utiliser CSS3
word-wrap: break-word;
pour casser les mots. Compatibilité inter-navigateur peut être un problème.vous avez besoin d'un moyen de faire appliquer hauteur /largeur sinon il suffit d'aller ovale... c'est possible!
sur ce html
ce script jQuery devrait le faire..
content inside is dynamic
. Cela signifie qu'il peut changer la largeur ou la hauteur. Pourquoi devrait toujours être la largeur > hauteur?