2017-10-04 3 views
1

私はリンクがユーザーのデバイスに基づいて(水平)サイズを変更する場所を応答するようにしたい、簡単なナビゲーショングリッドコンテナ内でレスポンシブなナビゲーションメニューを作成するにはどうすればよいですか?

<nav> 
    <ul> 
    <li><a href="">Home</a></li> 
    <li><a href="">About</a></li> 
    <li><a href="">Contact</a></li> 
    </ul> 
</nav> 

を持っています。このnavはグリッドコンテナのサブグリッドコンテナ(バグとしては使われない.class {display:subgrid;})内に快適に置かれます。

.ul { 
    display: grid; 
    grid-template-areas: "home about contact"; 
    grid-template-columns: repeat(3, 1fr); 
    grid-template-rows: 25%; 
    list-style-type: none; 
    margin: 0; 
    padding: 0; 
} 

grid-template-areasに応じて宣言されている:次のようにサブグリッド(NAV)コンテナの

.container { 
    grid-template-areas: 
    "header header header header" 
    "nav nav nav nav" 
    "main main main main" 
    "footer footer footer footer" 
} 

CSSは次のようにグリッドコンテナの

CSSである

.home {grid-area: home;} 
.about {grid-area: about}; 
.contact {grid-area: contact}; 

私はこれ、特にgrid-template-areasをいくつか今すぐ進歩することはありません。私はsubgrid containerを完全に取り除かなければならないか、または私が見落としている簡単なステップがあるかどうかはわかりません。

ご協力いただければ幸いです!

答えて

1

全体のレイアウトにCSS Gridを使用することは意味があります。

簡単なナビゲーションメニューにCSSグリッドを使用すると、それは実行可能ですが、過度の動作になる可能性があります。目標を達成するための簡単な方法があります:Flexbox。

もごnavグリッド項目フレックスコンテナください:あなたは次のHTMLナビゲーションバー、例えば

nav { 
 
    display: flex; 
 
    height: 50px; /* non-essential; for demo only */ 
 
} 
 

 
/* non-essential; for demo only */ 
 
a { 
 
    flex: 1; 
 
    border: 1px solid gray; 
 
    background-color: lightgray; 
 
    display: flex; 
 
    align-items: center; 
 
    justify-content: center; 
 
    text-decoration: none; 
 
}
<nav> 
 
    <a href="">Home</a> 
 
    <a href="">About</a> 
 
    <a href="">Contact</a> 
 
</nav>

+1

ご回答いただきありがとうございます。アドバイスごとにコードを修正しましたが、肯定的な結果は得られませんでした。私は自分のPCがバグを起こしていると思ったので、ナビゲーション以外のプロジェクト全体を取り除き、それは本当に反応的でした。したがって、私は適用されたjavascriptの機能を確認して、

+0

私はgridlex(flexbox-gridシステム)を使って一時的な解決策を見つけました。

関連する問題