今回はブラウザ幅480px以下の場合で尚且つページトップから100pxスクロールした場合にのみ、#contact_fixed_spの部分を表示したいと思っています。
それぞれブラウザの幅におおじて表示非表示を切り替えるコードとスクロール量を取得してfadeIn/fadeOutさせるコードは何とかできたのですがその先が分かりません。
どなたかお教えいただけると助かります。宜しくお願いいたします。
html
1<div id="contact_fixed_sp"> 2<a>contact_btn</a> 3</div>
css
1.invisible { display:none; }
jQuery
1<script> 2 $(function() { 3 4 $(window).scroll(function(){ 5 // 対象までの高さ 6 var distanceTop = 100; 7 8 if ($(window).scrollTop() > distanceTop) { 9 $('#contact_fixed_sp').fadeIn("slow"); 10 } else { 11 $('#contact_fixed_sp').fadeOut("slow"); 12 } 13 }); 14 }); 15 </script> 16 <script> 17 var checkWidth = function() { 18 var browserWidth = $(window).width(); 19 20 if(browserWidth <= 480){ 21 $('#contact_fixed_sp').removeClass('invisible'); 22 }else{ 23 $('#contact_fixed_sp').addClass('invisible'); 24 } 25 }; 26 27 $(function(){ 28 checkWidth(); 29 $(window).resize(checkWidth); 30 }); 31 </script>
頂いた回答を元に少しこんな感じかなというのを下記に書き足してみましたがやはり実装できません。どこが間違っているのかご指摘いただけると助かります。jQueryは書き方の基礎もないのでお恥ずかしい限りです。
css
1#contact_fixed_sp { 2 display: none; 3} 4@media screen and (max-width:480px) { 5#contact_fixed_sp { 6 display: block; 7} 8}
jQuery
1<script> 2 $(window).resize(function(){ 3 var w = $(window).width(); 4 var x = 480; 5 if (w <= x) { 6 .on('scroll', function () { 7 var distanceTop = 130; 8 var $contactFixedSp = $('#contact_fixed_sp'); 9 10 if ($(window).scrollTop() > distanceTop) { 11 $contactFixedSp 12 .stop() 13 .fadeIn("normal"); 14 } 15 else { 16 $contactFixedSp 17 .stop() 18 .fadeOut("normal"); 19 } 20 }) 21 .trigger('scroll'); 22 }); 23 </script>
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/07/18 01:24 編集