Little Strange Software

スマホアプリの開発を行う LittleStrangeSoftware のブログです。

【CSS】background-positionプロパティにマイナスの値を指定してみます

 どうも!LSSです!!

 

以前に、やってみたかったけどうまくいかなかった事があります。

little-strange.hatenablog.com

 

これを使いこなせたら、例えば背景画像のスクロールアニメーションができるなー、とか、以前に作ったとあるゲームの表現性が凄く上がるなー、とか思っていたのですが…。

 

実はもっと簡単な方法で出来そうな気がしてきました!

 

 

まず、画像を用意します

f:id:little_strange:20200811233549j:plain

↑以前、散歩記事に使用した画像ですw

 

で、これを、幅300px・高さ400pxにサイズ指定したdiv要素に
background-image:url('画像ファイルのURL');
として当ててみます。

 

background-image:url~で指定するとこうなります

 

 

コード(分かりやすく改行を入れていますが、改行しなくても大丈夫です)

<div style="
width: 300px; height: 400px;
background-image: url('画像ファイルのURL');
"> </div>

  

 

background-positionプロパティにマイナス値指定

background-position: -400px;

という指定を付けたしてみます。

 

 

 

<div style="
width: 300px; height: 400px;
background-image: url('画像ファイルのURL');
background-position: -400px;
"> </div>

 

…実にあっさりと、切り取り位置を指定した背景画像表示指定ができましたね^^

 

なお、「画像をずらした結果、画像の端をまたいだらどうなるか?」は、

 

 

<div style="
width: 300px; height: 400px;
background-image: url('画像ファイルのURL');
background-position: -600px;
"> </div>

 

こうなりますね。

既定値で、「background-imageは繰り返し」する事になっているので、見切れた部分は次の繰り返し画像が来る事になります。

 

もし、繰り返しさせたくない場合は、

background-repeat:no-repeat;

をつけて、

 

<div style="
width: 300px; height: 400px;
background-image: url('画像ファイルのURL');
background-position: -600px;
background-repeat: no-repeat;
"> </div>

 

このようになります。

なお、要素のサイズ自体は変わっていません。

例えばborderをつけると、それが確認できます。

 

 

 

では、background-positionの値を変更するアニメーションを作ってみます!

 

<style><!--
@keyframes bgscr{
0%{background-position:0px;}
100%{background-position:-470px;}
}
--></style>
<div style="
width: 300px; height: 400px;
background-image: url('画像ファイルのURL');
background-repeat: no-repeat;
border: 1px solid black;
animation: bgscr 6s linear 0s infinite alternate;
"> </div>

 

無事、できました!

これをJavaScriptから指定してやれば、スクロールゲームも作れるって事に!^^

 

 

animation: bgscr 6s linear 0s infinite alternate;
を日本語訳すると、

bgscrというキーフレームで指定した変化を、6秒で動作させる、動作の加速度はlinearで、0秒後から開始。繰り返し回数は無限(infinite)。繰り返し方は、最後までアニメしたら次は逆再生で最初に戻る(alternate)。」 

という意味になります。

 

 

animationについては 

little-strange.hatenablog.com

にも書いていますので、よかったら見てください。

 

 

あとがき

冒頭に書いた、以前に作ったとあるゲームは、

little-strange.hatenablog.com

でした。

 

いやぁ、内心、スマホでも遊べる画面サイズ」で、かつ「加速時の疾走感」を出すには背景スクロールかなぁ、と思ってまして。

 

それを実現するのにどうするか?にかなり遠回りした気がします^^;;;;;

 

 

 

ってなとこで、今回はこのへんで!

次回もまた、よろしくお願いします^^