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

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

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

BootstrapはウェブサイトデザインやUIのWebアプリケーションを素早く 作成する可能なCSSフレームワークです。 Twitter風のデザインを作成することができます。

HTML

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

CSS

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

Q&A

解決済

2回答

1295閲覧

画面スクロール禁止してサイドバーにだけ縦スクロールをつけたい

退会済みユーザー

退会済みユーザー

総合スコア0

Bootstrap

BootstrapはウェブサイトデザインやUIのWebアプリケーションを素早く 作成する可能なCSSフレームワークです。 Twitter風のデザインを作成することができます。

HTML

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

CSS

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

0グッド

0クリップ

投稿2018/09/06 08:04

編集2018/09/06 08:05

###やりたいこと

https://cccabinet.jpn.org/bootstrap4/sample/dashboard を参考にして

<header> ---------------------------------------------- <div.sidebar> | <div.control-area> |------------------------------- | | <div.contents> | |

こんな感じのレイアウトをくんだのですが
画面全体のスクロールを禁止にして
sidebar が縦のみ control-area に横のみのスクロールを付けたいです

ためしたこと

下のようなSCSSをかいたところ
コントロールパネルには横スクロールがついたのにサイドバーにはスクロールがついてくれません

header の縦幅がレスポンシブで変化するので高さの固定値を与えるわけにも行かず
縦 flex の flex-grow で header 以下の残りの縦幅を与えようとしたのですが
サイドバーのコンテンツが増えると container-fluid 以下がbodyの高さをこえてのびてしまいます

js で header サイズを動的に取得して無理やり高さを固定させることもできなくはないですが
CSSだけではできないのでしょうか?
理想を言えば bootstrap だけで実現したいのですが…

一応.sidebar に対して bg-color をつければ変化するのでセレクタの指定はできています

scss

1@media (min-width: 768px) { // bootstrap-md 2 body { 3 width: 100vw; 4 height:100vh; 5 display: flex; 6 flex-direction: column; 7 overflow: hidden; 8 9 & > header { 10 11 } 12 & > .container-fluid { 13 flex-grow: 1; 14 15 & > form { 16 & > .row { 17 & > .sidebar { 18 overflow-y: auto; 19 } 20 & > .main { 21 & > .control-area { 22 overflow-x: auto; 23 } 24 & > .contents { 25 26 } 27 } 28 } 29 } 30 } 31 } 32}

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

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

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

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

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

guest

回答2

0

レスポンシブだろうと何らかの高さを与えているなら

CSS

1height: calc(100vh - [headerの高さ]);

でいいのでは?

個人的にはグリッドレイアウトにしたいところです。

投稿2018/09/06 08:31

x_x

総合スコア13749

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

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

退会済みユーザー

退会済みユーザー

2018/09/06 08:52

https://cccabinet.jpn.org/bootstrap4/sample/responsive-navbars ここの2番めのバーのようにヘッダに結構ぎっしりつめこんであって軽く縮めただけで簡単に2行になってしまいます ヘッダの高さが可変だとCSSだけで画面幅におさめるというのは不可能なのでしょうか… できないことがわかればあきらめてヘッダの高さを固定するなりJSを使うなり他の妥協案を探すのですが意外とできそうなことが案外できないものなのですね…
x_x

2018/09/06 08:54

「レスポンシブで変化する」ならヘッダの高さを指定しているのでは?
退会済みユーザー

退会済みユーザー

2018/09/06 09:23

質問の最初のURLにある bootstrap4 移行ガイド>実例>ダッシュボード の <header> のスタイルをそのままもってきてます ダッシュボードは長い検索欄になってますがそこに navbar の実例のようにナビゲーションリンクをつめこんでいます 具体的には <nav class="navbar navbar-dark fixed-top bg-dark flex-md-nowrap p-0 shadow"> <a class="navbar-brand col-sm-3 col-md-2 mr-0" href="#">アプリ名</a> <ul class="bg-dark w-100" type="text"> ... nav-link をいくつか という感じで高さを指定してはいないようです レスポンシブというのは sm とか md で wrap, no-wrap がきりかわったり expand-sm でおりたたまれたりという意味で使いました なので幅が広いときは line-height + navbar の padding になるけど 幅が狭くなると複数行になって line-height 分が追加されたりするようです さらにいえばおそらく文字サイズ変更ボタンも毎回つけてるので今回もつけることになると line-height も固定ではなくなりそうです…
x_x

2018/09/06 09:30

そこは指定してますよね .sidebar { padding: 48px 0 0; /* ナビゲーションバーの高さ */ } .sidebar-sticky { height: calc(100vh - 48px); } [role="main"] { padding-top: 48px; /* 固定ナビゲーションバーの余白 */ }
退会済みユーザー

退会済みユーザー

2018/09/06 09:58 編集

テンプレートの実例は余白を十分にとってあって expand-sm の畳み込みとあわせて絶対に複数行にならないことがわかってるので固定ピクセル指定をしてるんだと思いますが 自分は複数行になってもいい前提で header を作っているので pixel 指定してしまうと上に余白ができすぎるか文字が重なってしまうんですよね… できれば「hedaer部分が可変でcalc で heightを指定しないで(外側のコンテナの height: 100vh で)スクロールを出現させることができるかどうか」で回答をいただきたいです 無理なら無理であきらめてJSで動的に header の高さを取得することにしようと思います できそうに思えるので時間とられてしまって無理ってことがわかるだけでもありがたいです…
guest

0

ベストアンサー

途中の階層に全部 flex-stretch と flex-grow をいれていったところ fixed サイズになりました
しかも overflow: auto 以外は bootstrap のクラス名だけでいけそうです

最初の残りサイズの指定以外は height:100% でいけそうな気がしたんですが
はなぜかきかないようでよくわかりません

@media (min-width: 768px) { // bootstrap-md body { width: 100vw; height:100vh; display: flex; flex-direction: column; overflow: hidden; & > header { } & > .container-fluid { flex-grow: 1; display:flex; align-items: stretch; & > form { flex-grow: 1; display:flex; align-items: stretch; & > .row { flex-grow: 1; align-items: stretch; & > .sidebar { overflow-y: auto; } & > main { & > .control-area { overflow-x: auto; } } } } } } }

投稿2018/09/07 02:38

編集2018/09/07 02:49
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問