そららのクリエイティブログ

ヘッダーイラスト

I LIKE CREATIVE.

【CSSイラスト】三角関数で太陽を描いてみた

HTML・CSSの太陽
こんにちはです。あっちのそららです。
今回は、HTMLとCSS(ウェブ制作などで使う言語)で、太陽を描画してみました。

「Result」で確認できます(レスポンシブ対応済)。

静止画だとシンプルすぎて味気なかったので、遊び心でアニメーションも加えました。
ギザギザ部分は、複数の正方形をつなげて再現。円周上に並べるため、三角関数を使用したので、ざっくり解説します。

正方形を描画する

正方形を10個作り、連番をつける
spanタグで正方形を作ります。数が多いほどギザギザが細かくなりますが、見た目のバランスと計算のしやすさを考慮し、今回は10個としました。

<span style="--i: 0;"></span>
<span style="--i: 1;"></span>
<span style="--i: 2;"></span>
<span style="--i: 3;"></span>
<span style="--i: 4;"></span>
<span style="--i: 5;"></span>
<span style="--i: 6;"></span>
<span style="--i: 7;"></span>
<span style="--i: 8;"></span>
<span style="--i: 9;"></span>


style属性で「i」という名前の変数を定義し、各正方形に0~9の連番を設定しました。この連番は、後の計算に必要となります。

基準位置を決める

全ての正方形を中央に配置
全ての正方形を中央寄せで同じ位置に重ねます。この位置が基準点となります。
中央寄せのCSSは下記のとおり。

.sun_square span {
 position: absolute;
 top: 50%;
 left: 50%;
 translate: -50% -50%;
}


translateの値は、三角関数を使う際に追記することになります。

三角関数で位置を計算

下準備ができたので、ここから三角関数を使用し、正方形を円周上に配置していきます。

.sun_square span {
 --angle: calc(360deg / 10 * var(--i));
 --x: calc(cos(var(--angle)) * 100%);
 --y: calc(sin(var(--angle)) * 100%);
 translate: calc(var(--x) - 50%) calc(var(--y) - 50%);
}


正方形の位置算出と、対応する変数
正方形の位置を算出する3つの変数「angle」「x」「y」を定義します。angleで角度を求め、その結果から正方形のx座標・y座標を計算します。

  • angle
    360度 ÷ 正方形の数 × 連番
  • x
    コサイン関数(angleの値)× 半径
  • y
    サイン関数(angleの値)× 半径

x座標・y座標を算出したら、その値をtranslateに入れます。

円周上に配置された正方形
これで、正方形が円周上に配置されました。

正方形を回転

正方形が全て同じ角度なので、rotateで連番に応じて回転させます。
計算式は「360度 ÷ 正方形の数 × 連番 + 45度」となります。

.sun_square span {
 rotate: calc(360deg / 10 * var(--i) + 45deg);
}


正方形を回転させてギザギザにする

  • 連番0 = 45度
  • 連番1 = 81度
  • 連番2 = 117度
  • 連番3 = 153度

    etc.

これで太陽らしい形になりました。
自分で計算して直接数値を入れてもいいですが、自動計算のほうが効率的で、後々正方形の数を変えたくなったときに、サクッと修正できるメリットがあります。

おわりに

数学をロクに勉強してこなかったので、三角関数への理解はまだまだですが、それなりに扱えるようにしていきたいと思います。

需要があるかは不明瞭。

©2017 Sorara Creative Blog