So here is the clean Script way.
HTML:
<div><span>Your text</span></div>
CSS:
*
{
margin: 0;
padding: 0;
}
div
{
display: inline-block;
border: 1px solid black;
border-radius: 50%;
text-align: center;
}
div:before
{
content: '';
display: inline-block;
height:100%;
vertical-align: middle;
}
span
{
vertical-align: middle;
display: inline-block;
}
JQuery:
var width = Math.sqrt($("span").width() * $("span").height());
var sqrt2 = Math.sqrt(2);
$("span").height(width);
$("span").width(width);
$("div").width(sqrt2 * width);
$("div").height(sqrt2 * width);
because of spaces between the word, and how they break.. this solution may bug on small texts.
same HTML & CSS, minor changes in Script
Here's a better solution (works better
even with small texts)
JQuery:
var div = $("div");
var span = $("span");
span.width(Math.sqrt(span.width() * span.height()));
span.width(Math.sqrt(span.width() * span.height()));
div.width(Math.sqrt(2) * span.width());
div.height(div.width());
the reason that I repeat that line
span.width(Math.sqrt(span.width() * span.height()));
its because the more I use it, the better I scale of the span around the text. (causing the circle to be tighter around the text)
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…