追記:
※ご指摘がありましたので追記いたします。
質問の意図としましては作業依頼をお願いしているわけではなく、私の乏しい知識では原因になかなかたどり着けないので、原因究明に1歩でも近づくための助言をいただきたいです。
結果としてコード修正などの提案をいただくこともあると思いますが、そのあたりはご了承お願い致します。
パララックス風の効果を実現させるために下記jsを用いています。
(クライアント様から、参考サイトと同じjs使ってほしいと要望があったため。)
ChromeやFirefox、ieでは、スクロールと同時に背景画像が少しずつズレるパララックス風の効果が得られます。しかし、SafariやIphoneで見たときには、動きがカクカクします。(遅延)
console.timeで処理時間の計測をしましたがあきらかに10倍近くSafariだと遅いです。
js
1$(window).on('load scroll', function () { 2 var dy = $(this).scrollTop(); 3 $('.para').each(function (index) { 4 var $self = $(this); 5 var offsetPositions = $self.offset(); 6 var positions; 7 if ($(window).width() > 767) { 8 switch (index) { 9 case 0: 10 positions = '50% ' + (dy - offsetPositions.top - 500) * (+0.3) + 'px'; 11 $self.css('backgroundPosition', positions); 12 break; 13 case 1: 14 positions = '50% ' + (dy - offsetPositions.top - 1000) * (+0.3) + 'px'; 15 $self.css('backgroundPosition', positions); 16 break; 17 case 2: 18 positions = '50% ' + (dy - offsetPositions.top - 500) * (+0.3) + 'px'; 19 $self.css('backgroundPosition', positions); 20 break; 21 case 3: 22 positions = '50% ' + (dy - offsetPositions.top - 3000) * (+0.3) + 'px'; 23 $self.css('backgroundPosition', positions); 24 break; 25 default: 26 break; 27 } 28 } else { 29 switch (index) { 30 case 0: 31 positions = '50% ' + (dy - offsetPositions.top - 100) * (+0.2) + 'px'; 32 $self.css('backgroundPosition', positions); 33 break; 34 case 1: 35 positions = '50% ' + (dy - offsetPositions.top - 1000) * (+0.2) + 'px'; 36 $self.css('backgroundPosition', positions); 37 break; 38 case 2: 39 positions = '50% ' + (dy - offsetPositions.top - 500) * (+0.2) + 'px'; 40 $self.css('backgroundPosition', positions); 41 break; 42 case 3: 43 positions = '50% ' + (dy - offsetPositions.top - 4000) * (+0.2) + 'px'; 44 $self.css('backgroundPosition', positions); 45 break; 46 default: 47 break; 48 } 49 } 50 });
本来実際のサイトお見せできれば回答しやすいとは思いますが、都合上お見せできないのでこちらの情報だけで、経験上推測できること、こうやって改善すれば直るかもよ
という意見をいただければと思います。
もし、追加で必要な情報があればおっしゃってください。
色々試しましたが息詰まってしまい、納期が近くて焦っています。。
どうかご教授お願いします。
▼試したこと
・jQueryの最新版をCDNで読み込ませる(もともと古いものをアップロードして読ませていたため)
・for文に変えて処理を実施
・caseを1つにして実施(スムーズに動く、けど意味ない)
・scriptの指定位置をfooterにおいたり、head内に置いたりしたが変わらず。。
ちなみにクライアントからいただいた参考サイトはSafariでも正常に動いていることから上のjsファイル以外の要因も考えられますが見当もつきません、、
回答4件
あなたの回答
tips
プレビュー