実現したいこと
いつもお世話になっております。
プログラミング初心者です。
今回お伺いしたいのは、下記のサイトのように
スクロールに合わせて背景のbackground-colorの数値を変更させるという方法を
教えていただけますでしょうか?
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答3件
0
Firefox には scrollMaxY があるのですが、標準にはないので計算します。
今時互換モードを考慮しなければならないとは思えませんが、一応書いておきます。
JavaScript
1var root = document[document.compatMode === 'BackCompat' ? 'body' : 'documentElement']; 2var scrollMaxY = root.scrollHeight - root.clientHeight;
https://developer.mozilla.org/ja/docs/Web/API/Document/compatMode
https://developer.mozilla.org/ja/docs/Web/API/Window/scrollMaxY
投稿2019/07/17 07:10
総合スコア13749
0
ベストアンサー
適当に、最初の色と、最後の色をrgbで指定して位置によって変えていけば?
javascript
1<style> 2body{height:3000px;margin:0px;} 3</style> 4 5<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> 6<script> 7$(function(){ 8 var start=[118,200,143]; 9 var end =[220,10,45] 10 $(window).on('scroll',function(){ 11 var s=$(this).scrollTop(); 12 var h=$('body').height()-$('body').prop('clientHeight'); 13 var r=start[0]+(-start[0]+end[0])*(s/h); 14 var g=start[1]+(-start[1]+end[1])*(s/h); 15 var b=start[2]+(-start[2]+end[2])*(s/h); 16 $('body').css('background-Color','rgb('+r+','+g+','+b+')'); 17 }).trigger('scroll'); 18}); 19</script>
HTML5対応
HTML5(=<!DOCTYPE html>)でプロパティのとり方が変わったことによる問題みたいですね
以下で対応できると思います
javascript
1$(function () { 2 var start = [118, 200, 143]; 3 var end = [220, 10, 45] 4 $(window).on('scroll', function () { 5 var s = $(this).scrollTop(); 6 var h = Math.abs($('body').prop('clientHeight')-$(window).innerHeight()); 7 var r = start[0] + (-start[0] + end[0]) * (s / h); 8 var g = start[1] + (-start[1] + end[1]) * (s / h); 9 var b = start[2] + (-start[2] + end[2]) * (s / h); 10 $('body').css('background-Color', 'rgb(' + r + ',' + g + ',' + b + ')'); 11 }).trigger('scroll'); 12});
debug用
以下3つのファイル完全のコピペでテストしてください
- hoge.html
html
1<!DOCTYPE html> 2<html lang="ja"> 3<head> 4<meta charset="UTF-8"> 5<title>Untitled Document</title> 6<meta name="Author" content="" /> 7<link rel="stylesheet" type="text/css" href="hoge.css"> 8<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> 9<script type="text/javascript" src="hoge.js"></script> 10</head> 11<body> 12</body> 13</html>
- hoge.css
CSS
1body{height:3000px;margin:0px;}
- hoge.js
javascript
1$(function () { 2 var start = [118, 200, 143]; 3 var end = [220, 10, 45] 4 $(window).on('scroll', function () { 5 var s = $(this).scrollTop(); 6 var h = Math.abs($('body').prop('clientHeight')-$(window).innerHeight()); 7 var r = parseInt(start[0] + (-start[0] + end[0]) * (s / h)); 8 var g = parseInt(start[1] + (-start[1] + end[1]) * (s / h)); 9 var b = parseInt(start[2] + (-start[2] + end[2]) * (s / h)); 10 $('body').css('backgroundColor', 'rgb(' + r + ',' + g + ',' + b + ')');// cssプロパティ ハイフンはNG 11 }).trigger('scroll'); 12});
投稿2019/07/16 09:15
編集2019/07/18 01:57総合スコア114784
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/07/17 00:16
2019/07/17 03:10
2019/07/17 03:23
2019/07/17 03:42 編集
2019/07/18 00:34
2019/07/18 00:50
2019/07/18 01:26
2019/07/18 01:41
2019/07/18 02:07
0
参考サイトがあるのでしたら、そのコードを見ていってはどうでしょうか。
HTML,CSS,JavaScriptをやっていくうえで、デベロッパーツールを使えるようになるのは必須事項です。
(プログラミングで必須のデバッグにもつながります)
投稿2019/07/16 08:37
総合スコア80850
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/07/18 00:16
2019/07/18 00:26
2019/07/18 01:27