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

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

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

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

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

jQuery

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

HTML

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

Q&A

解決済

1回答

2912閲覧

Swiperでスライドを削除したい

agepan

総合スコア66

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

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

jQuery

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

HTML

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

0グッド

0クリップ

投稿2019/09/21 04:58

編集2019/09/21 05:00

Swiperでスライド画面を実装しています。
スライドを操作中に特定のスライドを削除したいため、公式サイトにあるデモと同じページを使って、スライドを削除するコードを書き加えました。

以下の「スライド削除実行(slideDelete())」をクリックすると1枚目と3枚目のスライドが削除されます。
ここまでは良いのですが、スライド4枚目(以降)を表示しているときに削除を実行すると、表示しているスライドが4から5へ変わってしまいます。

スライド4を表示したまま、1枚目と3枚目のスライドを背後で削除したいのですが、スライド4を固定表示させたままスライド削除する方法が見つかりません(<div class="swiper-slide">をDOMから直接削除しても、スライド位置が4から5へずれてしまいます)。

上記を実現できるアイディア・方法がお分かりの方いらっしゃいましたらよろしくお願いいたします。

HTML

1<!DOCTYPE html> 2<html lang="en"> 3<head> 4 <meta charset="utf-8"> 5 <title>Swiper demo</title> 6 <!-- Link Swiper's CSS --> 7 <link rel="stylesheet" href="../package/css/swiper.min.css"> 8 9 <!-- Demo styles --> 10 <style> 11 html, body { 12 position: relative; 13 height: 100%; 14 } 15 body { 16 background: #eee; 17 font-family: Helvetica Neue, Helvetica, Arial, sans-serif; 18 font-size: 14px; 19 color:#000; 20 margin: 0; 21 padding: 0; 22 } 23 .swiper-container { 24 width: 100%; 25 height: 100%; 26 } 27 .swiper-slide { 28 text-align: center; 29 font-size: 18px; 30 background: #fff; 31 32 /* Center slide text vertically */ 33 display: -webkit-box; 34 display: -ms-flexbox; 35 display: -webkit-flex; 36 display: flex; 37 -webkit-box-pack: center; 38 -ms-flex-pack: center; 39 -webkit-justify-content: center; 40 justify-content: center; 41 -webkit-box-align: center; 42 -ms-flex-align: center; 43 -webkit-align-items: center; 44 align-items: center; 45 } 46 </style> 47</head> 48<body> 49 <!-- Swiper --> 50 <div class="swiper-container"> 51 <div class="swiper-wrapper"> 52 <div class="swiper-slide">Slide 1</div> 53 <div class="swiper-slide">Slide 2</div> 54 <div class="swiper-slide">Slide 3</div> 55 <div class="swiper-slide">Slide 4</div> 56 <div class="swiper-slide">Slide 5</div> 57 <div class="swiper-slide">Slide 6</div> 58 <div class="swiper-slide">Slide 7</div> 59 <div class="swiper-slide">Slide 8</div> 60 <div class="swiper-slide">Slide 9</div> 61 <div class="swiper-slide">Slide 10</div> 62 </div> 63 </div> 64 65 66 <div onclick="slideDelete()">スライド削除実行</div> 67 68 <!-- Swiper JS --> 69 <script src="../package/js/swiper.min.js"></script> 70 71 <!-- Initialize Swiper --> 72 <script> 73 74 var swiper = new Swiper('.swiper-container'); 75 76 function slideDelete(){ 77 swiper.removeSlide([0,2]); 78 } 79 80 </script> 81</body> 82</html> 83

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

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

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

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

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

guest

回答1

0

ベストアンサー

こんにちは

ドキュメントの Slider Methods & Properties によると、activeIndex というプロパティに、表示対象になるスライドのインデクスを取得できます。これを踏まえて、

**修正前: **

javascript

1swiper.removeSlide([0,2]);

と、2個のスライドを一度に removeSlide した後の swiper.activeIndex の値を確認したところ、

スライド4を固定表示させたまま

になるようには更新されませんでした。 removeSlide(n) と、1個削除だと望ましい(=期待される動きを実現する)値に更新されるようですので、上記の1行を以下の2行に修正してみるといかがでしょうか?

**修正後: **

javascript

1swiper.removeSlide(2); 2swiper.removeSlide(0);

なお上記で, removeSlide(0)removeSlide(2) の順番を変えて

javascript

1swiper.removeSlide(0); 2swiper.removeSlide(2);

とすると、上記の場合の removeSlide(2)  は、元々のインデクス 0 のスライドが削除された後の インデクス 2 のスライドを消してしまうので、意図通りにはならなくなります。

以上、参考になれば幸いです。

補足

github の issues で removeSlide に関する投稿をざっと眺めてみると、削除した後に(アプリが意図するUIとの)整合性をとるために、何がしかの工夫が必要というような内容の投稿がいくつか目につきましたので、そちらで質問すると、上記の回答の他にもより良い方法が、作者から直接、レスされるかもしれません。

投稿2019/09/21 15:55

編集2019/09/22 01:48
jun68ykt

総合スコア9058

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

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

agepan

2019/09/22 02:23

ご回答ありがとうございました! ご回答の通りコードを組み直すことで理想的な動作になりました! 今実装しているページでは全く動作上問題ありません。 ありがとうございました!
jun68ykt

2019/09/22 02:33

どういたしまして。解決されたようで、よかったです ????
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問