1. 程式人生 > 其它 >flex佈局與position:absolute/fixed的衝突問題

flex佈局與position:absolute/fixed的衝突問題

https://blog.csdn.net/weixin_43606158/article/details/90237258

之前筆者在開發專案的過程中就遇到了這個坑,flex佈局與position:absolute/fixed的衝突問題。後來想到了解決辦法,今天就與大家一起交流一下:

專案實戰:
我們現在想做一個頭部的導航欄,又想用fixed把它固定在上方,又想用彈性盒佈局去設定它內部的樣式,可是發現其中的彈性盒佈局已經失效了。

HTML程式碼如下:

<ul>
<li>協會簡介</li>
<li>協會章程</li>
<li>協會架構</li>
<li>資料下載</li>
</ul>
1
2
3
4
5
6
CSS程式碼如下:

ul {
position: fixed;
display: flex;
justify-content: space-between;
margin: 0 15px;
background: pink;
}
li {
flex: 1;
list-style: none;
height: 100px;
line-height: 100px;
text-align: center;
font-size: 30px;
border: 1px solid #fff;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
效果如下:

我們可以發現彈性盒佈局已經失效了,那麼我們如何解決這個問題呢?
其實很簡單,只需要在ul的外面再套一個盒子就可以了。然後外層盒子使用定位,內層盒子正常使用彈性盒佈局。

HTML改變後的程式碼為:
<div class="nav-box">
<ul>
<li>協會簡介</li>
<li>協會章程</li>
<li>協會架構</li>
<li>資料下載</li>
</ul>
</div>
1
2
3
4
5
6
7
8
CSS改變後的程式碼為:
.nav-box {
width: 100%;
position: fixed;
}
ul {
display: flex;
justify-content: space-between;
margin: 0 15px;
background: pink;
}
li {
flex: 1;
list-style: none;
height: 100px;
line-height: 100px;
text-align: center;
font-size: 30px;
border: 1px solid #fff;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
這時候我們發現問題已經迎刃而解了!

四川省奇呱科技有限公司
關注

6

6

10


專欄目錄

Ay__________:
ul {
position: fixed;
top: 0;
left: 50%;
/* 位移達到居中效果*/
transform: translateX(-50%);
/* calc 達到15px左右邊距效果*/
width: calc(100% - 30px);
/* 剩下部分和博主一樣 */
display: flex;
justify-content: space-between;
background: pink;}
這樣不加盒子也能達到效果.9 月前回復


————————————————
版權宣告:本文為CSDN博主「四川省奇呱科技有限公司」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處連結及本宣告。
原文連結:https://blog.csdn.net/weixin_43606158/article/details/90237258