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

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

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

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

jQuery

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

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

Q&A

解決済

4回答

1031閲覧

コンテンツが埋もれる

Mokn1356

総合スコア22

JavaScript

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

jQuery

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

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

0グッド

2クリップ

投稿2019/06/10 04:48

編集2019/06/11 00:24

現在サイドメニューを指定位置で固定してフッターに来たら止める処理を行っているのですが、
動的コンテンツが入るとどうしてもフッターの下に埋もれてしまいます。

<実現できていること>
サイドバーの固定・停止・解除まではできていますが、動的コンテンツが入り込むとスクロールの最後で埋もれてしまいます。

<実現したいこと>
.box_sidemenuの高さ内に.scrollboxを収まらせたい

▽追記
.scrollboxはヘッダーが頭の位置にくると position:fixed;が付与されます。

調べても分かりませんでしたので、質問させていただきました。
もしよろしければ教えて頂ければと思います。
イメージ説明
イメージ説明
イメージ説明

▽現状のソース
※ヘッダーも固定のため高さ分(112px)ずらしています。

jquery

1/* サブメニュー固定 */ 2$(document).ready(function(){ 3$(function(){ 4 var target = $(".scrollbox");//固定する要素名 5 var footer = $(".bunner_area")//ここでストップさせる 6 var targetHeight = target.outerHeight(true); 7 var targetTop = target.offset().top; 8 9 $(window).scroll(function(){ 10 var scrollTop = $(this).scrollTop(); 11 if(scrollTop + 112 > targetTop){ 12 var footerTop = footer.offset().top; //常に計算 13 14 if(scrollTop + targetHeight + 112 > footerTop){ 15 customTopPosition = footerTop - (scrollTop + targetHeight) 16 target.css({position: "fixed", top: customTopPosition + "px"}); 17 }else{ 18 target.css({position: "fixed", top: "112px"}); 19 } 20 }else{ 21 target.css({position: "static", top: "auto"}); 22 } 23 }); 24}); 25 26 27}); 28}; 29}); 30 31 32//動的コンテンツ展開用 33/* 開閉メニュー */ 34 35jQuery(function($){ 36 $('.close_menu').hide(); 37 $('#hot_spring').click(function () { 38 $(this).next('.close_menu').slideToggle(); 39 $(this).toggleClass('open'); 40 }); 41}); 42 43 44jQuery(function($){ 45 $('.close_menu2').hide(); 46 $('#genre').click(function () { 47 $(this).next('.close_menu2').slideToggle(); 48 $(this).toggleClass('open'); 49 }); 50}); 51 52

※close_menuが動的な部分です。

html

1<div class="box"> 2 <div class="box_sidemenu"> 3 <div class="next_search_area scrollbox"> 4 <form action="" method="POST"> 5 <div class="top_menu"> 6 <p class="title01"><span>情報検索</span></p> 7 <ul class="menu"> 8 <li class="">月表示</a></li> 9 <li><a href="">全ての情報表示</a></li> 10 </ul> 11 </div> 12 13 <div class="search_text_area"> 14 <input class="search" name="keyword" placeholder="キーワード検索" type="search"> 15 <input type="submit" name="submit" value="" class="search_submit"> 16 </div> 17 18 <p class="title02 open" id="hot_spring">エリア検索</p> 19 <div class="close_menu" style="display: block;"> 20 <p><img src="/images/common/submenu_map.png" alt=""></p> 21 <div class="genre_check"> 22 <input name="map1" type="checkbox" id="map1"> 23 <label for="map1">エリア</label><br> 24 <input name="map2" type="checkbox" id="map2"> 25 <label for="map2">エリア</label><br> 26 <input name="map3" type="checkbox" id="map3"> 27 <label for="map3">エリア</label><br> 28 <input name="map4" type="checkbox" id="map4"> 29 <label for="map4">エリア</label><br> 30 <input name="map5" type="checkbox" id="map5"> 31 <label for="map5">エリア</label><br> 32 <input name="map9" type="checkbox" id="map9"> 33 <label for="map9">エリア</label><br> 34 </div> 35 36 <p class="title04">開催期間</p> 37 <div class="held"> 38 <div class="held_box"> 39 <div class="search_text_area"> 40 <input class="search" name="search_s_date" type="text" value=""> 41 <input name="submit" class="search_submit" type="submit"> 42 </div> 43 </div> 44 45 <div class="held_box"> 46 <div class="search_text_area"> 47 <input class="search" name="search_e_date" type="text" value=""> 48 <input name="submit" class="search_submit" type="submit"> 49 </div> 50 </div> 51 </div> 52 </div><!-- .close_menu_end --> 53 54 <p class="title03" id="genre">ジャンル検索</p> 55 <div class="close_menu2" style="display: none;"> 56 <div class="genre_check" id="genre_search"> 57 <input name="genre1" type="checkbox" id="genre1"> 58 <label for="genre1">ジャンル</label> 59 <input name="genre2" type="checkbox" id="genre2"> 60 <label for="genre2">ジャンル</label><br> 61 <input name="genre3" type="checkbox" id="genre3"> 62 <label for="genre3">ジャンル</label> 63 <input name="genre4" type="checkbox" id="genre4"> 64 <label for="genre4">ジャンル</label><br> 65 <input name="genre5" type="checkbox" id="genre5"> 66 <label for="genre5">ジャンル</label> 67 <input name="genre6" type="checkbox" id="genre6"> 68 <label for="genre6">ジャンル</label><br> 69 <input name="genre7" type="checkbox" id="genre7"> 70 <label for="genre7">ジャンル</label> 71 <input name="genre10" type="checkbox" id="genre10"> 72 <label for="genre10">そのジャンル</label><br> 73 </div> 74 </div><!-- .close_menu2_end --> 75 <ul class="btn_area"> 76 <li><input type="submit" value="検索"></li> 77 <li><input type="reset" value="クリア"></li> 78 </ul> 79 </form> 80 </div> 81 </div> 82 83 <div class="box_main"> 84 メインコンテンツ部分 85 </div><!-- .box_main_end --> 86 </div> 87 88<!-- ここでストップ --> 89<div class="bunner_area"> 90 <div class="container"> 91 92 </div> 93 </div>

css

1.box { 2 width: 100%; 3 -js-display: flex; 4 display: flex; 5 flex-wrap: wrap; 6 justify-content: space-between; 7} 8 9.box_sidemenu { 10 width: 27%; 11 margin-right: 3%; 12} 13 14.scrollbox { 15 width: 290px; 16} 17 18.box_main { 19 width: 70%; 20 padding: 10px; 21} 22 23.bunner_area { 24 width: 100%; 25 padding: 20px; 26 position: relative; 27 z-index: 9; 28} 29

もし足りない情報などがありましたらご教授頂ければと思います。

よろしくお願いいたします。

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

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

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

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

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

guest

回答4

0

自己解決

何とかCSSで自己解決できましたので、記載しておきます。

jQueryでは、難しかったので、下記サイトを参考にposition: sticky;で解決できました。
https://takafumimegumi.com/css-position-sticky#position_sticky

css

1.sticky { 2 position: -webkit-sticky; 3 position: sticky; 4 top: 110px; 5} 6

html

1<div class="box_sidemenu"> 2 <div class="next_search_area scrollbox sticky"> 3 <form action="" method="POST"> 4 <div class="top_menu"> 5 <p class="title01"><span>情報検索</span></p> 6 <ul class="menu"> 7 <li class="">月表示</a></li> 8 <li><a href="">全ての情報表示</a></li> 9 </ul> 10 </div>

固定部分にstickyを付与しました。

いろいろと回答など頂きありがとうございました。
また、機会がありましたらよろしくお願いいたします。

投稿2019/06/11 00:35

Mokn1356

総合スコア22

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

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

0

動的コンテンツのtoggle時に、スクロールイベントを発火させれば良いのでは。

以下はサンプルです。

javascript

1 2 $(this).next('.close_menu').slideToggle({ 3 done: function(){ 4 window.dispatchEvent(new Event('scroll')); 5 }, 6 }); 7

投稿2019/06/10 05:14

foobar810

総合スコア217

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

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

Mokn1356

2019/06/10 05:25

回答ありがとうございます! jQuery(function($){ $('.close_menu').hide(); $('#hot_spring').click(function () { $(this).next('.close_menu').slideToggle({ done: function(){ window.dispatchEvent(new Event('scroll')); }, }); }); }); 上記で試してみたのですが、希望通りの動きは実現できませんでした。 もしかするとCSSかHTMLの問題の可能性もあるので、一度見直してみます。 回答ありがとうございました。
guest

0

こんにちは!
コード拝見しました。
下記を試すと解決しませんか?
htmlにclearfixクラスを作成して.scrollboxの下に配置
cssに.clearfix {clear: both;}を追加

投稿2019/06/10 04:58

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

Mokn1356

2019/06/10 05:08

回答ありがとうございます! 試してみたのですが、解決できませんでした。 多分ですが、Float系は使っていないので、別の原因かもしれませんね... ありがとうございました。
guest

0

動的コンテンツが.scrollboxを押し広げているなら

  • オーバーフローするか
  • .box_sidemenuや.boxを押し広げて.bunner_areaを下げるか

のどちらかでしょう。.bunner_areaの位置を変えたくないなら前者なので
overfollow-yをhiddenにするなどで対応してください

投稿2019/06/10 04:53

yambejp

総合スコア114779

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

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

Mokn1356

2019/06/10 06:02

回答ありがとうございます。 動的コンテンツが押し広げているというよりも浮いてしまっているようなイメージですね .scrollbox自体がfixedで浮かせているため動的なコンテンツが途中で入ると難しいでしょうか? ※展開状態では、下で固定できているので読み込み後に動的コンテンツが増えると高さを計算しきれていないような状況です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問