質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
jQueryプラグイン

jQueryの拡張機能。 様々な種類があり、その数は膨大です。公開済みのプラグインの他にも、自作することもできます。 jQueryで利用できるようにしておくだけで、導入およびカスタマイズが比較的容易に行なえます。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

2回答

13615閲覧

jQuery slickのスライドが、ロード直後だけ動きが速い

morimasa

総合スコア15

jQueryプラグイン

jQueryの拡張機能。 様々な種類があり、その数は膨大です。公開済みのプラグインの他にも、自作することもできます。 jQueryで利用できるようにしておくだけで、導入およびカスタマイズが比較的容易に行なえます。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

0クリップ

投稿2017/08/08 02:03

こちらのslickスライダーを使っています。
http://kenwheeler.github.io/slick/

以下のように、オプションをつけて、使用しています。

JavaScript

1 $('.slider').slick({ 2 arrows: false, 3 infinite: true, 4 autoplay: true, 5 autoplaySpeed: 0, 6 cssEase: 'linear', 7 speed: 5000, 8 slidesToShow: 7, 9 slidesToScroll: 1, 10 variableWidth: true, 11 lazyLoad: 'progressive', 12 }); 13

※こちらは、以下の記事を参考にさせていただきました。
http://www.kopjapan.com/blog/web/jquery%E3%81%A7%E7%94%BB%E5%83%8F%E3%82%92%E5%8F%B3%E3%81%8B%E3%82%89%E5%B7%A6%E3%81%B8%E7%84%A1%E9%99%90%E3%83%AB%E3%83%BC%E3%83%97%E3%81%A7%E6%B5%81%E3%81%97%E7%B6%9A%E3%81%91%E3%82%8B%E3%82%A2

基本的には動作しているのですが、どうも「最初にロードしたときだけ」しばらく数秒ほど動き(スライドする速度)が速いのです。
まるで、「開始地点」に急いで戻るように動き、その後設定したスピードで流れ始めます。

これを解消する手段がわからないのですが、どなたかご存知でしょうか。

なお、LazyLoadで全部の読込が終わってから

JavaScript

1$('.slider').slick("slickPlay");

としても、同じ現象が発生しました。
画像がロード済みでないことが原因ではないようです。

よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

x_x

2017/08/08 02:44

再現しませんでした。再現できるようなコードはあるでしょうか?
morimasa

2017/08/09 04:01

非公開で作業中のサイトで、なかなか難しいですが、しばらく解決できなければ、用意できるか、検討してみます。
guest

回答2

0

ベストアンサー

画像として表示せずに、要素の背景として表示してみてはどうでしょうか?
恐らく現状では

html

1<div class="slider"> 2 <img style="width:100px; height:100px;" src="hoge01.jpg"> 3 <img style="width:100px; height:100px;" src="hoge02.jpg"> 4 <img style="width:100px; height:100px;" src="hoge03.jpg"> 5</div>

もしくは

html

1<div class="slider"> 2 <div style="width:100px; height:100px;"><img src="hoge01.jpg"></div> 3 <div style="width:100px; height:100px;"><img src="hoge02.jpg"></div> 4 <div style="width:100px; height:100px;"><img src="hoge03.jpg"></div> 5</div>

みたいな感じになっているのではないでしょうか?
これを

html

1<div class="slider"> 2 <div style="background:url(hoge.jpg) center; background-size:cover; width:100px; height:100px;">&nbsp;</div> 3 <div style="background:url(hoge.jpg) center; background-size:cover; width:100px; height:100px;">&nbsp;</div> 4 <div style="background:url(hoge.jpg) center; background-size:cover; width:100px; height:100px;">&nbsp;</div> 5</div>

としてみたらどうでしょう?

投稿2017/08/09 07:16

OsCh

総合スコア111

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

morimasa

2017/08/09 11:26

ありがとうございました!こちらの方法で、基本的には解決しました。 ただ、あと1点だけよろしいでしょうか? 現在、レスポンシブでサイトを組んでいまして、画像がスマホのほうが小さくなっています。あまり通常ユーザには起こらないことかもしれませんが、ブレークポイントをまたいでウィンドウサイズを変化させると、やはりslickの中の画像サイズが変化したタイミングで、元々の課題と同様に「画像が走る」事象が発生します。 これはもう防ぐ手段はないのでしょうか。。
OsCh

2017/08/10 09:52

話が複雑になってきたので、実際のソースを見ないとなんとも言えませんが、今回の場合はウィンドウのリサイズに対する挙動にあたるので、HTML側から修正するのは難しいと思います。 一応、可能性のある方法としては、slickでは、特定の画面サイズに応じて設定を変えられるので(responsiveという設定項目があります)スマホサイズ時に別の設定をしてみることで、挙動を回避できるかもしれません。
morimasa

2017/09/27 06:41

こちらですが、結局解決は不可能で、通常ユーザには起こらない現象であり、そのような仕様だ、ということで話が落ち着きました。回答ありがとうございました。
guest

0

憶測になりますが、ページの表示が全て完了する前に、slickの処理が始まっているのではないでしょうか?
なのでページの表示が完了した段階で溜まったタスクが一気に処理されているような気がします。

slickは任意でスタートさせることができるので、autoplayをfalseにして、何かのタイミングで処理を始めるようにするのはどうでしょうか?

↓は1秒待ってから開始するサンプルです

javascript

1$('.slider').slick({ 2 arrows: false, 3 infinite: true, 4 autoplay: false, 5 autoplaySpeed: 0, 6 cssEase: 'linear', 7 speed: 5000, 8 slidesToShow: 7, 9 slidesToScroll: 1, 10 variableWidth: true 11}); 12 13setTimeout( function(){ 14 $( '.slider' ).slick( 'play' ); 15}, 1000 );

投稿2017/08/08 03:55

OsCh

総合スコア111

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

morimasa

2017/08/09 04:05

回答ありがとうございます!こちらでいただいた方法で、いったん回避はできました。が、手元の環境では、待ち時間を4秒以上にしないとうまくいきませんでした。 これでは、さすがに待ちすぎなので、さらに少し調査を進めました。結果、どうやら、「画像の実際のサイズ」≠「CSSで指定した画像サイズ」(縮小している)と、発生するようです。画像の実際のサイズをCSSで指定すれば発生しませんでした。 そこで、インラインで高さ・幅を(縮小するように)書いてみましたが、それでも再発しました。 どうしても、画像の実際のサイズのままで表示したときだけうまくいきます。 画像のサイズをリサイズするしかないんでしょうか。。 といった、現在の状況です。
OsCh

2017/08/09 07:17

間違えて別スレッドで回答してしまいました。 ↓を参考にしてください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問