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

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オブジェクト」のメソッドとして定義されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

解決済

1回答

1123閲覧

iframeがfooterの下に潜り込んでしまいます(JS使用)

退会済みユーザー

退会済みユーザー

総合スコア0

HTML5

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

JavaScript

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

jQuery

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

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

1クリップ

投稿2019/02/04 23:35

現在、Tumblrのテーマをカスタマイズしています。
(esten theme:http://esten-theme.tumblr.com/ )

このテーマにメールフォームをつけたく、
倉庫として使っているレンタルサーバにPHPのメールフォーム(レスポンシブ)を設置。
Tumblr側で「メール」というページを作り、そこにiframeで呼び出しています。

そしてiframe-resizerを使い、iframeの内容によって高さが可変するようにしています。
(iframe-resizer:https://github.com/frontainer/iframe-resizer )

高さはたしかに可変しているようなのですが、メールフォームがfooterの下に潜り込んでしまうんです。
(ウィンドウサイズを変更すると反映されます)
フッターは内容によって高さが変わるので決め打ちできず、フッター分を
marginなどで確保する、ということができません。
いろいろ見てみたところ、

*幅によって(?)JSで.stickedというクラスが追加されるようになっている
*stickedの内容は「width: 100%; position: fixed; bottom: 0」
*footerにz-index:2

とありました。

該当のソースコード

CSS

1footer { 2 width: 100%; 3 background-color: #444; 4 color: #dfdfdf; 5 position: relative; 6 z-index: 2; 7 box-shadow: 0 -1px 3px 0 rgba(0, 0, 0, .15) 8} 9footer.sticked { 10 width: 100%; 11 position: fixed; 12 bottom: 0 13}

JS

1! function (e) { 2 e.fn.estentheme = function (t) { 3 function s() { 4 setTimeout(function () { 5 e(".like_button").each(function () { 6 var t = e(this); 7 t.is(".liked") ? t.parent().addClass("liked") : t.parent().removeClass("liked") 8 }), s() 9 }, 500) 10 } 11 12 function i() { 13 Q = !0; 14 var e = j.eq(L), 15 t = j.eq(B); 16 e.removeClass("active"), t.addClass("active"), D.eq(L).removeClass("active"), D.eq(B).addClass("active"), L = B, B = L >= j.length - 1 ? 0 : L + 1, Q = !1 17 } 18 19 function n() { 20 H = setTimeout(function () { 21 i(), n() 22 }, f) 23 } 24 25 function a() { 26 E.on("click", function () { 27 for (var t = e(this), s = t.parent(), i = s.children(), n = i.index(t), a = 0; a < i.length; a++) { 28 var o = e(i[a]), 29 l = o.html(), 30 d = i.index(o); 31 d != n ? o.toggleClass("hidden") : (l == F ? o.text("<<") : o.text(F), o.toggleClass("pressed")) 32 } 33 }) 34 } 35 36 function o(e) { 37 for (q = 0; V > q; q++) M.eq(q + e * V).addClass("show") 38 } 39 40 function l() { 41 Y++; 42 var t = e("<div/>").load("?page=" + Y + " #posts", function () { 43 X = t.find(".post"), E = t.find(".share-button"), X.length <= 1 && W.hide() 44 }) 45 } 46 47 function d() { 48 var t = e(window).scrollTop(), 49 s = e(window).height(); 50 Z.is(".full-width") && (t > 200 ? e(".top-menu").addClass("show-background") : e(".top-menu").removeClass("show-background")), ee.height() < s ? (te.addClass("sticked"), se.hide()) : te.is(".sticked") && ee.height() >= s && (te.removeClass("sticked"), se.show()) 51 } 52 var r = { 53 disqusID: "", 54 sliderDelay: 7e3 55 }, 56 h = e.extend(r, t), 57 c = h.disqusID, 58 f = h.sliderDelay; 59 s(); 60 var u = window.location.pathname, 61 g = e("#posts"), 62 p = !1; 63 if (g.hasClass("permalink-page") && (p = !0, -1 == u.indexOf("/post"))) { 64 var v = g.children(), 65 m = v.find(".post-header"), 66 C = v.find(".post-title"); 67 v.addClass("single-page"), m.append("<span>" + C.html() + "</span>"), C.remove() 68 } 69 var b = e(".about-me-picture"), 70 w = b.attr("href"); 71 if (w && -1 !== w.indexOf("x.gif")) { 72 var k = b.parent(); 73 k.remove() 74 } 75 var x = e(".links-container"), 76 T = x.children("a"); 77 if (T.length) 78 for (var q = 0; q < T.length; q++) { 79 var y = e(T[q]), 80 O = y.attr("href"); - 1 == O.indexOf("http://") && -1 == O.indexOf("https://") && y.attr("href", "http://" + O) 81 } 82 for (var D, I = e(".elise-slider"), _ = e('<ul class="slider-nav" />').appendTo(I).addClass("circle"), j = I.find(".slide"), L = 0, B = 1, H = null, Q = !1, q = 0; q < j.length; q++) { 83 var S = j.eq(q), 84 $ = S.css("background-image"); - 1 != $.indexOf("x.gif") && S.remove() 85 } 86 j = I.find(".slide"), j.length < 2 && _.addClass("disabled"); 87 for (var q = 0; q < j.length; q++) _.append(e("<li/>")); 88 D = _.children("li"), D.first().addClass("active"), D.on("click", function () { 89 var e = D.index(this); 90 e != L && Q === !1 && (clearTimeout(H), B = e, i(), n()) 91 }), j.length > 1 && n(); 92 var z, A = e(".menu-toggle"); 93 A.on("click", function () { 94 var t = e(this), 95 s = t.siblings("ul"), 96 i = t.parent(), 97 n = i.parent(), 98 a = e(window).height(); 99 t.toggleClass("pressed"), s.stop(!0), clearTimeout(z), s.is(".scrollable") && s.css({ 100 "max-height": a - 80 101 }), i.toggleClass("showed"), s.is(".parent") && n.toggleClass("showed"), s.is(".hidden") ? s.css({ 102 height: "100%", 103 padding: 5 104 }).toggleClass("hidden showed") : (s.toggleClass("hidden showed"), s.is(".nodelay") ? s.css({ 105 height: 0, 106 padding: "" 107 }) : z = setTimeout(function () { 108 s.css({ 109 height: 0, 110 padding: "" 111 }) 112 }, 450)) 113 }), e(function () { 114 e("a[href*=#]:not([href=#])").click(function () { 115 if (location.pathname.replace(/^//, "") == this.pathname.replace(/^//, "") && location.hostname == this.hostname) { 116 var t = e(this.hash); 117 if (t = t.length ? t : e("[name=" + this.hash.slice(1) + "]"), t.length) { 118 var s; 119 return s = e(this).is("#scroll-down-button") ? t.offset().top : t.offset().top - 75, e("html,body").animate({ 120 scrollTop: s 121 }, 1e3), !1 122 } 123 } 124 }) 125 }); 126 var E = e(".share-button"), 127 F = E.html(); 128 a(); 129 var G, J = e("#blogroll"), 130 K = J.children("ul"), 131 M = K.children("li"), 132 N = M.outerHeight(), 133 P = J.find(".br-next"), 134 R = J.find(".br-previous"), 135 U = 0, 136 V = 12; 137 G = parseInt(M.length / V), M % V !== 0 && G++, J.css({ 138 width: 4 * N, 139 height: 3 * N 140 }), o(0), P.on("click", function () { 141 M.removeClass("show"), G - 1 > U ? (U++, o(U)) : (U = 0, o(U)) 142 }), R.on("click", function () { 143 M.removeClass("show"), U > 0 ? (U--, o(U)) : (U = G - 1, o(U)) 144 }), e.fn.digits = function () { 145 return this.each(function () { 146 e(this).text(e(this).text().replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1,")) 147 }) 148 }, e(".notes-number").digits(); 149 var g = e("#posts"), 150 W = e("#more-posts"), 151 X = [], 152 Y = 1; 153 l(), W.on("click", function () { 154 X.appendTo(g), msnry.addItems(X), a(), Tumblr.LikeButton.get_status_by_page(Y), l(), void 0 !== c && e.getScript("http://" + c + ".disqus.com/count.js"), e(".notes-number").digits(), scLoad() 155 }); 156 var Z = e("header"), 157 ee = e("body"), 158 te = e("footer"), 159 se = e("#top-button"); 160 setTimeout(function () { 161 d() 162 }, 100) 163 } 164}(jQuery); 165}

初回にページを見てもきちんとiframeの高さ自動が反映するようにする、というのを叶える方法はないでしょうか?
どうぞよろしくお願いいたします。

試したこと

*stickedのpositionを変える
*CSSから.stickedを削除する
*iframeやiframeが入っているボックスにfooterと同じz-indexを指定

JSはまったくわからないため、JSの該当部分の削除や書き換えはできていません。

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

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

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

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

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

kei344

2019/02/05 00:35

問題が起きるサイトのURL、もしくは状況の再現が可能なHTML/CSSを質問文に追記ください。
退会済みユーザー

退会済みユーザー

2019/02/05 01:46 編集

問題が起きているサイトのURL(このサイトのMAILというページです) https://theme-test99.tumblr.com/ Chrome、Vivaldで見ると上記のような状態ですが、EdgeでMAILページに行くと反映されているようです。
guest

回答1

0

ベストアンサー

masonryが高さを指定してしまうことが問題につながっているようなので、そのページだけ外すか、そのページだけに効くようにCSSを書くようにするとかどうでしょう。

CSS

1/* たとえばbody要素や包括する要素にid="mailpage"などをつける */ 2#mailpage .posts { 3 height: auto; 4} 5#mailpage footer.sticked { 6 position: static; 7}

投稿2019/02/06 14:20

kei344

総合スコア69400

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

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

退会済みユーザー

退会済みユーザー

2019/02/06 19:46

Kei334さん、回答ありがとうございます。 他のJSもいろいろ見て原因を探していたのですが、masonryは見ていませんでした。 masonryで要素が重なってしまうというのを調べてみたら、いろいろと出てきました。 Tumblrは1ページですべての構造を作る仕様で、固定ページも動的なページも全部一緒の構造になってしまっており、特定の個別ページのみ操作するということができないようなんです。 ソースを見てみても、bodyなどに固定ページ用のタグも見当たりません。 やはり、Media Queryなどでそれぞれの高さを指定するということしかできないのかもしれません;
kei344

2019/02/07 02:00

ページのURLをJavaScriptで取得して、body要素にidをつけるとかどうでしょう。
退会済みユーザー

退会済みユーザー

2019/02/07 03:29 編集

調べてみて、以下のようなスクリプトを見つけたので使ってみました。 <script> $(window).bind("load", function(){ var url = location.href; if(url == "https://theme-test99.tumblr.com/mail"){ $('body').addClass('mailpage'); } }); </script> 教えていただいたのはIDですが、addClassとあったので .mailpage として以下のように書きました。 .mailpage .posts { height: auto!important; } .mailpage footer.sticked { position: static!important; } imporantがない状態では表示は変わらず(潜り込んだままです) 書くとfooterが上に上がってきてStickyにならなくなってしまいました。 mailページにのみクラスを適用、というのはできています。
kei344

2019/02/07 04:36

とりあえずこれも追加ですね。 .mailpage .post { position: static!important; } このページでStickyである必要性をそこまで感じなかったため外していますが、Stickyを使うなら、static指定せず、JavaScriptでfooter.stickedの高さを検出して.blog-contentのpadding-bottomにそれを設定したりする必要があります。
退会済みユーザー

退会済みユーザー

2019/02/07 09:48

書いてくださったものを追記したところ、目的の表示にすることができたみたいです。いろいろと勉強にもなりました。本当にありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問