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

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

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

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

HTML5

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

JavaScript

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

ループ

ループとは、プログラミングにおいて、条件に合致している間、複数回繰り返し実行される箇所や、その制御構造を指します

Q&A

解決済

1回答

4062閲覧

JavaScriptでカルーセルパネルをループ出来るようにしたい

m_miura1980

総合スコア6

CSS3

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

HTML5

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

JavaScript

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

ループ

ループとは、プログラミングにおいて、条件に合致している間、複数回繰り返し実行される箇所や、その制御構造を指します

0グッド

0クリップ

投稿2021/07/13 08:38

前提・実現したいこと

JavaScriptでカルーセルパネルを作成しています。
現在画像を4枚で作成していますが、「slick.js」やjQueryを利用せずループするようにしたいです。
イメージ説明

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

4枚目以降になった場合1~4の画像を1度きりであれば複製出来るが複製してループするようにしたいが出来ない。

該当のソースコード

html

1<body> 2 <div class="ly_wrap"> 3 <div class="ly_img_wrap"> 4 <ul> 5 <li><img src="img/photo01.png" alt="sample画像01"></li> 6 <li><img src="img/photo02.png" alt="sample画像02"></li> 7 <li><img src="img/photo03.png" alt="sample画像03"></li> 8 <li><img src="img/photo04.png" alt="sample画像04"></li> 9 </ul> 10 </div> 11 <!-- /.ly_img_wrap --> 12 <p class="prev img_button">&lt;</p> 13 <!-- /.plev --> 14 <p class="next img_button">&gt;</p> 15 <!-- /.next --> 16 </div> 17 <!-- /.ly_wrap --> 18 <script src="main.js"></script> 19</body>

css

1@charset "UTF-8"; 2 3.ly_wrap { 4 width: 300px; 5 margin: 10px auto; 6 position: relative; 7} 8 9.ly_img_wrap { 10 display: flex; 11 overflow: hidden; 12 scroll-behavior: smooth; 13} 14 15.ly_img_wrap ul { 16 list-style: none; 17 display: flex; 18 margin: 0; 19 padding: 0; 20} 21 22.ly_img_wrap img { 23 width: 300px; 24 vertical-align: bottom; 25} 26 27.img_button { 28 font-size: 10px; 29 width: 25px; 30 height: 25px; 31 line-height: 25px; 32 text-align: center; 33 color: rgb(240, 240, 240); 34 background: rgb(200, 200, 200, 0.7); 35 border-radius: 50%; 36 cursor: pointer; 37 user-select: none; 38 position: absolute; 39 top: 72px; 40} 41 42.prev { 43 left: 5px; 44} 45 46.next { 47 right: 5px; 48}

javascript

1'use strict'; 2 3const imgWrap = document.querySelector('.ly_img_wrap'); 4 5const prev = document.querySelector('.prev'); 6const next = document.querySelector('.next'); 7 8prev.addEventListener('click', ()=>{ 9 imgWrap.scrollLeft -= 300; 10}); 11 12next.addEventListener('click', ()=>{ 13 imgWrap.scrollLeft += 300; 14}); 15

試したこと

その1

javascript

1const ul = document.querySelector('.ly_img_wrap ul'); 2const copy = ul.cloneNode(true); 3imgWrap.insertBefore(copy, null);

cloneNodeを利用し1回の複製は出来ましたがループするような動きには程遠い状態です。
insertBeforeを利用し後(右側)に追加は出来ますが、前(左側)に追加が出来ない状態です。

その2
appendとprependメソッドを試しましたが希望通りにはならず、cloneNodeと同じように1回の複製でしかも前に要素が追加されませんでした。

つたない説明で申し訳ありませんがご教授お願い致します。

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

端末:Windows10 Home
テキストエディタ:VS Code
ブラウザ:Chrome

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

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

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

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

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

yambejp

2021/07/13 08:40

スリックしなくても大丈夫ですか? スライドイン・アウトは必要ですか? 見栄えを調整するならライブラリが有利だと思いますが・・・
m_miura1980

2021/07/13 08:46

ご返信ありがとうございます。 <p class="prev img_button">&lt;</p>と<p class="next img_button">&gt;</p>をクリックして進んでいった際に希望の状態にしていきたいと考えています。 現段階でスライドイン・アウトは一旦不要と考えています。 操作で確認しライブラリが調整簡単なのですが、実装環境がライブラリの組み込みが難しい為 ライブラリが無い状態で実装できれば幸いです。
guest

回答1

0

ベストアンサー

スライドしないなら全部重ねておいてz-indexだけ調整すれば良いと思います

sample

投稿2021/07/13 08:55

編集2021/07/13 11:13
yambejp

総合スコア116732

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

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

m_miura1980

2021/07/13 08:58

早速のご回答ありがとうございます。 大変失礼しました。 スライドイン、アウトの意味を履き違えておりました。 スライドイン、アウトをした上での動作を希望しております。
yambejp

2021/07/13 11:14

ちょっと手抜きですがsampleつけておきました
m_miura1980

2021/07/14 23:59

sampleまで記載して頂きありがとうございました。 希望通りになりました。 ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問