\r\n\r\n\r\n\r\n\r\n
\r\n\r\n
\r\n\"\"\r\n\"\"\r\n\"\"\r\n
\r\n\r\n
\r\n\r\n\r\n```\r\n\r\n[このページにあったものを流用しています。→http://d.hatena.ne.jp/Shinez/20130422/p1](http://d.hatena.ne.jp/Shinez/20130422/p1)\r\n色々と調べたのですが解決に至らず、ご存知の方がいらっしゃいましたらご教示くださいませ。","answerCount":1,"upvoteCount":0,"datePublished":"2017-02-06T02:22:35.130Z","dateModified":"2017-02-06T02:22:35.130Z","acceptedAnswer":{"@type":"Answer","text":"`opacity` で切り替えているため重ね順が変わらないからでは? `z-index` も変えればクリックできるものも変わると思います。\r\n\r\nあと、img を absolute で浮かすよりその周りの a を操作するようにして、`z-index` もそっちでやればいいかも。img も a も両方 `display:block` 指定しておいて。\r\n\r\n\r\n---\r\n\r\n**追記:**\r\n\r\n「[スライダー JavaScript](https://www.google.co.jp/search?num=100&safe=off&q=%E3%82%B9%E3%83%A9%E3%82%A4%E3%83%80%E3%83%BC+JavaScript)」 と検索すると下記のような比較記事が出てくるので、その中から求める挙動をさがし、それの参考記事を見つける、とかがお勧めです。\r\n\r\n【レスポンシブ対応のjQueryスライダー系ライブラリ × 11選 - ONZE】\r\n[http://on-ze.com/archives/4996](http://on-ze.com/archives/4996)\r\n\r\nざっと見た中で [Swiper](http://idangero.us/swiper/api/) の autoplay autoplayStopOnLast オプションあたりで自動切換えと停止が出来そうな気がします。\r\n\r\n【Swiper API】\r\n[http://idangero.us/swiper/api/](http://idangero.us/swiper/api/)\r\n\r\n【swiper.js使ってみたからそのオプションについて – なんかいろいろデザインする人】\r\n[http://reiwinn-web.net/2016/11/30/swiper-js-01/](http://reiwinn-web.net/2016/11/30/swiper-js-01/)\r\n\r\n","dateModified":"2017-02-06T06:23:46.022Z","datePublished":"2017-02-06T02:33:33.837Z","upvoteCount":2,"url":"https://teratail.com/questions/64751#reply-102475"},"suggestedAnswer":[],"breadcrumb":{"@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"トップ","url":"https://teratail.com"},{"@type":"ListItem","position":2,"name":"スライダーに関する質問","url":"https://teratail.com/tags/%E3%82%B9%E3%83%A9%E3%82%A4%E3%83%80%E3%83%BC"},{"@type":"ListItem","position":3,"name":"スライダー","url":"https://teratail.com/tags/%E3%82%B9%E3%83%A9%E3%82%A4%E3%83%80%E3%83%BC"}]}}}
質問するログイン新規登録
スライダー

GUIのグラフィカルウィジェットのひとつです。インジケーターを動かすことで値を調節可能とします。

jQuery

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

Q&A

解決済

1回答

3656閲覧

jQueryを使ったスライドショーにて最後の画像で止めるスクリプトにリンクを付ける

M_Nkn

総合スコア12

スライダー

GUIのグラフィカルウィジェットのひとつです。インジケーターを動かすことで値を調節可能とします。

jQuery

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

0グッド

0クリップ

投稿2017/02/06 02:22

0

0

###前提・実現したいこと
①スライダーの設置
②スライダーの画像ごとにリンクをつけたい
③最後のスライダー画像で止めたい(ループせず一周だけにしたい)

###発生している問題・エラーメッセージ
①と③は設置できたものの、画像へのリンク設定がうまくきません。
1枚ごとに違うリンクを貼っていますが、
1枚目のリンクをずっと引き継いでしまい、2枚目以降のリンクが有効になりません。

###該当のソースコード

<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>SAMPLE</title> <style type="text/css"> <!-- *{ magin: 0; padding: 0; } #container{ width: 100%; text-align: center; } #slideshow{ visibility: hidden; margin: 0 auto; width: 500px; height: 200px; text-align: left; position: relative; overflow: hidden; } #slideshow img{ top: 0; left: 0; position: absolute; } --> </style> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script> <script type="text/javascript"><!-- $(function(){ $(window).load(function(){ //================================================= // ユーザー設定 var divID = 'slideshow' var fadeTime = 2000; var fadeTimeLast = 5000; var switchTime = 3500; //================================================= var objDiv = document.getElementById(divID); if (!objDiv){return;} var objImg = objDiv.getElementsByTagName('img'); objDiv.style.visibility = 'visible'; imgChange(objImg, fadeTime, fadeTimeLast, switchTime, 0); }); function imgChange(objImg, fadeTime, fadeTimeLast, switchTime, cnt){ if (cnt == 0){ if (objImg.length == 0){return;} //画像がない時 $(objImg).css({opacity:'0'}); $(objImg[cnt]).stop().animate({opacity:'1'},fadeTime); if (objImg.length == 1){return;} //1枚だけの時 } else if ((cnt == objImg.length - 1) && (objImg.length > 1)){ for (i = 0; i <= 1; i++){$(objImg[(cnt - 1) + i]).stop().animate({opacity:i},fadeTimeLast);} return; } else { for (i = 0; i <= 1; i++){$(objImg[(cnt - 1) + i]).stop().animate({opacity:i},fadeTime);} } cnt++; setTimeout(function(){imgChange(objImg, fadeTime, fadeTimeLast, switchTime, cnt);},switchTime); }; }); //--> </script> </head> <body> <div id="container"> <div id="slideshow"> <a href="http://yahoo.co.jp"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/S/Shinez/20130424/20130424074133.jpg" alt="" width="500" height="200"></a> <a href="https://www.goo.ne.jp/"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/S/Shinez/20130424/20130424074130.jpg" alt="" width="500" height="200"></a> <a href="http://google.co.jp"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/S/Shinez/20130424/20130424074128.jpg" alt="" width="500" height="200"></a> </div> </div> </body> </html>

このページにあったものを流用しています。→http://d.hatena.ne.jp/Shinez/20130422/p1
色々と調べたのですが解決に至らず、ご存知の方がいらっしゃいましたらご教示くださいませ。

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

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

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

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

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

guest

回答1

0

ベストアンサー

opacity で切り替えているため重ね順が変わらないからでは? z-index も変えればクリックできるものも変わると思います。

あと、img を absolute で浮かすよりその周りの a を操作するようにして、z-index もそっちでやればいいかも。img も a も両方 display:block 指定しておいて。


追記:

スライダー JavaScript」 と検索すると下記のような比較記事が出てくるので、その中から求める挙動をさがし、それの参考記事を見つける、とかがお勧めです。

【レスポンシブ対応のjQueryスライダー系ライブラリ × 11選 - ONZE】
http://on-ze.com/archives/4996

ざっと見た中で Swiper の autoplay autoplayStopOnLast オプションあたりで自動切換えと停止が出来そうな気がします。

【Swiper API】
http://idangero.us/swiper/api/

【swiper.js使ってみたからそのオプションについて – なんかいろいろデザインする人】
http://reiwinn-web.net/2016/11/30/swiper-js-01/

投稿2017/02/06 02:33

編集2017/02/06 06:23
kei344

総合スコア69643

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

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

M_Nkn

2017/02/06 02:58

回答ありがとうございます。 こういうことでしょうか? 申し訳ないのですがJavaScriptがほとんど読めません。。。 <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>SAMPLE</title> <style type="text/css"> <!-- *{ magin: 0; padding: 0; } #container{ width: 100%; text-align: center; } #slideshow{ visibility: hidden; margin: 0 auto; width: 500px; height: 200px; text-align: left; position: relative; overflow: hidden; } #slideshow img{ top: 0; left: 0; display:block; } #slideshow a{ top: 0; left: 0; position: absolute; display:block; z-index:999; } --> </style> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script> <script type="text/javascript"><!-- $(function(){ $(window).load(function(){ //================================================= // ユーザー設定 var divID = 'slideshow' var fadeTime = 2000; var fadeTimeLast = 5000; var switchTime = 3500; //================================================= var objDiv = document.getElementById(divID); if (!objDiv){return;} var objImg = objDiv.getElementsByTagName('a'); objDiv.style.visibility = 'visible'; imgChange(objImg, fadeTime, fadeTimeLast, switchTime, 0); }); function imgChange(objImg, fadeTime, fadeTimeLast, switchTime, cnt){ if (cnt == 0){ if (objImg.length == 0){return;} //画像がない時 $(objImg).css({opacity:'0'}); $(objImg[cnt]).stop().animate({opacity:'1'},fadeTime); if (objImg.length == 1){return;} //1枚だけの時 } else if ((cnt == objImg.length - 1) && (objImg.length > 1)){ for (i = 0; i <= 1; i++){$(objImg[(cnt - 1) + i]).stop().animate({opacity:i},fadeTimeLast);} return; } else { for (i = 0; i <= 1; i++){$(objImg[(cnt - 1) + i]).stop().animate({opacity:i},fadeTime);} } cnt++; setTimeout(function(){imgChange(objImg, fadeTime, fadeTimeLast, switchTime, cnt);},switchTime); }; }); //--> </script> </head> <body> <div id="container"> <div id="slideshow"> <a href="http://yahoo.co.jp"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/S/Shinez/20130424/20130424074133.jpg" alt="" width="500" height="200"></a> <a href="https://www.goo.ne.jp/"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/S/Shinez/20130424/20130424074130.jpg" alt="" width="500" height="200"></a> <a href="http://google.co.jp"><img src="http://cdn-ak.f.st-hatena.com/images/fotolife/S/Shinez/20130424/20130424074128.jpg" alt="" width="500" height="200"></a> </div> </div> </body> </html>
kei344

2017/02/06 06:19

> 申し訳ないのですがJavaScriptがほとんど読めません。。。 それであれば、参考にされているスクリプトを使うのはやめたほうが良いです。(汎用性や拡張性に乏しいので) 代替出来るライブラリを探すことをお勧めします。(あとで少しだけ追記しておきます) また、コメント欄ではコードブロックが使えないため、質問に追記されるほうが良いですよ。(その場合 元のコードを消さないでくださいね)
M_Nkn

2017/02/06 06:40

すいません、ご丁寧に指摘いただきありがとうございます。m(__)m
M_Nkn

2017/02/06 07:12

追記について:教えていただいたもので実装できました!!本当に助かりました。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.29%

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

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

質問する

関連した質問