どんな画面幅でも崩れない、フレキシブルな円の作りかたです。

完成形

まるです

HTML

<div class="circle_width">
	<div class="circle_height">
		<p>まるです</p>
	</div>
</div>

1行目 横幅を制御するためのコンテナ
2行目 高さをつけるコンテナ
3行目 中に入れたい要素

CSS

.circle_width {
表示したい横幅を決める
width: 25%;

線をつける
border: 3px solid #333;

要素の角をなくす
50%でまんまるになる
border-radius: 50%;
}

.circle_height {
内包する要素の基準にする
position: relative;

paddingの%指定は親要素の横幅に依存する
padding-top: 100%にすることで親要素の横幅と同じ長さになる
親要素が正方形になる
padding-top: 100%;

要素自体の高さがあるとずれるので高さを0にする
height: 0;
}

.circle_height p {
要素のたかさをなくす
position: absolute;

正方形の幅-文字の高さ/2 で上下真ん中に要素がくる
top: calc((100% - 1em)/2);

要素伸ばす
left: 0;
right: 0;

pタグ初期値のmarginを無効に
margin: 0;

文字中央寄せ
text-align: center;
}