[css3]css3によるフレックスレイアウト幅の解決方法が有効でない件
2022-01-15 09:36:33
これは2カラムレイアウトの案件でよく使われるもので、いろいろなやり方があるのですが
しかし、最も便利なのはやはりフレックスで、外側の親要素に display:flex を設定し、子要素(適応的な幅を持つ要素)に
flex-grow:1;を設定し、もう一方は固定幅、もう一方はアダプティブ幅を設定して行っています。
具体的なコードは以下の通りです。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>flex width not in effect</title>
</head>
<body>
<style>
/* Reset styles */
* {
margin: 0px;
padding: 0px;
}
/* Set the outer display to flex */
.box {
display: flex;
height: 100px;
width: 100%;
}
/* left adaptive */
.box .left {
flex-grow: 1;
background: red;
}
/* right fixed */
.box .right {
width: 200px;
background: yellow;
}
</style>
<! -- Outer box -->
<div class="box">
<! -- left side -->
<div class="left"></div>
<! --right -->
<div class="right"></div>
</div>
</body>
</html>
このコードは上のスクリーンショットのように動作しますが、小さなバグがあります。つまり、左(適応側)の中にコンテンツがあり、その幅が左の幅を超えると、右(固定幅)を小さく圧迫してしまい、与えた固定幅(例では200px)が機能しなくなったり、スクロールバーが表示されたりすることが分かります。
左側に少しコンテンツを追加して、幅を超えるようにするのです。
/* Out of width content style */
.box .left .content {
width: 1000px;
}
<! --left -->
<div class="left">
<! -- beyond -->
<div class="content"></div>
</div>
実行中の結果です。
コンテンツがはみ出し、スクロールバーが表示される。この問題は、leftの上にoverflow hidden属性を追加すれば解決します。
/* left adaptive */
.box .left {
flex-grow: 1;
background: red;
overflow: hidden;
}
しかし、もうひとつ問題があります。右側は出てくるのですが、幅が200以下と小さいのです。
この問題は実はとても簡単で、右のdiv(右側)にmin-width:200px;を追加すれば完璧です。
/* right fixed */
.box .right {
width: 200px;
min-width: 200px;
background: yellow;
}
これなら、どの画面でも、どのようにドラッグ&ドロップしても、完全に互換性があります。
今回はcss3でフレックスレイアウトの幅が効かないの解決策について紹介しましたが、もっとフレックスレイアウトの幅が効かないに関連する内容はスクリプトハウスの過去記事を検索するか、以下の関連記事を引き続き閲覧してください、今後もよりスクリプトハウスを応援していただけると嬉しいです
関連
-
[CSSチュートリアル】Chromeのタブバーを実装するためのCSSのコツ
-
[CSSチュートリアル】CSSで実現するTikTokのテキストジッター効果例
-
[css3]赤いパケットのジッター効果を実現するCSS3
-
[css3]CSS3遷移回転遠近法2D3Dアニメーションなどの効果を持つサンプルコード
-
[css3]Webコードのグレーまたはブラックモードを実現するCSS3フィルター(filter)
-
[css3]水平方向のプログレスバーの最後にテキストを表示するCSSコード
-
[css3]CSS3のtransition-delayプロパティのデフォルト値0を単体で失敗しないように修正。
-
[css3】cssのmarginとvertical marginの重なりの値について
-
[css3]CSS 3.0テキストホバー飛び効果コード
-
左上または右上にリマインダーのドットを表示するCSS3サンプルコード[CSSチュートリアル
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
cssで背景色の半透明化を実現する2つの方法
-
[CSSチュートリアル]CSSで簡単!高周波な異形ボタンを実現する方法
-
[CSSチュートリアル】 css border add four corners コード
-
[css3] scss変数の値を実行時に変更するcss3 var()の使用方法を説明します。
-
[css3]css3アニメーションマウスが絵の上に置かれると徐々に大きくなり、マウスが絵から離れると徐々に縮む効果
-
[CSSチュートリアル】カラフルで知的なシャドウ効果を実現するCSS
-
[CSSチュートリアル】オーバーフロースクロールでスクロールの詰まりを解消する
-
[css3]CSS3の画像ボーダーを学ぶための記事
-
[CSSチュートリアル】CSSマージンの重なりと解決策を詳しく探る
-
[CSSチュートリアル] Pure CSS to click to expand もっと読む