
表と裏がある1枚の画像を回転する、アニメーションのコードを書いているのですが、class=" flip "の部分です。スマホやPCでスクロールして、回転する画像の位置に来たら、画像が回転を始めるようにしたいです。
このソースコードには他にスクロールが文字の位置に来たら丁度右からフェードインするコードjapascriptを書いているのですが、このコードに flipを入れて、スクロールが画像の位置にきたら、同じように動きが
発動するようにできますでしょうか?
それとも無理でしょうか?
どうコードを書いたらよいでしょうか?
<!DOCTYPE html>
<html lang="ja">
<head>
<meta content="text/html; charset=utf-8" />
<title></title>
<script src="jquery-3.6.0.min.js"></script>
<style>
</style>
</head>
<body>
<!--アニメーション 表と裏の画像の回転-->
<div class="flip">
<img src="5mouth.png" alt="" id="sumaho3" class="front"><!--表の画像-->
<img src="5mouth.png" alt="" id="sumaho6" class="back"><!--裏の画像-->
</div>
<!--この位置でスクロールされたら右にフェードインする-->
<div class="slide-right show"><p>あいうえお
</p>
</div>
<script>
//フェードイン用のコードです
$(function(){
$(window).on('load scroll', function() {
$(".show").each(function() {
var winScroll = $(window).scrollTop();
var winHeight = $(window).height();
var scrollPos = winScroll + (winHeight * 0.9);
if($(this).offset().top < scrollPos) {
$(this).css({opacity: 1, transform: 'translate(0, 0)'});
}
});
});
});
//フェードイン用のコードはここまでです
</script>
</body>
</html>
●●●cssのコード
/* 画像にアニメーションを設定 表と裏の画像の回転 */
.flip {
width: 1em;
height: 1em;
margin-bottom: 1em;
animation: flip 2s linear ;/* アニメーション回転...Sの秒数で終了する */
transform-style: preserve-3d;
font-size: 5em;
}
@keyframes flip {
0% { transform: rotateY(0deg); }
100% { transform: rotateY(360deg); }
}
.front, .back {
position: absolute;
top: 0;
left: 0;
-webkit-backface-visibility: hidden;
backface-visibility: hidden;
}
.back {
transform: rotateY(180deg);
}
/* フェードイン用のCSS */
/* 右からフェードイン */
.slide-right {
opacity: 0;
transform: translate(20px, 0);
transition: all 1s ease-out;
}
No.1ベストアンサー
- 回答日時:
こんにちは
なんだかいろいろありそうな気がしますけれど、とりあえずご質問の内容に関して・・
>このコードに flipを入れて、スクロールが画像の位置にきたら、同じように動きが
>発動するようにできますでしょうか?
元のスクリプトのトリガー判定に「winHeight * 0.9」などとあるので、どういうタイミングにしたいのかがよくわかりませんけれど、
CSSでアニメーションをしているのは、
animation: flip 2s linear ;
なので、この部分を削除しておいて、好きなタイミングでCSSを追加設定すれば、そのタイミングでアニメーションするようになります。
例えば、文字の表示と同じタイミングで良いのならば、
if($(this).offset().top < scrollPos) {
$('.flip').css('animation', 'flip 2s linear' ); //← **** 1行追加 ****
$(this).css({opacity: 1, transform: 'translate(0, 0)'});
}
とすることで、アニメーションするようになります。
別のタイミングにしたければ、そのタイミングで設定するようにすれば良いでしょう。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
画像をフォルダに入れれば表示...
-
JavaScript スライドの画像にリ...
-
Javascriptで指定した日付と時...
-
ランダム表示画像へ説明文を表...
-
ソート時に△/▽のような画像を表...
-
【スマホ】画像ボタンを押した...
-
Gifアニメ、最後のコマに行った...
-
jQueryスライドショー画像への...
-
(超初心者向け)マウスオーバ...
-
c++std::string型をTCHARに変換...
-
MAX関数を使ってからLEFT JOIN...
-
javascriptでpostした値が取得...
-
HPB_SCRIPT_ROV_50
-
【コーディング】途中から位置...
-
JavaScriptのhistory.back(戻...
-
指定したパスが現URLに含まれて...
-
複数画像のランダム複数表示(...
-
jQueryで特定id以外の下にある...
-
javascriptでオブジェクトの重...
-
同一ページ内で、任意の文字列...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
1枚の画像をクリックすると複数...
-
画面の表示位置を指定させて表...
-
強制的に読み込み完了とする方...
-
textareaに画像を表示したい
-
<table>、もしくは<iframe>内で...
-
【java】背景画像を一定時間で...
-
ページ読込中に表示が崩れるの...
-
画像ランダム表示、しかしダブ...
-
マウスカーソルを画像や文字に...
-
bxsliderにて読み込み後に内容...
-
画像をクリックしてその地点の...
-
jQueryで特定のURLの時のみ表示
-
小さなウィンドウ
-
透過pngの透明部分以外をクリッ...
-
プルダウンの位置がwin/macでず...
-
スライドショーにコメントを入...
-
「画像の上を流れる文字列」を...
-
JavaScript スライドの画像にリ...
-
画像の重なりの順序を代える方...
-
複数の画像を先に読み込ませ表...
おすすめ情報
回答ありがとうございます。スクロールして画像が画面内に見えたら、回転を一回だけ起動するには、どうコードを書いたら良いでしょうか?
<spript>タグ内に書いてあるのは文字のフェードイン用のコードです。これはこのままでokなのですが、
それとは別に、提示した<spript>タグ内のような感じで、class=flipのcssアニメーション回転コードをスクロールして画面内に入ったら一回だけ起動させたいです。
どうコードを書いたら良いでしょうか?