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

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

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

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

HTML5

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

HTML

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

CSS

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

Q&A

2回答

14642閲覧

スクロールバーの幅を無視したいです

jugemins

総合スコア16

CSS3

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

HTML5

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

HTML

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

CSS

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

0グッド

1クリップ

投稿2019/04/19 18:40

編集2019/04/19 22:04

###実現したいこと
縦にリストが並んでいまして、「.side」のリストの幅を、「.main」のリストの幅と同じにしたいです。

###問題
まず「.main」ありきで、のちに「.side」が出てくるのですけど、スクロールバーの幅があるせいで、リストを同じ幅にできないという問題にぶちあたりました。

###コード
こちらのコードです。
「.side」と「.main」はピンクで、その中の赤い四角がリストです。

sample!

html

1<div> 2 <div class="main"> 3 <ul> 4 <li></li> 5 <li></li> 6 <li></li> 7 </ul> 8 </div> 9 <div class="side"> 10 <ul> 11 <li></li> 12 <li></li> 13 <li></li> 14 </ul> 15 </div> 16</div>

css

1* { 2 margin: 0; 3 padding: 0; 4 list-style: none; 5} 6div { 7 display: flex; 8 height: 100vh; 9} 10.main, .side { 11 background: pink; 12 width: 50%; 13 margin: 10px; 14 padding: 15px; 15} 16.main { 17 height: 1000px; 18} 19.side { 20 overflow-y: scroll; 21 height: 200px; 22} 23ul { 24 width: 100%; 25} 26li { 27 background: red; 28 margin: 10px; 29 text-align: center; 30 height: 500px; 31}

JSでリストをouterWidthすればいいだけですが、

この幅の調整、CSSでできませんでしょうか!?

解決策をよろしくお願い致します。

なお、リストの幅をそろえれば「.side」のピンクの部分はスクロールバーの分だけせまくなりますがもちろん構いません。

###追記
できればブラウザによって挙動が変わったりしないような処理がありましたらお願い致します。

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

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

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

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

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

guest

回答2

0

scrollbar-widthプロパティ

まだすべてのブラウザで安定して使用できるわけではありませんが、scrollbar-widthプロパティを用いることが可能です。ブラウザによってはこのプロパティを使う際にプレフィックスが必要な場合もあるため、対応したいブラウザによってCan I useをみながら対応をしてください。

以下のコードは、Firefoxの最新版で動作します。

HTML

1<div> 2 3 <div class="main"> 4 <ul> 5 <li></li> 6 <li></li> 7 <li></li> 8 </ul> 9 </div> 10 11 <div class="side"> 12 <ul> 13 <li></li> 14 <li></li> 15 <li></li> 16 </ul> 17 </div> 18 19</div>

CSS

1* { 2 margin: 0; 3 padding: 0; 4 list-style: none; 5} 6 7div { 8 display: flex; 9 height: 100vh; 10} 11 12.main, 13.side { 14 background: pink; 15 width: 50%; 16 margin: 10px; 17 padding: 15px; 18} 19 20.main { 21 height: 1000px; 22} 23 24.side { 25 overflow-y: scroll; 26 height: 200px; 27 scrollbar-width: none; 28} 29 30ul { 31 width: 100%; 32} 33 34li { 35 background: red; 36 margin: 10px; 37 text-align: center; 38 height: 500px; 39}

絶対配置

絶対配置によってスクロールバーの幅分だけ要素をずらして、スクロールバーを隠す方法です。しかし、スクロールバーの幅を取得する手段がないので、ここには固定の値を設定しないといけません。なので、ブラウザによってはちゃんとスクロールバーが隠れないことがあります。そういう場合を防ぐために対応ブラウザを用いたテストを行う必要が生じます。

このコードはFirefoxで動作します。

HTML

1<div> 2 3 <div class="main"> 4 <ul> 5 <li></li> 6 <li></li> 7 <li></li> 8 </ul> 9 </div> 10 11 <div class="wrapper"> 12 <div class="side"> 13 <ul> 14 <li></li> 15 <li></li> 16 <li></li> 17 </ul> 18 </div> 19 </div> 20 21</div>

CSS

1* { 2 margin: 0; 3 padding: 0; 4 list-style: none; 5} 6 7 8div { 9 display: flex; 10 height: 100vh; 11} 12 13.main, 14.wrapper { 15 background: pink; 16 width: 50%; 17 margin: 10px; 18 padding: 15px; 19} 20 21.main { 22 height: 1000px; 23} 24 25.wrapper { 26 overflow: hidden; 27 position: relative; 28 height: 200px; 29} 30 31.side { 32 height: 200px; 33 overflow-y: scroll; 34 position: absolute; 35 top: 0; 36 bottom: 0; 37 left: 0; 38 right: -17px; 39 padding: 15px; 40} 41 42ul { 43 width: 100%; 44} 45 46li { 47 background: red; 48 margin: 10px; 49 text-align: center; 50 height: 500px; 51}

追記を受けて

できればブラウザによって挙動が変わったりしないような処理がありましたらお願い致します。

であれば、JavaScriptを使ってください。現状のCSSで使える機能だけではそれらを保障することは出来ません。

投稿2019/04/19 21:51

編集2019/04/19 22:14
Hakaato

総合スコア33

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

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

0

カスタムプロパティを使えば可能ですが、IE で使えないので対応する場合は決め打ちもしなければならないかもしれませんね。

CSS

1:root { 2 overflow-y: scroll; 3 margin: 0; 4 padding: 0; 5 --scrollbarwidth: calc(100vw - 100%); 6} 7 8.main, .side { 9 /* fix */ 10 box-sizing: border-box; 11 background: pink; 12 /* fix */ 13 width: calc(50% - 20px); 14 margin: 10px; 15 padding: 15px; 16} 17 18.side { 19 padding-right: calc(15px - var(--scrollbarwidth) / 2); 20 padding-left: calc(15px - var(--scrollbarwidth) / 2); 21}

https://developer.mozilla.org/ja/docs/Web/CSS/--*

投稿2019/04/25 02:51

x_x

総合スコア13749

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問