
こんにちわ。
現在、jQuery, WordPressを使用してブログサイトを構築しております。
質問なのですが、スクロールをして特定の記事が画面上に表示された(画面内に少しでも表示された場合も)時にコードを実行したいと考えているのですが、なにか良い方法はありますでしょうか?画像のライブラリでLazy loadという、領域に入った場合に初めて画像をロードするものがありますが、それと同じように具体的には領域に入ったときにテキストをフェードインしたいと考えております。ご教示いただければ幸いです。宜しくお願い致します。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
#No.1です。
あんまりひどいこーどなので、はずかしくなりました。つねにaをしらべるってのもむだなんだけど・・・。
つめが、いつもあまい!とおこられそうですが・・・。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<title>TEST</title>
<style type="text/css">
div { margin:200px 0px; }
.big { font-size:100px;}
</style>
<body onScroll="checker();">
<div class="big">ばぶぅ~!</div>
<div>abc</div>
<div>abc</div>
<div>abc</div>
<div id="a" class="big">赤字に!</div>
<div>abc</div>
<div>abc</div>
<script type="text/javascript">
function checker() {
if (this.f) return;
if (this.f = hasInnerView('a')) ColorChanger('a', '#000', '#f00', 100, 20);
}
function hasInnerView (eId) {
var d = document;
var db = d.body;
var y0 = d.documentElement.scrollTop || db.scrollTop;
var y1 = y0 + d.documentElement.clientHeight || db.clientHeight || db.scrollHeight;
var t = document.getElementById(eId);
var t0 = getPosition(t)[1];
var t1 = t0 + t.offsetHeight;
return (y0<t0 && t1<y1);
}
function getPosition(node) {
var x = 0, y = x;
do x += node.offsetLeft, y += node.offsetTop; while (node = node.offsetParent)
return [x,y];
}
function ColorChanger (eid, col1, col2, step, time) {
var s = document.getElementById(eid).style; //if (! s) return;
var c1 = getEachColor(col1); //if (! c1[0]) return;
var c2 = getEachColor(col2); //if (! c2[0]) return;
var c3 = [(c2[0] - c1[0]) / step, (c2[1] - c1[1]) / step, (c2[2] - c1[2]) / step];
var i = 0;
return function _() {
s.color = 'rgb(' + (c1[0]|0) + ',' + (c1[1]|0) + ',' + (c1[2]|0) + ')';
c1[0] += c3[0], c1[1] += c3[1], c1[2] += c3[2];
i++ < step && setTimeout (_, time);
}();
}
function getEachColor(RGB) {
var v = new Array(3);
if (RGB != undefined) {
if (/^#[0-9A-F]{3}$/i.test(RGB)) {
v = eval(RGB.replace(/^#([0-9A-F])([0-9A-F])([0-9A-F])/i, '[0x$1$1,0x$2$2,0x$3$3]'));
} else if (/^#[0-9A-F]{6}$/i.test(RGB)) {
v = eval(RGB.replace(/^#([0-9A-F]{2})([0-9A-F]{2})([0-9A-F]{2})/i, '[0x$1,0x$2,0x$3]'));
}
}
return v;
}
</script>
この回答への補足
ご回答ありがとうございます。
説明が不足していましたが、例えば、ブログコンテンツの投稿記事が画面上に表示されるとフェードイン、画面からはなれるとフェードアウトといった動作をしたいので、特定のidの判定をするのではなく、つねにすべての記事の判定をしたいと考えております。
とはいえ参考になりました。ありがとうございます。
No.1
- 回答日時:
だれもふれないところをみると、これはじらいなのか?
よくわからないけど、もうすでにごみ。
りょういきのしゅとくが、なにがなんだかわからないまま
こぴぺしたので、しらべてね。
ばぶ~。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<title>TEST</title>
<style type="text/css">
div { margin:20em 0em; }
</style>
<body onScroll="p();">
<div>abc</div>
<div>abc</div>
<div>abc</div>
<div>abc</div>
<div id="a">見えたらalert!</div>
<div>abc</div>
<div>abc</div>
<div>aabc</div>
<script type="text/javascript">
var d = document;
var db = d.body;
var t = document.getElementById('a');
var t0 = getPosition(t)[1];
var t1 = t0 + t.offsetHeight;
function getPosition(node) {
var x = 0, y = x;
do x += node.offsetLeft, y += node.offsetTop; while (node = node.offsetParent)
return [x,y];
}
function p() {
var y0 = d.documentElement.scrollTop || db.scrollTop;
var y1 = y0 + d.documentElement.clientHeight || db.clientHeight || db.scrollHeight;
if (y0<t0 && t1<y1) alert("でた~");
}
</script>
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(ブラウザ) bingチャットの内容(縦長)をスクリーンショットで保存する方法 3 2023/02/28 02:13
- WordPress(ワードプレス) WordpressでYouTubeの埋め込みができない。 1 2022/10/26 01:08
- ホームページ作成・プログラミング CGIが実行可能なHP領域又はレンタルサーバーでおすすめの所を教えてください 現在ホームページ領域の 1 2023/01/01 11:47
- HTML・CSS スクロールすると追従する画像のコードを書いているのですが、追従する画像の大きさの調節が上手くいきませ 2 2022/04/18 12:52
- その他(パソコン・スマホ・電化製品) ノートPCの画面がせまくなってしまいました。 3 2022/04/23 18:47
- モニター・ディスプレイ WindowsノートPC 13.3で画面縮小したい 画面全体が見えない めり込んでしまってます 1 2023/01/22 13:42
- その他(プログラミング・Web制作) Leafletで画像をon、offさせる方法について 2 2022/11/01 15:34
- HTML・CSS トリミングで表示した画像をクリックで元どおりにしたい 3 2022/12/16 18:49
- JavaScript [Java] Edgeでのアドレスバー非表示について 3 2022/04/20 17:51
- その他(パソコン・スマホ・電化製品) アンドロイドスマホの画面にクリックするとJPG写真が開くショートカットを作りたいのですが、方法をおし 3 2023/08/27 10:01
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
セレクトボックスを2つ設けて選...
-
食材の期限を管理するためにGAS...
-
Q&A掲示板の入力フォームに文字...
-
GASでチェックボックスを一括of...
-
jsで、配列内の文章を改行する...
-
タグを教えてください。
-
ラジオボタンを複数選択したと...
-
jsで質問です。 formをsubmitし...
-
2025年相性がいい人のサイトの...
-
CookieをWebStoeageに変える
-
Adobe acrobat proでフォームを...
-
Outlookのアカウントがあるとメ...
-
jqueryのselect2で検索欄の文字...
-
<tr>指定した表の行要素をボ...
-
ビデオのJSについて
-
鍵盤アプリで、スマホの画面に...
-
<div>のタッチ状態を維持したま...
-
jQueryでシンセサイザーを作っ...
-
プログラミング 学習
-
HTMLでサブフレームから親のス...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
スマホ上で、左右スワイプで次...
-
タグを教えてください。
-
jqueryのselect2で検索欄の文字...
-
jsonテキストデータの並び替え...
-
初心者です。gulpでコンパイル...
-
ラジオボタンを複数選択したと...
-
階層別の組織図の自動作成について
-
jQueryで同じクラス名のものを...
-
二次元配列を使って順位をだす...
-
読み込んだQRコードをフォーム...
-
画面遷移を行わずに同一ページ...
-
セレクトを全て選択されていな...
-
【Google Apps Script】「ライ...
-
Adobe acrobat proでフォームを...
-
二次元配列の全要素の全要素を...
-
【GAS】WEBアプリでハイパーリ...
-
GASでGoogleフォームの自動返信...
-
フォームが空欄の時にフォーム...
-
セレクトボックスで配列を呼び...
-
イラストレーター、縦中横のシ...
おすすめ情報