Pen Settings

HTML

CSS

CSS Base

Vendor Prefixing

Add External Stylesheets/Pens

Any URL's added here will be added as <link>s in order, and before the CSS in the editor. You can use the CSS from another Pen by using it's URL and the proper URL extention.

+ add another resource

JavaScript

Babel includes JSX processing.

Add External Scripts/Pens

Any URL's added here will be added as <script>s in order, and run before the JavaScript in the editor. You can use the URL of any other Pen and it will include the JavaScript from that Pen.

+ add another resource

Packages

Add Packages

Search for and use JavaScript packages from npm here. By selecting a package, an import statement will be added to the top of the JavaScript editor for this package.

Behavior

Save Automatically?

If active, Pens will autosave every 30 seconds after being saved once.

Auto-Updating Preview

If enabled, the preview panel updates automatically as you code. If disabled, use the "Run" button to update.

Format on Save

If enabled, your code will be formatted when you actively save your Pen. Note: your code becomes un-folded during formatting.

Editor Settings

Code Indentation

Want to change your Syntax Highlighting theme, Fonts and more?

Visit your global Editor Settings.

HTML

              
                <!DOCTYPE html>
<html lang="ja">

<head>
	<meta charset="utf-8">
	<title>9-3-5 おまけ:様々なPNGアニメーション</title>
	<meta name="viewport" content="width=device-width,initial-scale=1.0">
	<!--==============レイアウトを制御する独自のCSSを読み込み===============-->
	<link rel="stylesheet" type="text/css" href="http://coco-factory.jp/ugokuweb/wp-content/themes/ugokuweb/data/move02/9-3-5/css/reset.css">
	<link rel="stylesheet" type="text/css" href="http://coco-factory.jp/ugokuweb/wp-content/themes/ugokuweb/data/move02/9-3-5/css/9-3-5.css">
</head>

<body>
	<div class="wrapper">
	
	<p>画面が読み込まれるとpng画像が1度だけ動く</p>
	<div class="arrow1"></div>

	<p>画面が読み込まれるとpng画像がループして動く</p>
	<div class="arrow2"></div>
	
	<p>hoverするとpng画像が動く<br>※タップ動作は非対応</p>
	<div class="arrow3"></div>
		
	<br>↓<br>↓<br>↓<br>↓<br>↓<br>↓<br>↓<br>↓<br>↓<br>↓<br>↓<br>↓<br>↓<br>↓<br>↓<br>↓<br>↓<br>↓<br>↓<br>↓<br>↓<br>↓<br>↓	
	<p>スクロールするとpng画像が動く</p>
	<div class="stepsTrigger"></div>
	<p>スクロールするとpng画像が動く</p>
	<div class="stepsTrigger daruma"></div>
<!--/wrapper--></div>
		
	<script src="https://code.jquery.com/jquery-3.4.1.min.js" integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script>
	<script src="http://coco-factory.jp/ugokuweb/wp-content/themes/ugokuweb/data/move02/9-3-5/js/9-3-5.js"></script>
</body>

</html>
              
            
!

CSS

              
                @charset "utf-8";

/*=============== レイアウトのためのCSS =================*/

.wrapper{
	text-align: center;
    padding: 0 0 100px 0;
}
.arrow1,
.arrow2,
.arrow3,
.steps{
	margin:0 auto;
}
p{
	font-weight: bold;
	margin:20px 0;
}

/*=============== 画面が読み込まれるとpng画像が1度だけ動く =================*/

.arrow1{
	width: 100px;/*1フレーム分の横幅*/
	height: 100px;/*1フレーム分の縦幅*/
	background: url(http://coco-factory.jp/ugokuweb/wp-content/themes/ugokuweb/data/move02/9-3-5/img/arrow.png) no-repeat;
  animation: arrowlinecount 1s steps(15) forwards;/*アニメーション制作コマ数−1のstep数を入れ(今回は全体16コマ-1コマ=15コマ)forwardsで最後の形を維持*/
}

@keyframes arrowlinecount {
  0% {
    background-position: 0 0;
  }
  100% {
    background-position: -1500px 0;/*アニメーション制作コマ数から1コマ分引いた横幅(今回は1フレーム100pxで制作しているので全体の1600px-100px=1500px)を指定。*/
  }
}


/*=============== 画面が読み込まれるとpng画像がループして動く =================*/

.arrow2{
	width: 100px;/*1フレーム分の横幅*/
	height: 100px;/*1フレーム分の縦幅*/
	background: url(http://coco-factory.jp/ugokuweb/wp-content/themes/ugokuweb/data/move02/9-3-5/img/arrow.png) no-repeat;
  animation: arrowlineloop 1s steps(17) infinite;/*アニメーション制作コマ数+1のstep数を入れ(今回は全体16コマ+1コマ=17コマ)infiniteでループ*/
}

@keyframes arrowlineloop {
  0% {
    background-position: 0 0;
  }
  100% {
    background-position: -1700px 0;/*アニメーション制作コマ数から1コマ分足した横幅(今回は1フレーム100pxで制作しているので全体の1600px+100px=1700px)を指定。*/
  }
}


/*=============== hoverするとpng画像が動く =================*/

.arrow3{
	cursor: pointer;/*カーソルを指マークに*/
	width: 100px;/*1フレーム分の横幅*/
	height: 100px;/*1フレーム分の縦幅*/
	background: url(http://coco-factory.jp/ugokuweb/wp-content/themes/ugokuweb/data/move02/9-3-5/img/arrow.png) no-repeat;
}

.arrow3:hover,
.arrow3:active{
  animation: arrowline 1s steps(15) forwards;/*アニメーション制作コマ数−1のstep数を入れ(今回は全体16コマ-1コマ=15コマ)forwardsで最後の形を維持*/
}

@keyframes arrowline {
  0% {
    background-position: 0 0;
  }
  100% {
    background-position: -1500px 0;/*アニメーション制作コマ数から1コマ分引いた横幅(今回は1フレーム100pxで制作しているので全体の1600px-100px=1500px)を指定。*/
  }
}

/*=============== スクロールするとpng画像が動く =================*/

.stepsTrigger{
	opacity:0;
}

.steps{
  width: 100px;/*1フレーム分の横幅*/
  height: 100px;/*1フレーム分の縦幅*/
  background: url(http://coco-factory.jp/ugokuweb/wp-content/themes/ugokuweb/data/move02/9-3-5/img/steps.png) no-repeat;
  animation: stepsline 1s steps(3) forwards,stepsopacity .5s forwards;
	/*stepsline ⇒アニメーション制作コマ数−1のstep数を入れ(今回は全体4コマ-1コマ=3コマ)forwardsで最後の形を維持
	stepsopacity⇒スクロールで要素の位置まで来たら0.5秒で透過0から1に変わるアニメーションを設定。forwardsで最後の形を維持	*/
}

@keyframes stepsline {
  0% {
    background-position: 0 0;
  }
  100% {
    background-position: -300px 0;/*アニメーション制作コマ数から1コマ分引いた横幅(今回は1フレーム100pxで制作しているので全体の400px-100px=300px⇒-300px)を指定。*/
  }
}

.steps.daruma{
  width: 100px;/*1フレーム分の横幅*/
  height: 100px;/*1フレーム分の縦幅*/
  background: url(http://coco-factory.jp/ugokuweb/wp-content/themes/ugokuweb/data/move02/9-3-5/img/daruma.png) no-repeat;
  animation: stepslinedaruma 2s steps(8) forwards,stepsopacity .5s forwards;
	/*stepsline ⇒アニメーション制作コマ数−1のstep数を入れ(今回は全体9コマ-1コマ=8コマ)forwardsで最後の形を維持
	stepsopacity⇒スクロールで要素の位置まで来たら0.5秒で透過0から1に変わるアニメーションを設定。forwardsで最後の形を維持	*/
}

@keyframes stepslinedaruma {
  0% {
    background-position: 0 0;
  }
  100% {
    background-position: -800px 0;/*アニメーション制作コマ数から1コマ分引いた横幅(今回は1フレーム100pxで制作しているので全体の900px-100px=800px⇒-800px)を指定。*/
  }
}

/*足跡とだるま共通の透過→出現のCSSアニメーション*/
@keyframes stepsopacity{
  0% {
 	opacity:0;
  }
  100% {
	opacity:1;
  }
}


              
            
!

JS

              
                // 動きのきっかけの起点となるアニメーションの名前を定義
function stepsAnime(){

	$('.stepsTrigger').each(function(){ //stepsTriggerというクラス名が
		var elemPos = $(this).offset().top-50;//要素より、50px上の
		var scroll = $(window).scrollTop();
		var windowHeight = $(window).height();
		if (scroll >= elemPos - windowHeight){
		$(this).addClass('steps');// 画面内に入ったらstepsというクラス名を追記
		}else{
		$(this).removeClass('steps');// 画面外に出たらstepsというクラス名を外す
		}
		});

}

// 画面をスクロールをしたら動かしたい場合の記述
	$(window).scroll(function (){
		stepsAnime();/* アニメーション用の関数を呼ぶ*/
	});// ここまで画面をスクロールをしたら動かしたい場合の記述

// 画面が読み込まれたらすぐに動かしたい場合の記述
	$(window).on('load', function(){
		stepsAnime();/* アニメーション用の関数を呼ぶ*/
	});// ここまで画面が読み込まれたらすぐに動かしたい場合の記述



              
            
!
999px

Console