我正在嘗試創建一個回應式導航欄,類似于 Stack Overflow 上的導航欄。我附上了我想要實作的布局的影像。
為簡單起見,我添加了一些值以使其更易于理解。有封裝整個頁面的外層div,outer-wrapper以及封裝主要內容(導航欄、主要內容、頁腳)的主div main-wrapper,.
現在假設它outer-wrapper是 1000px 寬和main-wrapper800px 寬,那么左右兩邊各有 100px 的緩沖區。當視窗縮小時,我希望在任何主要內容更改之前用完緩沖區。
CSS
.outer-wrapper {
width: 100%;
}
.main-wrapper {
width: 800px;
display: flex;
flex-direction: column;
margin-left: auto;
margin-right: auto;
position: relative;
}
.nav-home {
position: fixed;
top: -30px;
left: -30px;
height: 60px;
width: 100%;
padding: 20px 20px 0px 20px;
display: flex;
justify-content: space-around;
}
}
HTML
<div class='outer-wrapper'>
<div class='main-wrapper'>
<div class='nav-bar'>...</div>
<div class='main-content'>...</div>
<div class='footer'>...</div>
</div>
</div>
問題是當視窗縮小以匹配main-wrapper800px 的寬度時,導航欄中仍然存在左右邊距。當左右邊距縮小為0時,如何確保導航欄的寬度與主要內容和頁腳的寬度相匹配?
謝謝。
uj5u.com熱心網友回復:
我從課堂上去掉了你的一些風格.nav-bar,它似乎按照你的要求表現——我錯過了什么嗎?
我添加了顏色來幫助可視化調整大小。
.outer-wrapper {
background-color: yellow;
width: 100%;
}
.main-wrapper {
background-color: blue;
width: 800px;
display: flex;
flex-direction: column;
margin-left: auto;
margin-right: auto;
position: relative;
}
.nav-bar {
background-color: red;
justify-content: space-around;
}
.main-content {
background-color: green;
}
.footer {
background-color: purple;
}
<div class='outer-wrapper'>
<div class='main-wrapper'>
<div class='nav-bar'>Nav Bar</div>
<div class='main-content'>Main Content</div>
<div class='footer'>Footer</div>
</div>
</div>
uj5u.com熱心網友回復:
.outer-wrapper {
width: 100%;
}
.main-wrapper {
width: 800px;
display: flex;
flex-flow: row wrap;
font-weight: bold;
text-align: center;
margin: 0 auto;
}
.main-wrapper > * {
padding: 10px;
flex: 1 100%;
}
.nav-bar {
background: tomato;
}
.footer {
background: lightgreen;
}
.main-content {
background: deepskyblue;
}
.aside-1 {
background: gold;
}
.aside-2 {
background: hotpink;
}
@media all and (min-width: 600px) {
.aside {
flex: 1 0 0;
}
}
@media all and (min-width: 800px) {
.main-content {
flex: 3 0px;
}
.aside-1 {
order: 1;
}
.main-content {
order: 2;
}
.aside-2 {
order: 3;
}
.footer {
order: 4;
}
}
body {
padding: 2em;
}
<div class="outer-wrapper">
<div class="main-wrapper">
<nav class="nav-bar">Navbar</nav>
<main class="main-content">content</main>
<aside class="aside aside-1">aside 1</aside>
<aside class="aside aside-2">aside 2</aside>
<footer class="footer">footer</footer>
</div>
</div>
這是我制作的代碼,希望它對您和您的期望有所幫助
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/444596.html
