日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當(dāng)前位置:首頁 > 科技  > 軟件

Flex 布局項(xiàng)目實(shí)戰(zhàn),好像沒那么難!

來源: 責(zé)編: 時間:2023-10-27 09:15:29 289觀看
導(dǎo)讀在上篇文章《別再用 float 布局了,flex 才是未來!》中,我們聊到 Flex 布局才是目前主流的布局方式。在文章最后,我們還貼了一個案例,并且還淺淺地講解了一下。有些小伙伴說,這講解得太粗了,要是能夠再深入講解一下,順便把代碼

在上篇文章《別再用 float 布局了,flex 才是未來!》中,我們聊到 Flex 布局才是目前主流的布局方式。在文章最后,我們還貼了一個案例,并且還淺淺地講解了一下。lle28資訊網(wǎng)——每日最新資訊28at.com

有些小伙伴說,這講解得太粗了,要是能夠再深入講解一下,順便把代碼分享分享就好了。那么,今天我們就繼續(xù)來扒一扒這個項(xiàng)目的布局實(shí)現(xiàn)。lle28資訊網(wǎng)——每日最新資訊28at.com

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

這個項(xiàng)目是我在 CodePen 上找到的一個項(xiàng)目,地址是:Glassmorphism Creative Cloud App Redesign,其頁面如下圖所示。lle28資訊網(wǎng)——每日最新資訊28at.com

-w1327-w1327lle28資訊網(wǎng)——每日最新資訊28at.com

從上圖可以看得出來,其布局還是非常清晰明了的。其最外層包括一個頂部的導(dǎo)航欄和一個下面的內(nèi)容區(qū)域,用 html 描述大致是下面的代碼。lle28資訊網(wǎng)——每日最新資訊28at.com

<div class="app">    <div class="header"</div>     <div class="wrapper">/div></div>

如上面代碼所示的布局,我們用 Flex 布局來寫,大致就是如下代碼所示。lle28資訊網(wǎng)——每日最新資訊28at.com

.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;}

加了上面的樣式代碼之后,整體的效果就變成了如下圖的樣式。lle28資訊網(wǎng)——每日最新資訊28at.com

-w1116-w1116lle28資訊網(wǎng)——每日最新資訊28at.com

此時去拖動窗口大小,會發(fā)現(xiàn)紅色背景的內(nèi)容部分是會自動改變高度的。lle28資訊網(wǎng)——每日最新資訊28at.com

接下來,我們繼續(xù)分析剩下的內(nèi)容。lle28資訊網(wǎng)——每日最新資訊28at.com

對于導(dǎo)航欄而言,我們也可以把它看成是一個 Flex 容器,其內(nèi)部劃分為 4 個元素。我加上這部分的代碼內(nèi)容之后,整體的 html 代碼如下所示。lle28資訊網(wǎng)——每日最新資訊28at.com

<div class="app">  <div class="header">    <div class="menu-circle"></div>    <div class="header-menu"></div>    <div class="search-bar"></div>    <div class="header-profile"></div>  </div>  <div class="wrapper">        </div>  </div></div>

此時,我們再加上導(dǎo)航欄這部分的 CSS 樣式,如下代碼所示。lle28資訊網(wǎng)——每日最新資訊28at.com

.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;}

加上之后,其效果圖如下圖所示。lle28資訊網(wǎng)——每日最新資訊28at.com

-w1117-w1117lle28資訊網(wǎng)——每日最新資訊28at.com

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

-w1093-w1093lle28資訊網(wǎng)——每日最新資訊28at.com

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

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

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

扁平化按鈕

首先,我們將上面的例子整理一下,作為我們的第一個 CSS 最佳實(shí)踐。lle28資訊網(wǎng)——每日最新資訊28at.com

要實(shí)現(xiàn)如下圖所示的扁平化按鈕,應(yīng)該怎么寫呢?lle28資訊網(wǎng)——每日最新資訊28at.com

-w163-w163lle28資訊網(wǎng)——每日最新資訊28at.com

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

使用 padding 屬性控制按鈕文字與邊框的距離。lle28資訊網(wǎng)——每日最新資訊28at.com

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

1、首先,使用 button 元素來作為按鈕的 html 元素。2、接著,使用 padding 屬性來控制按鈕文字與上下左右的距離。3、最后,設(shè)置按鈕文字、背景顏色、背景圓角、邊框、鼠標(biāo)手勢屬性。lle28資訊網(wǎng)——每日最新資訊28at.com

整體實(shí)現(xiàn)代碼:lle28資訊網(wǎng)——每日最新資訊28at.com

<div>  <h1>1. 扁平化圖標(biāo)的實(shí)現(xiàn)</h1>  <div>    <button class="content-btn">Start free trial</button>  </div></div>
.content-btn {    padding: 8px 26px;    border: none;    border-radius: 20px;    color: #fff;    background-color: #3a6df0;    cursor: pointer;}

帶圖標(biāo)的菜單

一個菜單,左邊有一個圖標(biāo),如下圖所示,如何實(shí)現(xiàn)?lle28資訊網(wǎng)——每日最新資訊28at.com

-w164-w164lle28資訊網(wǎng)——每日最新資訊28at.com

核心思路

使用 flex 布局設(shè)置菜單項(xiàng)。將圖標(biāo)與文字放在同一個層級,使用 flex 布局對齊圖標(biāo)和文字,設(shè)置 svg 圖標(biāo)的大小。lle28資訊網(wǎng)——每日最新資訊28at.com

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

首先,使用 a 屬性表示一個菜單,外層包一個 div 容器,如下代碼所示。lle28資訊網(wǎng)——每日最新資訊28at.com

<div class="side-menu">  <a href=""></a>  <a href=""></a></div>

接著,每一個 a 元素表示一個菜單。在菜單里面,圖標(biāo)與菜單文字在同一層,如下代碼所示。lle28資訊網(wǎng)——每日最新資訊28at.com

<div class="side-menu">  <a href="">    <svg></svg>帶圖標(biāo)的菜單1  </a>  <a href="">    <svg></svg>帶圖標(biāo)的菜單2  </a></div>

接著,構(gòu)造好 html 層次之后,可以構(gòu)思 CSS 布局。菜單項(xiàng)(.side-menu)所在容器使用 flex 布局。lle28資訊網(wǎng)——每日最新資訊28at.com

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

最后,單個菜單(.side-menu a)內(nèi)部則也使用 flex 布局,同時設(shè)置垂直居中對齊,讓圖標(biāo)和文字對齊。此外,還為圖標(biāo)設(shè)置大小、懸浮顯示背景顏色等。相關(guān) CSS 代碼如下所示。lle28資訊網(wǎng)——每日最新資訊28at.com

.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;}

完整代碼見:CSS最佳實(shí)踐 - 3、 帶圖標(biāo)的菜單 - CodePenlle28資訊網(wǎng)——每日最新資訊28at.com

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

對于許多應(yīng)用來說,會通過紅點(diǎn)或者未讀數(shù)量來提醒用戶,那么如何實(shí)現(xiàn)類似于下圖的提醒呢?lle28資訊網(wǎng)——每日最新資訊28at.com

-w194-w194lle28資訊網(wǎng)——每日最新資訊28at.com

核心思路

使用 relative 或 absolute 布局讓紅點(diǎn)飄到右上角。其他的樣式思路包括:使用 border-radius 畫一個圓;使用 flex 布局使數(shù)字上下左右居中。lle28資訊網(wǎng)——每日最新資訊28at.com

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

首先,在菜單后面加上 span 標(biāo)簽,填入對應(yīng)的內(nèi)容,如下代碼所示。lle28資訊網(wǎng)——每日最新資訊28at.com

帶圖標(biāo)的菜單<span class="notification-number updates">3</span>

接著,畫出圓圈以及背景顏色,以及字體大小顏色,如下代碼所示。lle28資訊網(wǎng)——每日最新資訊28at.com

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

接著,使用 flex 布局設(shè)置圓圈和字體的上下左右居中對齊。lle28資訊網(wǎng)——每日最新資訊28at.com

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

最后,使用相對布局調(diào)整圖形圖標(biāo)位置。lle28資訊網(wǎng)——每日最新資訊28at.com

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

到這里,圖標(biāo)上的紅點(diǎn)提示就完成了。上面這種實(shí)現(xiàn)方式是使用 relative 來實(shí)現(xiàn)的,完整代碼見:CSS最佳實(shí)踐 -  4、圖標(biāo)上的紅點(diǎn)提醒(relative實(shí)現(xiàn)) - CodePenlle28資訊網(wǎng)——每日最新資訊28at.com

實(shí)際上,我們也可以使用 absolute 對齊的方式來實(shí)現(xiàn),其完整代碼見:CSS最佳實(shí)踐 -  5、圖標(biāo)上的紅點(diǎn)提醒(absolute實(shí)現(xiàn)) - CodePen。lle28資訊網(wǎng)——每日最新資訊28at.com

這兩種的區(qū)別在于:它們偏移的參考對象不同。對于 relative 而言,其相對于其父級容器偏移。但是 absolute 則是相對于最近的非 static 定位祖先元素的偏移。lle28資訊網(wǎng)——每日最新資訊28at.com

搜索表單

如下圖所示的搜索框,如何實(shí)現(xiàn)?lle28資訊網(wǎng)——每日最新資訊28at.com

-w235-w235lle28資訊網(wǎng)——每日最新資訊28at.com

核心思路

使用背景圖以及位置偏移設(shè)置搜索放大鏡圖標(biāo)。lle28資訊網(wǎng)——每日最新資訊28at.com

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

首先,整理出 html 元素層級。lle28資訊網(wǎng)——每日最新資訊28at.com

<div class="search-bar">    <input type="text" placeholder="Search"></div>

接著,設(shè)置搜索框大小以及背景,還有文字字體顏色。lle28資訊網(wǎng)——每日最新資訊28at.com

.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è)置背景圖以及位置。lle28資訊網(wǎng)——每日最新資訊28at.com

.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%;}

完整代碼見:CSS最佳實(shí)踐 - 6. 搜索表單 - CodePenlle28資訊網(wǎng)——每日最新資訊28at.com

頂部菜單

要實(shí)現(xiàn)如下圖所示的頂部菜單效果,應(yīng)該如何實(shí)現(xiàn)呢?lle28資訊網(wǎng)——每日最新資訊28at.com

2023101721174720231017211747lle28資訊網(wǎng)——每日最新資訊28at.com

核心思路

使用 padding 設(shè)置菜單項(xiàng)帶下,使用 flex 布局排列菜單項(xiàng)。lle28資訊網(wǎng)——每日最新資訊28at.com

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

首先,寫好 html 結(jié)構(gòu),使用 a 元素來實(shí)現(xiàn),如下代碼所示。lle28資訊網(wǎng)——每日最新資訊28at.com

<div class="menu"><a class="is-active" href="#">首頁</a><a href="#">投資者關(guān)系</a><a href="#">企業(yè)社會責(zé)任</a><a href="#">加入我們</a></div>

接著,設(shè)置菜單項(xiàng)的樣式,用 padding 撐開并設(shè)置字體大小,如下代碼所示。lle28資訊網(wǎng)——每日最新資訊28at.com

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

接著,設(shè)置激活狀態(tài)下的菜單項(xiàng)以及鼠標(biāo)懸浮下的菜單項(xiàng)效果。lle28資訊網(wǎng)——每日最新資訊28at.com

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

最后,在頂層容器設(shè)置 flex 布局,這樣每個菜單項(xiàng)之間就不會有間隙。lle28資訊網(wǎng)——每日最新資訊28at.com

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

關(guān)于 Flex 布局實(shí)戰(zhàn)的分享就到此為止。希望這篇文章也能給你帶來收獲,讓你更好掌握 CSS 布局技能。lle28資訊網(wǎng)——每日最新資訊28at.com


lle28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-15338-0.htmlFlex 布局項(xiàng)目實(shí)戰(zhàn),好像沒那么難!

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 軟件供應(yīng)商:Java 11 / 17 使用率已超 Java 8,業(yè)界采用率依然強(qiáng)勁

下一篇: 大模型分布式并行技術(shù)--分布式系統(tǒng)

標(biāo)簽:
  • 熱門焦點(diǎn)
  • 7月安卓手機(jī)性能榜:紅魔8S Pro再奪榜首

    7月份的手機(jī)市場風(fēng)平浪靜,除了紅魔和努比亞帶來了兩款搭載驍龍8Gen2領(lǐng)先版處理器的新機(jī)之外,別的也想不到有什么新品了,這也正常,通常6月7月都是手機(jī)廠商修整的時間,進(jìn)入8月份之
  • 摸魚心法第一章——和配置文件說拜拜

    為了能摸魚我們團(tuán)隊做了容器化,但是帶來的問題是服務(wù)配置文件很麻煩,然后大家在群里進(jìn)行了“親切友好”的溝通圖片圖片圖片圖片對比就對比,簡單對比下獨(dú)立配置中心和k8s作為配
  • 2023 年的 Node.js 生態(tài)系統(tǒng)

    隨著技術(shù)的不斷演進(jìn)和創(chuàng)新,Node.js 在 2023 年達(dá)到了一個新的高度。Node.js 擁有一個龐大的生態(tài)系統(tǒng),可以幫助開發(fā)人員更快地實(shí)現(xiàn)復(fù)雜的應(yīng)用。本文就來看看 Node.js 最新的生
  • 三言兩語說透設(shè)計模式的藝術(shù)-單例模式

    寫在前面單例模式是一種常用的軟件設(shè)計模式,它所創(chuàng)建的對象只有一個實(shí)例,且該實(shí)例易于被外界訪問。單例對象由于只有一個實(shí)例,所以它可以方便地被系統(tǒng)中的其他對象共享,從而減少
  • Java NIO內(nèi)存映射文件:提高文件讀寫效率的優(yōu)秀實(shí)踐!

    Java的NIO庫提供了內(nèi)存映射文件的支持,它可以將文件映射到內(nèi)存中,從而可以更快地讀取和寫入文件數(shù)據(jù)。本文將對Java內(nèi)存映射文件進(jìn)行詳細(xì)的介紹和演示。內(nèi)存映射文件概述內(nèi)存
  • 使用LLM插件從命令行訪問Llama 2

    最近的一個大新聞是Meta AI推出了新的開源授權(quán)的大型語言模型Llama 2。這是一項(xiàng)非常重要的進(jìn)展:Llama 2可免費(fèi)用于研究和商業(yè)用途。(幾小時前,swyy發(fā)現(xiàn)它已從LLaMA 2更名為Lla
  • 華為HarmonyOS 4.0將于8月4日發(fā)布 或搭載AI大模型技術(shù)

    華為宣布HarmonyOS4.0將于8月4日正式發(fā)布。此前,華為已經(jīng)針對開發(fā)者公布了HarmonyOS4.0,以便于開發(fā)者提前進(jìn)行適配,也因此被曝光出了一些新系統(tǒng)的特性
  • iQOO 11S屏幕細(xì)節(jié)公布:首發(fā)三星2K E6全感屏 安卓最好的直屏手機(jī)

    日前iQOO手機(jī)官方宣布,新一代電競旗艦iQOO 11S將會在7月4日19:00正式與大家見面。隨著發(fā)布時間的日益臨近,官方關(guān)于該機(jī)的預(yù)熱也更加密集,截至目前已
  • 蘋果MacBook Pro 2021測試:仍不支持平滑滾動

    據(jù)10月30日9to5 Mac 消息報道,蘋果新的 14 英寸和 16 英寸 MacBook Pro 2021 上市后獲得了不錯的評價,亮點(diǎn)包括行業(yè)領(lǐng)先的性能,令人印象深刻的電池續(xù)航,精美豐
Top 主站蜘蛛池模板: 嵩明县| 宜城市| 台山市| 滕州市| 石台县| 淮安市| 重庆市| 高碑店市| 永顺县| 克东县| 富蕴县| 长垣县| 上饶县| 隆德县| 沙洋县| 昭通市| 闸北区| 金川县| 新和县| 湖北省| 武功县| 九龙城区| 富阳市| 佳木斯市| 重庆市| 垫江县| 历史| 穆棱市| 慈利县| 兴宁市| 丰都县| 松江区| 商南县| 米林县| 富蕴县| 泉州市| 榆树市| 弥渡县| 卫辉市| 榆林市| 综艺|