[解決済み] グリッドアイテムの非表示
2022-03-11 10:30:03
質問
私はCSSグリッドの初心者です。フレームワークを使おうとしているわけではありません。デスクトップでは3カラムのテンプレートがあるのですが、モバイルでは特定の行を2カラム(片方は表示されない)にしたいのです。私の
display: none
それとももっと良い方法があるのでしょうか?
.hg_header {
grid-area: header;
}
.hg_footer {
grid-area: footer;
}
.hg_main {
grid-area: main;
}
.hg_left {
grid-area: altnav;
}
header {
background-color: yellow;
}
main {
background-color: white;
}
aside {
background-color: gray;
}
footer {
background-color: black;
}
.hg {
display: grid;
grid-template-areas: "header header header" "altnav main main" "footer footer footer";
grid-template-columns: 150px 1fr 150px;
grid-template-rows: 100 1fr 50px;
min-height: 100vh;
}
@media screen and (max-width: 600px) {
.hg {
grid-template-areas: "header" "main" "footer";
grid-template-columns: 100%;
grid-template-rows: 100px 1fr 50px;
}
.hg_left {
display: none;
}
}
<header class='hg_header'>HEADER</header>
<main class='hg_main'>MAIN</main>
<aside class='hg_left'>ASIDE</aside>
<footer class='hg_footer'>FOOTER</footer>
解決方法は?
グリッドレイアウトは、グリッドアイテムのサイズ調整と位置決めのために設計されています。レイアウトから要素を削除するためのツールではありません。その目的のために
display: none
は、クリーンで有効なソリューションです。
以下は、あなたのコードの簡略版です。
body {
display: grid;
grid-template-areas: "header header header"
"altnav main main"
"footer footer footer";
grid-template-columns: 150px 1fr 150px;
grid-template-rows: 100 1fr 50px;
height: 100vh;
}
header { grid-area: header; background-color: yellow; }
main { grid-area: main; background-color: white; }
aside { grid-area: altnav; background-color: gray; }
footer { grid-area: footer; background-color: black; }
@media screen and (max-width: 600px) {
body {
grid-template-areas: "header" "main" "footer";
grid-template-columns: 100%;
grid-template-rows: 100px 1fr 50px;
}
aside { display: none; }
}
body { margin: 0; }
<header>HEADER</header>
<main>MAIN</main>
<aside>ASIDE</aside>
<footer>FOOTER</footer>
jsFiddleデモ
関連記事
関連
-
[解決済み】このインラインブロックのdiv要素の間に説明のつかない隙間があるのはなぜですか?[重複]
-
[解決済み】ラジオボタンの代わりに画像を使用する
-
[解決済み] html : iframeでhtmlのコンテンツが表示されない。
-
[解決済み] CSS "margin: 0 auto" が中央揃えにならない
-
[解決済み] テーブルセルの背景を透明にする方法
-
[解決済み] :last-child が期待通りに動作しない?
-
[解決済み] 順序なしリストが div 内で左いっぱいに整列されない
-
[解決済み] Bootstrap 4 の mr-auto が正しく動作しない。
-
[解決済み] フレックスボックスのアイテム間の距離を設定するためのより良い方法
-
[解決済み] HTMLページでスクロールバーを非表示にする
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】エラー。Body " の後の無効な CSS: 期待されるセレクタまたは at-rule は、4 行目の "{" でした。
-
[解決済み】スタイルシートとして解釈されるリソースがMIMEタイプtext/htmlで転送される(ウェブサーバーとは関係ないようです)。
-
[解決済み】divの高さを画面の残りスペースで埋めるようにする
-
[解決済み] div要素間の空白を削除する方法
-
[解決済み] CSSでulのインデントを削除する
-
[解決済み] bodyタグに追加された奇妙なiframe、`rufous-sandbox`について
-
[解決済み] HTML5 Validation Error: body start tag が見えたが、同じタイプの要素がすでに開かれていた
-
[解決済み] What is the difference between <p> and <div>?
-
[解決済み] Font Awesome アイコンをプレースホルダーで使用する
-
[解決済み] type="application/x-shockwave-flash "で表示可能な形式は?