日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢(xún)
選擇下列產(chǎn)品馬上在線(xiàn)溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
Flex布局項(xiàng)目實(shí)戰(zhàn),好像沒(méi)那么難!

在上篇文章《別再用 float 布局了,flex 才是未來(lái)!》中,我們聊到 Flex 布局才是目前主流的布局方式。在文章最后,我們還貼了一個(gè)案例,并且還淺淺地講解了一下。

有些小伙伴說(shuō),這講解得太粗了,要是能夠再深入講解一下,順便把代碼分享分享就好了。那么,今天我們就繼續(xù)來(lái)扒一扒這個(gè)項(xiàng)目的布局實(shí)現(xiàn)。

大體框架實(shí)現(xiàn)

這個(gè)項(xiàng)目是我在 CodePen 上找到的一個(gè)項(xiàng)目,地址是:Glassmorphism Creative Cloud App Redesign,其頁(yè)面如下圖所示。

-w1327

從上圖可以看得出來(lái),其布局還是非常清晰明了的。其最外層包括一個(gè)頂部的導(dǎo)航欄和一個(gè)下面的內(nèi)容區(qū)域,用 html 描述大致是下面的代碼。

/div>

如上面代碼所示的布局,我們用 Flex 布局來(lái)寫(xiě),大致就是如下代碼所示。

.app {
  display: flex;
  flex-direction: column;
  background-color: var(--theme-bg-color);
  max-width: 1250px;
  max-height: 860px;
  width: 100%;
  height: 90vh;
  overflow: hidden;
  position: relative;
  font-size: 15px;
  font-weight: 500;
  border-radius: 14px;
  backdrop-filter: blur(20px);
  -webkit-backdrop-filter: blur(20px);
}

.header {
  display: flex;
  height: 58px;
  padding: 0 30px;
  background-color: black;
}

.wrapper {
  display: flex;
  flex: 1;
  background-color: red;
  overflow: hidden;
}

加了上面的樣式代碼之后,整體的效果就變成了如下圖的樣式。

-w1116

此時(shí)去拖動(dòng)窗口大小,會(huì)發(fā)現(xiàn)紅色背景的內(nèi)容部分是會(huì)自動(dòng)改變高度的。

接下來(lái),我們繼續(xù)分析剩下的內(nèi)容。

對(duì)于導(dǎo)航欄而言,我們也可以把它看成是一個(gè) Flex 容器,其內(nèi)部劃分為 4 個(gè)元素。我加上這部分的代碼內(nèi)容之后,整體的 html 代碼如下所示。

此時(shí),我們?cè)偌由蠈?dǎo)航欄這部分的 CSS 樣式,如下代碼所示。

.menu-circle {
  flex-shrink: 0;
  width: 100px;
  margin-right: 50px;
  background-color: gray;
}

.header-menu {
  flex-shrink: 0;
  width: 400px;
  margin-right: 50px;
  background-color: gray;
}

.search-bar {
  flex-shrink: 0;
  width: 200px;
  margin-right: 50px;
  background-color: gray;
}

.header-profile {
  flex-shrink: 0;
  width: 100px;
  margin-right: 50px;
  background-color: gray;
}

加上之后,其效果圖如下圖所示。

-w1117

到這里,我想你應(yīng)該會(huì)發(fā)現(xiàn),使用 Flex 布局其實(shí)就是一層層把內(nèi)容劃分,然后設(shè)置好合適的 flex 屬性,布局變得非常簡(jiǎn)單了。這里我就不繼續(xù)講解其他區(qū)域的布局代碼了,我直接將我最終完成的一個(gè)布局草稿圖給出來(lái),如下圖所示。

-w1093

我們?cè)趯?shí)際要做的時(shí)候,就是這樣一點(diǎn)點(diǎn)去將需要弄的區(qū)域做出來(lái),接下來(lái)就是填上所需要的內(nèi)容,包括文字、圖標(biāo)、顏色等等信息。上面我自己練習(xí)布局的 HTML 和 CSS 代碼都在 CodePen 上,有興趣的可以參考下:CodePen Home Flex 布局項(xiàng)目實(shí)戰(zhàn)。

紙上得來(lái)終覺(jué)淺,雖然 Flex 布局簡(jiǎn)單,但也有非常多的實(shí)現(xiàn)細(xì)節(jié)需要去琢磨。這里我就不事無(wú)巨細(xì)地講解所有的樣式實(shí)現(xiàn)了,我將摘取 5 個(gè)比較常見(jiàn)的樣式實(shí)現(xiàn)來(lái)一步步講解如何實(shí)現(xiàn)它們。這 5 個(gè)例子的代碼都放在了 CodePen 上,感興趣的可以自己看看:CSS最佳實(shí)踐 - CodePen。

細(xì)節(jié)實(shí)現(xiàn)

扁平化按鈕

首先,我們將上面的例子整理一下,作為我們的第一個(gè) CSS 最佳實(shí)踐。

要實(shí)現(xiàn)如下圖所示的扁平化按鈕,應(yīng)該怎么寫(xiě)呢?

-w163

實(shí)現(xiàn)思路

使用 padding 屬性控制按鈕文字與邊框的距離。

實(shí)現(xiàn)步驟

1、首先,使用 button 元素來(lái)作為按鈕的 html 元素。2、接著,使用 padding 屬性來(lái)控制按鈕文字與上下左右的距離。3、最后,設(shè)置按鈕文字、背景顏色、背景圓角、邊框、鼠標(biāo)手勢(shì)屬性。

整體實(shí)現(xiàn)代碼:

1. 扁平化圖標(biāo)的實(shí)現(xiàn)

.content-btn {
    padding: 8px 26px;
    border: none;
    border-radius: 20px;
    color: #fff;
    background-color: #3a6df0;
    cursor: pointer;
}

帶圖標(biāo)的菜單

一個(gè)菜單,左邊有一個(gè)圖標(biāo),如下圖所示,如何實(shí)現(xiàn)?

-w164

核心思路

使用 flex 布局設(shè)置菜單項(xiàng)。將圖標(biāo)與文字放在同一個(gè)層級(jí),使用 flex 布局對(duì)齊圖標(biāo)和文字,設(shè)置 svg 圖標(biāo)的大小。

實(shí)現(xiàn)步驟

首先,使用 a 屬性表示一個(gè)菜單,外層包一個(gè) div 容器,如下代碼所示。

接著,每一個(gè) a 元素表示一個(gè)菜單。在菜單里面,圖標(biāo)與菜單文字在同一層,如下代碼所示。

接著,構(gòu)造好 html 層次之后,可以構(gòu)思 CSS 布局。菜單項(xiàng)(.side-menu)所在容器使用 flex 布局。

.side-menu {
  display: flex;
  flex-direction: column;
  white-space: no-wrap;
}

最后,單個(gè)菜單(.side-menu a)內(nèi)部則也使用 flex 布局,同時(shí)設(shè)置垂直居中對(duì)齊,讓圖標(biāo)和文字對(duì)齊。此外,還為圖標(biāo)設(shè)置大小、懸浮顯示背景顏色等。相關(guān) CSS 代碼如下所示。

.side-menu a {
    display: flex;
    align-items: center;
    font-weight: 400;
    font-size: 14px;
    text-decoration: none;
    padding: 10px;
    color: #000;
    /* 設(shè)置寬度 */
    width: 150px;
}

.side-menu a:hover {
  background-color: rgba(12 15 25 / 30%);
  border-radius: 6px;
}

.side-menu svg {
  width: 16px;
  margin-right: 8px;
}

完整代碼見(jiàn):CSS最佳實(shí)踐 - 3、 帶圖標(biāo)的菜單 - CodePen

圖標(biāo)上的紅點(diǎn)提醒

對(duì)于許多應(yīng)用來(lái)說(shuō),會(huì)通過(guò)紅點(diǎn)或者未讀數(shù)量來(lái)提醒用戶(hù),那么如何實(shí)現(xiàn)類(lèi)似于下圖的提醒呢?

-w194

核心思路

使用 relative 或 absolute 布局讓紅點(diǎn)飄到右上角。其他的樣式思路包括:使用 border-radius 畫(huà)一個(gè)圓;使用 flex 布局使數(shù)字上下左右居中。

實(shí)現(xiàn)步驟

首先,在菜單后面加上 span 標(biāo)簽,填入對(duì)應(yīng)的內(nèi)容,如下代碼所示。

帶圖標(biāo)的菜單3

接著,畫(huà)出圓圈以及背景顏色,以及字體大小顏色,如下代碼所示。

.notification-number {
  width: 16px;
  height:16px;
  background-color: #3a6df0;
  border-radius: 50%;
  font-size:10px;
  color: #fff;
}

接著,使用 flex 布局設(shè)置圓圈和字體的上下左右居中對(duì)齊。

.notification-number {
  display: flex;
  align-items: center;
  justify-content: center;
}

最后,使用相對(duì)布局調(diào)整圖形圖標(biāo)位置。

.notification-number {
  position: relative;
  top: -6px;
  right: -6px;
}

到這里,圖標(biāo)上的紅點(diǎn)提示就完成了。上面這種實(shí)現(xiàn)方式是使用 relative 來(lái)實(shí)現(xiàn)的,完整代碼見(jiàn):CSS最佳實(shí)踐 -  4、圖標(biāo)上的紅點(diǎn)提醒(relative實(shí)現(xiàn)) - CodePen

實(shí)際上,我們也可以使用 absolute 對(duì)齊的方式來(lái)實(shí)現(xiàn),其完整代碼見(jiàn):CSS最佳實(shí)踐 -  5、圖標(biāo)上的紅點(diǎn)提醒(absolute實(shí)現(xiàn)) - CodePen。

這兩種的區(qū)別在于:它們偏移的參考對(duì)象不同。對(duì)于 relative 而言,其相對(duì)于其父級(jí)容器偏移。但是 absolute 則是相對(duì)于最近的非 static 定位祖先元素的偏移。

搜索表單

如下圖所示的搜索框,如何實(shí)現(xiàn)?

-w235

核心思路

使用背景圖以及位置偏移設(shè)置搜索放大鏡圖標(biāo)。

實(shí)現(xiàn)步驟

首先,整理出 html 元素層級(jí)。

接著,設(shè)置搜索框大小以及背景,還有文字字體顏色。

.search-bar input {
  height: 40px;
  width: 150px;
  padding: 0 20px 0 40px;
  background-color: #14162b;
  border-radius: 5px;
  border: none;
  font-family: "Poppins", sans-serif;
  font-size: 15px;
  font-weight: 500;
  color: #fff;
}

最后,設(shè)置背景圖以及位置。

.search-bar input {
  background-image: url("data:image/svg+xml;charset=UTF-8,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 56.966 56.966' fill='%23717790c7'%3e%3cpath d='M55.146 51.887L41.588 37.786A22.926 22.926 0 0046.984 23c0-12.682-10.318-23-23-23s-23 10.318-23 23 10.318 23 23 23c4.761 0 9.298-1.436 13.177-4.162l13.661 14.208c.571.593 1.339.92 2.162.92.779 0 1.518-.297 2.079-.837a3.004 3.004 0 00.083-4.242zM23.984 6c9.374 0 17 7.626 17 17s-7.626 17-17 17-17-7.626-17-17 7.626-17 17-17z'/%3e%3c/svg%3e");
  background-size: 14px;
  background-repeat: no-repeat;
  background-position: 16px 48%;
}

完整代碼見(jiàn):CSS最佳實(shí)踐 - 6. 搜索表單 - CodePen

頂部菜單

要實(shí)現(xiàn)如下圖所示的頂部菜單效果,應(yīng)該如何實(shí)現(xiàn)呢?

20231017211747

核心思路

使用 padding 設(shè)置菜單項(xiàng)帶下,使用 flex 布局排列菜單項(xiàng)。

實(shí)現(xiàn)步驟

首先,寫(xiě)好 html 結(jié)構(gòu),使用 a 元素來(lái)實(shí)現(xiàn),如下代碼所示。

接著,設(shè)置菜單項(xiàng)的樣式,用 padding 撐開(kāi)并設(shè)置字體大小,如下代碼所示。

.menu a {
  display: inline-block;
  padding: 20px 30px;
  text-decoration: none;
  color: gray;
}

接著,設(shè)置激活狀態(tài)下的菜單項(xiàng)以及鼠標(biāo)懸浮下的菜單項(xiàng)效果。

.menu a.is-active,
.menu a:hover {
  color: black;
  border-bottom: 2px solid black;
}

最后,在頂層容器設(shè)置 flex 布局,這樣每個(gè)菜單項(xiàng)之間就不會(huì)有間隙。

.menu {
  display: flex;
  align-items: center;
  flex-shrink: 0;
}

關(guān)于 Flex 布局實(shí)戰(zhàn)的分享就到此為止。希望這篇文章也能給你帶來(lái)收獲,讓你更好掌握 CSS 布局技能。


本文名稱(chēng):Flex布局項(xiàng)目實(shí)戰(zhàn),好像沒(méi)那么難!
分享網(wǎng)址:http://www.5511xx.com/article/dpcdjih.html