以前にJavaScriptを使って円周上を移動する処理を別の記事で紹介しましたが、今回はCSSで円周上を移動する処理を実装してみます。
サンプルコード
まずはHTMLですが、.wrapperが表示確認用に円を描画する要素、.circle-frameがCSSで動かす要素、.circleが円周上に配置する要素になります。
<div class="wrapper"> <div class="circle-frame"> <div class="circle"></div> </div> </div>
次にCSSです。
.wrapper {
position: relative;
width: 200px;
height: 200px;
border: #000 2px solid;
border-radius: 100px;
}
.circle-frame {
position: absolute;
top: -5px;
left: calc(50% - 5px);
width: 10px;
height: calc(50% + 5px);
transform-origin: center bottom;
transform: rotate(0deg);
animation: rotate 10s linear infinite;
}
@keyframes rotate {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}
.circle {
width: 10px;
height: 10px;
border-radius: 5px;
background: green;
}
CSSの説明は後述しますが、これで円周上を移動するアニメーションが実装できました。
円周上を移動するアニメーションのデモページ
アニメーションの仕組みは.circle-frameに対して背景色をつけると分かりやすいです。
表示確認用のデモページ
.circle-frameは円の半径と同じ高さ(+ .circleの高さの半分)になるようにして、下部中央が円の中心にくるようにしています。
この状態でtransform-originを center bottom (円の中心)にしてrotate()を変更することで、円周上を移動するようになります。
コメントが承認されるまで時間がかかります。