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

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

ただいまの
回答率

90.48%

  • JavaScript

    17040questions

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

  • jQuery

    6936questions

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

  • jQueryプラグイン

    528questions

    jQueryの拡張機能。 様々な種類があり、その数は膨大です。公開済みのプラグインの他にも、自作することもできます。 jQueryで利用できるようにしておくだけで、導入およびカスタマイズが比較的容易に行なえます。

Lightboxを利用してポップアップなしの画像ギャラリーを作成しようとしています

解決済

回答 3

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 548

hidepon

score 161

簡単な画像ギャラリーを作成してズーム機能を付与しようとしています。
主画像1枚
サムネイル関連する画像全てを下に並べるというベタな構造です。
サムネイルにマウスを乗せると主画像を該当する画像に置き換えるという、よくありがちな
小細工をします。
これをlightbox を利用して、画像のポップアップをしない形で実現したいと思っています。
そもそも、lightbox でオーバーレイを設定せずに実現できるのか?というのもあり試行錯誤しています。
あと、主画像をクリックするとzoom.jsというのを利用して拡大したいです。
これらについてご存知の方がいらっしゃったら教えていただけるでしょうか?

<script type="text/javascript" src="/js/lightbox.js"></script>
<link rel="stylesheet" href="/css/lightbox.css" type="text/css" media="all" />
<script src="/js/jquery.zoom.min.js"></script>
<script type="text/javascript" charset="utf-8">
$(function(){
    $(document).ready(function(){
        $('#main_image').zoom({ on:'click' });             
    });
    //マウスオーバーした場合
    $('.thumbnail').hover(function(){
        var index    =        $(".thumbnail").index(this) + 1;
        // マウスオーバーしている画像をメインの画像に反映
        $('#top_image').attr('src', $("#thumb" + index).attr('src'));
    });
    //クリックしたら確定的な措置
    $('.thumbnail').click(function(){
        var index    =        $(".thumbnail").index(this) + 1;
        // マウスオーバーしている画像をメインの画像に反映
        $('#top_image').attr('src', $("#thumb" + index).attr('src'));
    });





});

ここから追記

プラグインを使ってなんとかしようと思ったんですが、
なんだか訳わかんなくなってきて自力で作ってみました。
シンプルなものなので出来そうな気がして・・・あと主画像にzoom機能があれば
問題なさそうなのですが・・・・。とてもクラシックなギャラリー機能です。

    //マウスオーバーした場合
    $('.thumbnail').hover(function(){
        var index    =        $(".thumbnail").index(this) + 1;
        // マウスオーバーしている画像をメインの画像に反映
        $('#top_image').attr('src', $("#thumb" + index).attr('src'));
    });
      <div class="col-lg-12 col-md-12 col-sm-12 col-xs-12">
        <div class="row">
          <div class="col-lg-6 col-md-6 col-sm-6 col-xs-12" style="padding-right:30px">
            <div class="row">
              <div class="col-lg-12 col-md-12 col-sm-12 col-xs-12">
                <span class="zoom" id="main_image"><img src="/image/photo1.jpg" class="img-responsive" id="top_image" /></span>
              </div>
            </div>
            <div class="row">
              <div class="col-lg-12 col-md-12 col-sm-12 col-xs-12">
                <p class="col-lg-2 col-md-2 col-sm-2 col-xs-2"><img src="/image/photo1.jpg" class="img-responsive thumbnail" id="thumb1" /></p><p class="col-lg-2 col-md-2 col-sm-2 col-xs-2"><img src="/image/photo2.jpg" class="img-responsive thumbnail" id="thumb2" /></p><p class="col-lg-2 col-md-2 col-sm-2 col-xs-2"><img src="/image/photo3.jpg" class="img-responsive thumbnail" id="thumb3" /></p><p class="col-lg-2 col-md-2 col-sm-2 col-xs-2"><img src="/image/photo4.jpg" class="img-responsive thumbnail" id="thumb4" /></p><p class="col-lg-2 col-md-2 col-sm-2 col-xs-2"><img src="/image/photo5.jpg" class="img-responsive thumbnail" id="thumb5" /></p><p class="col-lg-2 col-md-2 col-sm-2 col-xs-2"><img src="/image/photo6.jpg" class="img-responsive thumbnail" id="thumb6" /></p>              </div>
            </div>
          </div>

さらに追記
いろいろ試してみているのですが、どうもうまくいかないので、CSSでやってみようと試みてます。

p img#top_image {
  width:500px;
  -webkit-transform: scale(1);
  transform: scale(1);
  -webkit-transition: .3s ease-in-out;
  transition: .3s ease-in-out;
}
p:hover img#top_image {
  width:500px;
  -webkit-transform: scale(1.3);
  transform: scale(1.3);
}
  <div class="row">
    <div class="col-lg-12 col-md-12 col-sm-12 col-xs-12">
      <p><img src="/image/photo1.jpg" class="img-responsive" id="top_image" /></p>
  </div>


としましたが、マウスを乗せると主画像の下に配置したサムネイル画像の領域にまで影響をしてしまいます。
この主画像の枠の範囲で拡大が出来ないでしょうか?

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • mts10806

    2017/09/12 09:10

    html部分もコードいただけますか?

    キャンセル

  • hidepon

    2017/09/12 09:22

    HTMLコードの部分をどのように記述したらいいのかが分からなくて・・・。aタグを外せばよいというわけでもなさそうで、悩んでいます。ご存知であれば教えていだければと思います。スミマセン・・・・

    キャンセル

  • kei344

    2017/09/12 13:11

    書かれている状況が再現するコード(HTML/CSS)を提示されてはいかがでしょう。

    キャンセル

  • hidepon

    2017/09/12 13:15

    もう訳が分かんなくなってきてパニック状態でシンプルに主画像の下にサムネイル画像を並べる。そして画像にマウスを乗せると主画像が切り替わる。というところまで自力でやりました。この主画像にズームができればOKなんですよね・・・・それが分からなくて。ソースを載せます。

    キャンセル

回答 3

+3

LightBoxはそもそもオーバーレイ表示するためのライブラリです。
そうではなく、単純にサムネイルホバーで画像が切り替わる機能ならば、他にいくらでもスライドショーライブラリがあります。
(Slick、Boxsliderなど使いやすいものを選べば良いと思います。)

LightBoxを使うのが前提だとするならば、メイン画像クリック時に出現するオーバーレイ部をCSSなどで非表示にしてしまうのも手かと思います。(#lightboxOverlayと#lightbox)

そしてメイン画像自体を何かしらの方法でズームすれば良いかと思います。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/09/12 13:01

    ご返答有難うございます。bxslider、slickを検討していますが、メイン画像部分、サムネイル画像部分にそれぞれ、同数の画像を並べてスライドショウを行う形式のように思います。(もしかして主画像1枚にする方法があるのでしょうかね???調べてみますが。)こうなると、マウスオーバーで選択状態にする、そしてズームをするという挙動について厳しいように感じます。ご教授頂ければ幸いです。

    キャンセル

checkベストアンサー

+2

古いjQueryプラグインですが、方向性としてはこういう感じでしょうか。

【[ECサイト][jQuery]商品画像のズーム表示[elevateZoom]】
http://peacepopo.net/blog-entry-59.html

【elevateweb.co.uk/image-zoom】
http://www.elevateweb.co.uk/image-zoom

【elevateweb.co.uk/image-zoom/examples】
http://www.elevateweb.co.uk/image-zoom/examples

【GitHub - elevateweb/elevatezoom】
https://github.com/elevateweb/elevatezoom

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/09/12 14:45

    ご回答有難うございます。どちらかというと、主画像の内部でzoom出来ることが望ましいと思っています。
    http://i-like-robots.github.io/EasyZoom/
    これが結構近いかな?と思っています。イマイチ使い方が分からないんですが・・・

    キャンセル

  • 2017/09/12 14:48

    提示のライブラリのサンプル内に同じ挙動がありますよ。

    キャンセル

  • 2017/09/12 15:40

    サムネイルの部分が近いかなとは思っているですが、、うまく動いてくれなくて・・・。説明の部分をもう少し詳しく書いて頂ければうれしいんですが。コピペのレベルでは動かないですね・・・何かが足りていないのだとは思います。

    キャンセル

  • 2017/09/13 09:58

    eazy zoom というのが近いのですが、うまくいきません。いったんここで質問を区切りますね。有難うございます。

    キャンセル

+1

試しにCSSで書いてみました。
サンプル

#wrapper {
  display:flex;
  width:150px;
  flex-flow:wrap;
}
#wrapper img{
  width:50px;
}
#wrapper .main{
  width:0px;
  order:1;
}
#wrapper img:hover + .main{
  width:150px;
  transition: all 500ms;
}
<div id="wrapper">
<img src="http://placehold.jp/150x150.png?text=1">
<img src="http://placehold.jp/150x150.png?text=1" class="main">
<img src="http://placehold.jp/150x150.png?text=2">
<img src="http://placehold.jp/150x150.png?text=2" class="main">
<img src="http://placehold.jp/150x150.png?text=3">
<img src="http://placehold.jp/150x150.png?text=3" class="main">
</div>

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/09/12 13:38

    あー、ポインタが離れても戻さないんですね。じゃあCSSだけだとダメだな……

    キャンセル

  • 2017/09/12 13:44

    スミマセン。クリックイベントも追記しました。上のコードに追加します。

    キャンセル

  • 2017/09/12 13:50

    質問部分に追記したコードのカタチでは難しいですかね!?とてもシンプルで古いタイプのギャラリーなんですが・・・

    キャンセル

  • 2017/09/12 17:42

    CSSで対応する方向性でやってみています。ご教授頂ければ幸いです。

    キャンセル

  • 2017/09/12 20:34

    CSSは状態を保持できないので、zoom.js と相性悪いと思います。
    すみません、質問を読み違えて混乱させてしまいましたね。申し訳ない。

    キャンセル

関連した質問

同じタグがついた質問を見る

  • JavaScript

    17040questions

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

  • jQuery

    6936questions

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

  • jQueryプラグイン

    528questions

    jQueryの拡張機能。 様々な種類があり、その数は膨大です。公開済みのプラグインの他にも、自作することもできます。 jQueryで利用できるようにしておくだけで、導入およびカスタマイズが比較的容易に行なえます。