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

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

新規登録して質問してみよう
ただいま回答率
85.49%
JavaScript

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

HTML

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

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

解決済

1回答

5359閲覧

slick sliderの挙動がおかしくて困っています。

shomo

総合スコア8

JavaScript

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

HTML

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

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

0クリップ

投稿2018/08/27 09:12

slickを使って、画像なし、テキストだけのリストを6枚スライドさせています。しかし、widthが自動計算されるせいか、挙動がおかしいです。何枚かのスライドが重なっていたり、時々動きがカクカクしたりします。
特に、dotsは、widthが大きな数字になり、一行で表示されず二行になったりします。
どこをなおせばいいのか教えてください。

html

1<div class="slider-container"> 2 <div class="slider"> 3 <div class="flow-slide"> 4 <p class="">、、、</p> 5 <div class="flow-list"> 6 <p class="">、、、</p> 7 <p class=""><span class="marker">、、、</p> 8 <p class=""><img src=.png" alt=""></p> 9 <p class="">、、、 10 </div> 11 </div> 12      <div class="flow-slide"> 13 <p class="">、、、</p> 14 <div class="flow-list"> 15 <p class="">、、、</p> 16 <p class=""><span class="marker">、、、</p> 17 <p class=""><img src=.png" alt=""></p> 18 <p class="">、、、 19 </div> 20 21    、、、 22 </div> 23 24

css

1 2.slider-container { 3 display: none; 4 position: relative; 5 width: 84%; 6 margin: 0 auto; 7} 8.slider-container.initialized { 9 display:block; 10} 11.slider { 12 margin: 0 24px; 13 overflow: hidden; 14} 15.slick-list { 16 margin-right: -12px; /* ガター分ネガティブマージン */ 17} 18.slider-arrow { 19 position: absolute; 20 top: 50%; 21 height: 36px; 22 margin-top: -18px; /* 高さの半分だけネガティブマージン */ 23 line-height: 36px; 24 font-size: 28px; 25 cursor: pointer; 26 z-index: 10; /* 重要 */ 27} 28.slider-prev { 29 left: 0; 30} 31.slider-next { 32 right: 0; 33} 34.slick-slide { 35 margin-right: 12px; /* ガター */ 36} 37.slick-slide { 38 outline: 0; 39} 40 41.slick-slide { 42 transition: .3s ease; 43 transform: scale(.85); 44} 45.slick-current { 46 transform: scale(1); 47} 48.slick-slide:not(.slick-current) { 49 opacity: .5; 50} 51.flow-slide { 52 width: 240px; 53 height: 800px; 54} 55.flow-list{ 56 width: 240px; 57 height: 600px; 58 border: 1px solid #000; 59 background-color: #fff; 60 padding: 24px; 61} 62

js

1var $slider_container = $('.slider-container'), 2 $slider = $('.slider'); 3 4// スライド初期化時にクラスを追加 5// はじめはdisplay:noneしておき、.initializedが追加されたらdisplay:block 6$slider.on('init', function(){ 7 $slider_container.addClass('initialized'); 8}); 9 10$slider.slick({ 11 appendArrows: $slider_container, 12 prevArrow: '<div class="slider-arrow slider-prev fa fa-angle-left"></div>', 13 nextArrow: '<div class="slider-arrow slider-next fa fa-angle-right"></div>', 14 slidesToShow: 3, 15 slidesToScroll: 1, 16 centerMode: true, 17// dots:true, 18 variableWidth: true, 19 autoplay: true 20}); 21 22// スライドの横幅を小数点以下pxまで表示 23$slider.on('setPosition', function(){ 24 var slider_width = $slider.width(), 25 slide_gutter = $slider.find('.slick-slide').eq(0).css('margin-right').split('px')[0], 26 slides_num = $slider.slick('slickGetOption', 'slidesToShow'), 27 slide_width = (slider_width - slide_gutter * (slides_num - 1)) / slides_num; 28 $slider.find('.slick-active').css('width', slide_width + 'px'); 29}); 30

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

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

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

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

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

guest

回答1

0

ベストアンサー

何枚かのスライドが重なっていたり、

これは$slider.on('setPosition', function(){});の中でやっている横幅調整処理のせいです。
この処理自体なくしてしまえばスライドは重なりません。

時々動きがカクカクしたり

これは、末尾スライドと先頭スライドの間の移動でアニメーションが実行されていないせいです。

css

1.slick-slide { 2 transition: .3s ease; 3 transform: scale(.85); 4} 5.slick-current { 6 transform: scale(1); 7}

こいつらですね。

おそらくslickが付与してくれるclassをあてにしてアニメーションさせるつもりなんだと思いますが、末尾と先頭の切り替わり時のclassの付け外しが、他のスライド移動時とは異なるのでしょう。
このようなレイアウト系のライブラリを使用するときは、ライブラリが用意している機能で実現できる範囲で動作させる方がいいと思います。
独自に拡張したいのなら、それこそライブラリ標準の動作との兼ね合いはご自身で徹底的に調査するしかないかと思います。
私もそこまで調査する気はないです。悪しからず。

投稿2018/08/27 10:25

編集2018/08/29 09:54
spookybird

総合スコア1803

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

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

shomo

2018/08/27 22:31

早々に回答いただきありがとうございます。 すみません、投稿の仕方が悪かったです。 HTMLは、画像でなくテキストなので、中身が多く、投稿の際に中身を消して「、、、」で表現してしまいました。 実際は、classにもクラス名、img src属性も入っています。 続くんですかね?の件ですが、同じ<div class="flow-slide></div>の組み合わせが6件続いています。 HTMLの構造は問題ないと思うのですが、他に間違っているのでは?というところがあればご指摘いただければと思います。 こちらの投稿の仕方が悪く、申し訳ございません。
spookybird

2018/08/28 01:21

事象を再現できるソースコードをご提示いただかないと確認のしようがありません。
shomo

2018/08/28 17:11 編集

大変失礼いたしました。 <div class="slider-container"> <div class="slider"> <div class="flow-slide"> <p class="flow-number"><span>step</span>01</p> <div class="flow-list"> <p class="flow-date">アイウエオ</p> <p class="flow-text">アイウエオアイウエオアイウエオアイウエオアイウエオアイウエオアイウエオアイウエオアイウエオアイウエオアイウエオアイウエオアイウエオ</a></p> </div> </div> <div class="flow-slide"> <p class="flow-number"><span>step</span>01</p> <div class="flow-list"> <p class="flow-date">アイウエオ</p> <p class="flow-text">アイウエオアイウエオアイウエオアイウエオアイウエオアイウエオアイウエオアイウエオアイウエオアイウエオアイウエオアイウエオアイウエオ</a></p> </div> </div> <div class="flow-slide"> <p class="flow-number"><span>step</span>01</p> <div class="flow-list"> <p class="flow-date">アイウエオ</p> <p class="flow-text">アイウエオアイウエオアイウエオアイウエオアイウエオアイウエオアイウエオアイウエオアイウエオアイウエオアイウエオアイウエオアイウエオ</a></p> </div> </div> <div class="flow-slide"> <p class="flow-number"><span>step</span>01</p> <div class="flow-list"> <p class="flow-date">アイウエオ</p> <p class="flow-text">アイウエオアイウエオアイウエオアイウエオアイウエオアイウエオアイウエオアイウエオアイウエオアイウエオアイウエオアイウエオアイウエオ</a></p> </div> </div> <div class="flow-slide"> <p class="flow-number"><span>step</span>01</p> <div class="flow-list"> <p class="flow-date">アイウエオ</p> <p class="flow-text">アイウエオアイウエオアイウエオアイウエオアイウエオアイウエオアイウエオアイウエオアイウエオアイウエオアイウエオアイウエオアイウエオ</a></p> </div> </div> <div class="flow-slide"> <p class="flow-number"><span>step</span>01</p> <div class="flow-list"> <p class="flow-date">アイウエオ</p> <p class="flow-text">アイウエオアイウエオアイウエオアイウエオアイウエオアイウエオアイウエオアイウエオアイウエオアイウエオアイウエオアイウエオアイウエオ</a></p> </div> </div> </div> </div> HTMLはこのようになっています。
shomo

2018/08/30 09:45

回答ありがとうございました。 こちらからの連絡が遅くなり、大変申し訳ございません。 重なりの件は、横幅調整処理のところをみてみます! また、classの追加の件は、まさかこれが問題になっているとは思いませんでした。 ここのスライドに関しては、どうやってもうまくいかず困っていたので、本当に感謝いたします。 今回、こちらのサイトで初投稿して、大変勉強になりました。 ご丁寧な解説をありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問