私はこれらの2つのレイアウトをどのように処理できるのだろうかと思っています。Reactjsのレイアウトでサイドバーを隠す方法は?
まずは、現在のグリッド標準をサポートしていれば、1024px以上の解像度で使用されるCSSグリッドレイアウトがあります。
ヘッダー、サイドバー、メインエリアを備えたかなり標準的なレイアウトです。ブラウザは、グリッドをサポートしていないか、彼らは1024px以下である場合
.container {
display: grid;
grid-template-columns: 0.30fr 0.70fr;
grid-template-rows: auto;
grid-template-areas: "header header" "sidebar main";
}
.header {
grid-area: header;
background-color: yellow;
}
.sidebar {
grid-area: sidebar;
background-color: lightblue;
}
.main {
grid-area: main;
background-color: green;
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<div class="container">
<div class="header">
header
</div>
<div class="sidebar">
side
</div>
<div class="main">
main
</div>
</div>
</body>
</html>
は今、彼らはモバイルレイアウトに行きます。
このレイアウトはフレックスで作成され、ヘッダーとメインエリアのレイアウトになり、サイドバーは非表示になり、ユーザーのやりとりによってのみ表示されます。
私は満足しているこれを行う反応の方法を理解できません。
私の問題は、メディアセレクタでサイドメニューを隠してから、ハンバーガーメニューをクリックすると表示が切り替わることですが、これはリアクションのように感じますか?サイドバーを隠す代わりに
また、サイズ変更時にウィンドウを処理する必要があります。
それはメディアのセレクタを使用することを完全に有効です。それは単純にモバイルレイアウトの変更の場合、それは反応のパラダイムに反対していません:) –
私はサイドバー上でいくつかの反応を行う必要がありますように私は、ユーザーがサイドバーを切り替えることができますモバイルレイアウト。だから私はおそらく状態を介してクラスを追加する必要があります。私が言ったように、私はちょうど隠されていないものと隠されたものを持つことが好きです – chobo2
はい、レンダリングしないことを決定するのはあなた次第です。私の経験から、トランジションを完全にレンダリングするのではなく、非表示にすると、トランジションを適用しやすくなります。また、JSをリサイズイベントに使用すると、メディアセレクタを使用するよりもはるかに面倒で複雑になりがちです(特にリサイズ時に反応の更新をトリガする場合)。サイドバーの切り替えにメディアセレクタとクラスの両方を使用することをお勧めします –