Ruby on rails で星を散らす
はじめに
railsで、リロードする度に見え方が変わる星空を再現してみます
作成したWebアプリにも採用しています。
実行
最初に次のファイルを用意します。
.sky
.stars
.sky{
background-color: #014; //黒っぽければなんでもいい
}
次に、星を表すオブジェクトを用意します。
.sky
.stars
.star
.sky{
background-color: #014; //黒っぽければなんでもいい
}
.star{
border-radius: 50%;
position: fixed;
z-index: 0;
-ms-filter: blur(6px);
filter: blur(6px);
}
星が一つだけなのもおかしいので、複数表示させます。
また、リロードする度に、数が変わるようにもしてみます。
使用するのはrandメソッド
とtimesメソッド
です。
.sky
.stars
- number = rand(100..200)
- number.times do
.star
これだけだと、同じ場所にひたすら100個以上の.star
が作られるだけです。
そのため、times
で.star
が一つ生成される度に、位置がランダムで指定されるようにします。
それにはCSSを適用すれば良いですが、CSSはHamlのコードにも直接指定できるので、これと変数展開を利用します。
.sky
.stars
- number = rand(100..200) //100から200までの間の数字をランダムで
- number.times do
- top = rand(100)
- left = rand(100)
.star{style: "top: #{top}%; left: #{left}%; height: #{size}px;}
次に星の色と大きさを指定します。
折角なので、全て違う色と大きさにしてみます。
.sky
.stars
- number = rand(100..200)
- color = ["red","blue","green","yellow","purple","white","pink","orange"]
- number.times do
- top = rand(100)
- left = rand(100)
- size = rand(10..20)
- cnum = rand(0..7)
.star{style: "top: #{top}%; left: #{left}%; height: #{size}px; width: #{size}px; background-color: #{color[cnum]}"}
これで完了です。
試しに画面をリロードしてみると、星の配置が変わると思います。
今回はほぼrandメソッド
を利用しましたが、
頑張って数式を適用すれば、もっと幾何学的で美しい背景を作ることができそうです。
Author And Source
この問題について(Ruby on rails で星を散らす), 我々は、より多くの情報をここで見つけました https://qiita.com/airesaies/items/6236755bcc129bee3749著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .