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

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

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

プラグイン(plug-in)は、ソフトウェアアプリケーションの機能拡張の為に開発された、一組のソフトウェアコンポーネントのことを指します。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

8361閲覧

slick 右方向スライド時にカクカクする動きをスムーズにしたい

ztj

総合スコア14

プラグイン

プラグイン(plug-in)は、ソフトウェアアプリケーションの機能拡張の為に開発された、一組のソフトウェアコンポーネントのことを指します。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2021/02/23 10:06

編集2021/02/24 00:13

前提・実現したいこと

jqueryプラグイン slickで、右側にメイン画像が来るようなスライドを作っています。
メインスライド(.slick-current)の位置、大きさだけ他スライドと異なるためcssで指定しています。

右方向スライド時に動きがカクついてしまうため、
スムーズにスライドさせるにはどうすればいいか教えていただきたいです。

発生している問題・エラーメッセージ

スライドを「<」矢印で左方向に流しているときは問題なくスムーズに動くのですが、
「>」で右方向に動かすと、以下のような動きが生じます。
・幅1920pxのとき→ メインスライド(.slick-current)が定位置以上に行き過ぎてから戻る
・幅980pxのとき→ メインスライド(.slick-current)が定位置前で一時停止してから戻る

検証ツールで確認したところ、.slick-trackが右方向スライド時に一度大きく右に移動してから少し戻る、といった挙動をしております。

該当のソースコード

HTML

1<body class="top"> 2 <div class="kv__wrapper"> 3 <ul class="kv__slide js-kv__slide" dir="rtl"> 4 <li> 5 <a href="#" class="kv__thumb"><img src="https://placehold.jp/595x476.png" alt=""></a> 6 </li> 7 <li> 8 <a href="#" class="kv__thumb"><img src="https://placehold.jp/595x476.png" alt=""></a> 9 </li> 10 <li> 11 <a href="#" class="kv__thumb"><img src="https://placehold.jp/595x476.png" alt=""></a> 12 </li> 13 <li> 14 <a href="#" class="kv__thumb"><img src="https://placehold.jp/595x476.png" alt=""></a> 15 </li> 16 <li> 17 <a href="#" class="kv__thumb"><img src="https://placehold.jp/595x476.png" alt=""></a> 18 </li> 19 <li> 20 <a href="#" class="kv__thumb"><img src="https://placehold.jp/595x476.png" alt=""></a> 21 </li> 22 </ul> 23 </div> 24</body>

css

1.top .kv__wrapper { 2 position: relative; 3} 4@media (min-width: 769px) { 5 .top .kv__slide { 6 z-index: 10000; 7 } 8} 9 10.top .kv__slide .slick-arrow { 11 text-indent: 100%; 12 white-space: nowrap; 13 overflow: hidden; 14 width: 27px; 15 height: 27px; 16 border-right: 2px solid #000; 17 border-top: 2px solid #000; 18 position: absolute; 19 transform: rotate(-135deg); 20 bottom: 17%; 21 left: 100px; 22 z-index: 500; 23} 24 25@media (min-width: 769px) { 26 .top .kv__slide .slick-arrow { 27 bottom: 12%; 28 width: 70px; 29 height: 70px; 30 } 31} 32 33.top .kv__slide .slick-track { 34 padding-bottom: 55%; 35} 36 37@media (min-width: 769px) { 38 .top .kv__slide .slick-track { 39 padding-bottom: 40%; 40 } 41} 42 43@media (min-width: 1280px) { 44 .top .kv__slide .slick-track { 45 padding-bottom: 70px; 46 } 47} 48 49.top .kv__slide .slick-list { 50 height: 100%; 51 padding: 0 0 0 28.6% !important; 52} 53 54@media (min-width: 769px) { 55 .top .kv__slide .slick-list { 56 padding: 0 0 0 400px !important; 57 } 58} 59 60@media (min-width: 1280px) { 61 .top .kv__slide .slick-list { 62 padding: 0 !important; 63 } 64} 65 66.top .kv__slide .slick-list .slick-slide { 67 position: relative; 68 bottom: -140px; 69 transition: 0.3s; 70 width: 80vw; 71} 72 73@media (min-width: 769px) { 74 .top .kv__slide .slick-list .slick-slide { 75 bottom: -290px; 76 width: auto; 77 } 78} 79 80@media (min-width: 1280px) { 81 .top .kv__slide .slick-list .slick-slide { 82 bottom: -320px; 83 margin-right: 30px; 84 } 85} 86 87.top .kv__slide .slick-list .slick-slide .kv__cap { 88 display: none; 89 font-size: 4.8rem; 90} 91 92@media (min-width: 769px) { 93 .top .kv__slide .slick-list .slick-slide .kv__thumb { 94 width: 100%; 95 } 96} 97 98@media (min-width: 769px) { 99 .top .kv__slide .slick-list .slick-slide .kv__thumb img { 100 width: 100%; 101 } 102} 103 104.top .kv__slide .slick-list .slick-slide.slick-current { 105 transform: translateY(-135px); 106 z-index: 200; 107 margin-left: -20px; 108} 109 110@media (min-width: 769px) { 111 .top .kv__slide .slick-list .slick-slide.slick-current { 112 transform: translateY(-290px); 113 width: calc(100vw - 400px) !important; 114 margin-left: -70px; 115 } 116} 117 118@media (min-width: 1280px) { 119 .top .kv__slide .slick-list .slick-slide.slick-current { 120 max-width: 880px; 121 width: 100%; 122 transform: translateY(-316px); 123 } 124} 125 126.top .kv__slide .slick-list .slick-slide.slick-current .kv__thumb { 127 border-radius: 5px 0 0 5px; 128 overflow: hidden; 129 -moz-box-shadow: -5px 10px 18px 5px rgba(0, 0, 0, 0.36); 130 -webkit-box-shadow: -5px 10px 18px 5px rgba(0, 0, 0, 0.36); 131 -ms-box-shadow: -5px 10px 18px 5px rgba(0, 0, 0, 0.36); 132 box-shadow: -5px 10px 18px 5px rgba(0, 0, 0, 0.36); 133} 134 135@media (min-width: 1280px) { 136 .top .kv__slide .slick-list .slick-slide.slick-current .kv__thumb { 137 border-radius: 10px 0 0 10px; 138 } 139} 140

js

1$(function(){ 2 $('.js-kv__slide').slick({ 3 mobileFirst: true, 4 rtl: true, 5 infinite: true, 6 arrows: true, 7 slidesToShow: 1, 8 slidesToScroll: 1, 9 variableWidth: true, 10 }); 11});

試したこと

心当たりがあるとすれば、スライドにvariableWidthを指定している点です。
メインスライド(.slick-current)にmax-width: 880pxを指定しており、
またスマホ時にスライドの幅を固定にするため、オプションでvariableWidth: trueを指定しています。

PC時にvariableWidthをfalseにすると動きに問題はなくなるのですが、なぜかスライドが2段になってしまうためPCでもtrueにしておりました。
variableWidthをfalseにし、1段で表示されれば一番良いのかもしれませんが、2段になってしまう原因がわからない状態です。

ご教授いただければ幸いです。

補足情報(FW/ツールのバージョンなど)

jqueryのバージョンは2.2.4、slickは1.8.1です。

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

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

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

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

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

guest

回答1

0

ベストアンサー

カクつく原因は単純に
.slick-currentに対してスタイルをかけているところにあります。

動きが完了したタイミングで.slick-currentが付与されるので、そこでCSSが適用され、急な移動につながります。

投稿2021/02/24 23:29

macaron_xxx

総合スコア3191

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

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

ztj

2021/02/25 01:18

ご回答ありがとうございます。 知識不足で恐縮ですが、質問させてください。 .slick-currentにスタイルを効かせるのは下記のサイトを参考にしたのですが、 そちらでは左右にスライドさせても問題なく作動しています。 https://www.nxworld.net/jquery-plugin-slick-current-class-examples.html classが付与されるタイミングですと左右で違いが出ないのではと思うのですが、 左にスライドさせる時は問題なく、右の時だけ急な動きになってしまうのはのはなぜでしょうか? スライド自体が右寄せだからでしょうか。
ztj

2021/03/01 09:13

.slick-currentに他のスライドと違うwidthを指定しているのがカクつく原因だったのですね。 widthではなくtransform:scaleで大きく見せることで解決しました。 ヒントを頂きありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問