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

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

新規登録して質問してみよう
ただいま回答率
85.48%
jQueryプラグイン

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

Q&A

解決済

1回答

1903閲覧

colorboxを閉じたとき、ページのトップに戻ってしまいます

futon

総合スコア10

jQueryプラグイン

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

0グッド

0クリップ

投稿2021/06/02 05:27

編集2021/06/12 17:52

前提・実現したいこと

colorboxを使ってポップアップを出しています。

colorbox

背景固定のデモ

ポップアップの中に元ページへのアンカーリンクを置いています。
見よう見まねで書いた背景固定の部分が上手く書けていないよう(?)で、アンカーリンクのリンクはきちんとアンカーの位置に移動するのですが、colorboxを普通に閉じた場合、ページのトップに戻ってしまいます。
普通に閉じた場合、ページのトップに戻らず、colorboxを開いたときのそのままの位置に戻りたいのでお知恵を拝借させてください。

該当のソースコード

html

1<div id="wrapper"> 2 <a class="inlineBox" href="#inline01">colorboxを開く</a> 3 <div style="display:none;"> 4 <div id="inline01"> 5 <a href="#anchor" class="close">アンカーリンクへ移動する</a> 6 </div> 7 </div> 8 . 9 . 10 . 11 12 <div id="anchor">リンク先</div> 13</div>

javascript

1 2var current_scrollY = $(window).scrollTop(); 3$(function() { 4 $(".inlineBox").colorbox({ 5 inline:true, 6 innerWidth: 600, 7 maxWidth:"90%", 8 maxHeight:"90%", 9 opacity: 0.7, 10 returnFocus:false, 11 onOpen:function(){ 12 current_scrollY = $(window).scrollTop(); 13 $('#wrapper').css({ 14 position: 'fixed', 15 width: '100%', 16 top: -1 * current_scrollY 17 }); 18 }, 19 onClosed:function(){ 20 $('#wrapper').attr({ style:''}); 21 } 22 }); 23 24 $('.close').on('click', function(e){ 25 e.preventDefault(); 26 $.colorbox.close(); 27 $('#wrapper').css({ 28 position: 'static', 29 }); 30 var position = $('#anchor').offset().top; 31 window.scrollTo(0,position); 32 }); 33});

試してみたこと

javascript

1onClosed:function(){ 2 $('#wrapper').attr({ style:''}); 3 $('html, body').prop({ scrollTop: current_scrollY }); 4}

colorboxのonClosedを上記のようにしたところ、ページのトップには戻らず、colorboxを開いたときのそのままの位置にきました。が、今度はアンカーリンクのほうがcolorboxを開いたときのそのままの位置にきてしまい、アンカーリンクのある位置にジャンプしません。

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

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

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

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

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

guest

回答1

0

自己解決

回答がつかなかったので、わかりづらかったかと思い少し投稿を修正しました。
自己解決出来たので後学のために投稿します。

JavaScript

1onClosed:function(){ 2 $('#wrapper').css({ 3 position: 'relative', 4 width: '100%', 5 top: -1 * current_scrollY 6 }); 7}

onOpenの時に設定したpositionを解除してあげればよいだけでした。

投稿2021/06/12 17:55

futon

総合スコア10

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問