網頁布局匯總

1. 盒模型

容器大小 = 內容大小 + 內邊距(padding)? + 邊框大小

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>盒模型</title><style>.container {width: 100px;height: 100px;border: 10px solid skyblue;padding: 1px;margin: 2px;/*-sizing: border-box;*/}</style>
</head>
<body><div class="container">css盒模型</div>
</body>
</html>

?在 css 中加入下列代碼,盒子便不會被撐大。

?box-sizing: border-box;

box-sizing 有三個值:content-box(默認)、border-box、inherit 。其中inherit表示box-sizing的值應該從父元素繼承。content-box和border-box的主要區別就是盒子的width和height的值包不包括border、padding這兩個屬性的值。

content-box: 也叫標準盒模型,默認是該值。不包含 border 和 padding 大小。如果盒子寬度為 100 px, padding 為 10px , border 寬度為 5 px。那么盒子大小是 100 + 10 * 2 + 5 * 2 = 130 px

border-box:也叫 IE 盒子模型。盒子大小包含 content(內容大小) + padding(內邊距) + border 邊框大小。如果盒子寬度為 100, padding 為 10 px, border 寬度為 5px。那么盒子大小為 100px

2.? 流式布局(fluid布局)

流式布局就像是在容器中裝水,容器有多寬,水就有多寬。在網頁中,顯示器有多大像素,內容就覆蓋到哪。流式布局是為了解決固定像素的缺點而誕生的。流式布局是一種等比例的縮放式的布局方式。在css 代碼中用百分比來設置寬度,所以也稱百分比自適應布局。流式布局實現方式是將css固定像素寬度轉換成百分比寬度。

換算公式:目標元素寬度/父盒子寬度=百分數寬度

?流式布局的缺點:流式布局是解決不同設備分辨率的兼容性問題,如果兩個設備差異太大,都會導致頁面變形。因為字體和高度是采用固定像素的,而寬度是采用百分比的,字體和高度不會兼容。

2.1 響應式導航欄案例

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>流式布局</title><style>.container {overflow: hidden;background-color: black;}a {float: left;display: block;padding: 10px;color: #fff;font-size: 16px;text-decoration: none;}/* @media mediaType 連接符 (mediaFeature) {  CSS 樣式規則  }mediaType : all(不寫默認all,所有設備) \ screen (手機、平板、電腦)\ print(打印機)連接符: and or onlymediaFeature:媒體特性,width、height、min-width、max-width、device-width、orientation 等。*/@media screen and (max-width: 600px) {a {float: none;width: 30%;}}</style>
</head>
<body><div class="container"><a href="">首頁</a><a href="">我的信息</a><a href="">我的訂單</a><a href="">聯系我們</a></div>
</body>
</html>

3. 彈性布局(flexbox布局)

flexbox 彈性布局打破常規的浮動布局,實現垂直等高,水平均分,按比例劃分等布局方式以及如何處理可用的空間,該布局可以創建自適應瀏覽器窗口的流動布局或自適應字體大小的彈性布局。

彈性布局盒子由伸縮容器和伸縮子元素組成,通過設置元素的display屬性為flex(塊狀元素)或者inline-flex(內聯元素),便可以將一個盒子指定為伸縮盒子每一個伸縮容器內都有兩根軸:主軸和交叉軸,兩軸之間相互垂直,值得一提的是水平的不一定就是主軸。每根軸都有起點和終點,伸縮盒子內能定義多個伸縮子元素,伸縮子元素沿著主軸排列。設為flex布局以后,子元素的float、clear和vertical-align屬性將失效。 伸縮子元素也可通過設置display:flex指定成伸縮盒子,也就是伸縮盒子可以嵌套。

?

3.1 父容器屬性

1. flex-direction 屬性

flex-direction 屬性指定伸縮盒子中主軸的方向。

參數

row:默認主軸的水平方向,從左向右排列

row-reverse:與 row 排列相仿,從右向左排列

column:從上到下排列

column-reverse:從下到上排列

2. flex-wrap 屬性

flex-wrap 屬性指定子元素超過夫容器是否換行

參數

nowrap:子元素不換行(默認值)

wrap:子元素換行,換行部分在子元素下面

wrap-reverse:子元素換行,換行部分在子元素上面

3. flex-flow 屬性

flex-flow 是個簡寫屬性,同時設置 flex-direction 和 flex-wrap 屬性。更加方便地控制彈性盒模型(Flexbox)中的項目排列方向和換行方式。

參數:

flex-flow: flex-direction屬性值? flex-wrap屬性值

?案例:有一個容器,我們希望其中的項目水平排列,并且當空間不足時允許項目換行。

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>flex彈性布局</title><style>.container {display: flex;flex-flow: row wrap;  /* 水平排列,換行 */}.item {width: 20%;}</style>
</head>
<body><div class="container"><div class="item">項目 1</div><div class="item">項目 2</div><div class="item">項目 3</div><div class="item">項目 4</div><div class="item">項目 5</div><div class="item">項目 6</div></div>
</body>
</html>

4. justify-content 屬性

justify-content屬性決定了子元素在主軸上的對齊方式
參數

flex-start:子元素在主軸方向的開始位置向結束位置排列(默認值)

flex-end:子元素在主軸方向的結束位置向開始位置排列

center:子元素在主軸的中間排列

space-between:子元素平均分布在主軸上,第一個元素左邊和最后一個元素右邊無間隔

space-around:子元素平均分布在主軸上,每個元素左右兩邊都有間隔。

?

5. align-items 屬性

align-items 屬性定義了子元素在交叉軸上的排列方式

參數:

flex-start:子元素在交叉軸方向的開始位置向結束位置排列(默認值)

flex-end:子元素在交叉軸方向的結束位置向開始位置排列

center:子元素在交叉軸的中間排列

baseline: 子元素第一行文字的基線對齊

stretch: 子元素未設置高度,子元素高度將填充整個容器高度(默認)

?

6. align-content 屬性

align-content 屬性定義了多根軸線的對齊方式,若只有一根軸線將不起作用。

參數

flex-start: 交叉軸的起點位置對齊

flex-end: 交叉軸的終點對齊

center:交叉軸中央對齊

space-between: 與交叉軸平均分布,第一個元素上邊和最后一個元素下邊無間隔

space-around: 與交叉軸平均分布,第一個元素上邊和最后一個元素下邊有間隔

stretch:子元素未設置高度,子元素高度將填充整個容器高度(默認)

3.2 子容器屬性

1. order 屬性

order 定義子容器排列順序,默認 0,數值越小優先級越高,排在越前

2.?flex-grow屬性

flex-grow 屬性設置擴展比率。默認值 0,表示不占用父容器剩余空間。該值不帶單位

案例1:當父容器的寬度大于子容器所有寬度之和時,父容器有剩余空間,當設置子元素的 flex-grow 為 0 時,表示不占用父容器的剩余空間。當設置某個子元素的 flex-grow:1時,其余子元素不設置,表示父容器剩余空間都給設置了 flex-grow:1 的元素。

案例2:當父容器的寬度大于子容器所有寬度之和時,父容器有剩余空間,當設置子元素1的 flex-grow 為 2?時,設置某個子元素2的 flex-grow:1 時,其余子元素不設置,表示父容器剩余空間給子元素1和子元素2按比例分配。此時,子元素1的容器大小 = 本身子元素大小 + 剩余父容器大小 * (2/3),子元素2的容器大小 = 本身子元素大小 +?剩余父容器大小 * (1/3)

3. flex-shrink 屬性?

flex-shrink 屬性設置收縮比率。默認值 1,不帶單位。當父元素容器寬度小于子容器所有之和時,所有子元素按照定義的收縮比例收縮。

4. flex-basis 屬性?

定義主軸多余空間,默認是 auto, 及子容器本身大小。可以設置像素值,如 250px,表示該子元素占據固定空間。當同時設置了width和flex-basis屬性時,width屬性無效

5. align-self 屬性?

允許單個子元素與其它子元素不一樣對齊方式。可覆蓋 align-items 屬性。默認值為 auto ,表示繼承父元素的 aling-items 屬性。如果沒有父元素,等同于 stretch。

參數

auto

flex-start

flex-end

center

baseline:子元素第一行文字的基線對齊

stretch:子元素未設置高度,子元素高度將填充整個容器高度

6. flex 屬性?

flex屬性是flex-grow,?flex-shrink?和?flex-basis的簡寫,默認值為0 1 auto。后兩個屬性可選。建議優先使用這個屬性,而不是單獨寫三個分離的屬性,因為瀏覽器會推算相關值。

3.3 基于彈性布局的響應式導航欄

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>.container {display: flex;justify-content: space-around;background-color: black;}.item {color: #fff;font-size: 16px;padding: 14px 20px;text-decoration: none;}@media (max-width: 600px) {.container {flex-direction: column;  /**從上到下排列*/}.item {text-align: center;margin-bottom: 10px;}}</style>
</head>
<body><div class="container"><a href="" class="item">首頁</a><a href="" class="item">我的信息</a><a href="" class="item">我的訂單</a><a href="" class="item">聯系我們</a></div>
</body> 
</html>

?

當屏幕像素小于 600px 時,導航欄縱向排列?

4. 網格布局(Grid 布局)

網格布局(Grid)是將網頁劃分成一個個網格單元,可任意組合不同的網格,輕松實現各種布局效果,也是目前CSS中最強大布局方案。通過設置 display: grid 或 inline-grid(設成行內元素)將容器設置為網格容器,容器內的子元素為網格元素,也稱item (項目)。

值得一提是,設為網格布局以后,容器子元素(項目)的float、display: inline-block、display: table-cell、vertical-align等設置都將失效。

行和列

容器里面的水平區域稱為 "行"(row),垂直區域稱為 "列"(column)。

網格線

網格線(grid line)就是劃分網格的線。水平網格線區分行,垂直網格線區分列。

單元格

行和列交叉區域被稱為單元格(cell) , m行n列的網格線會有 mn 個單元格。

4.1 網格容器屬性

1. grid-template-rows?和 grid-template-columns

這兩個屬性用于定義網格的行和列。我們可以使用像素、百分比或 fr 單位來指定它們的尺寸。

 .container {display: grid;width: 300px;grid-template-columns: 50px 100px 50px;grid-template-rows: 50px 100px 50px;background-color: #ccc;
}

?

2. grid-column-gap 和 grid-row-gap

這兩個屬性用于設置行和列之間的間隙。

3. justify-items 和 align-items

這兩個屬性用于調整網格項在容器中的水平和垂直對齊方式。

4. grid-template-areas

這個屬性允許我們為網格區域命名,從而更容易地控制網格項的位置。

5. repeat() 函數

網格非常多,需要為每個網格設置寬高,非常麻煩。

repeat(arg1, arg2) 。arg1 表示行或列的數量。arg2 表示網格的大小。

.container {display: grid;grid-template-columns: repeat(2, 40px 60px 80px);grid-template-rows: repeat(2,50%);background-color: #ccc;
}

6. fr 單位

為了方便表示比例關系,網格布局提供了fr關鍵字(fraction 的縮寫,意為"片段")。

.container {width: 300pxdisplay: grid;grid-template-columns: 1fr 2fr 1fr;background-color: #ccc;
}

第二列的寬度為固定的100px,第三列的寬度是第一列的2倍。

.container {display: grid;width: 300px;grid-template-columns: 1fr 100px 2fr;background-color: #ccc;}

?

7.?minmax()?

該函數產生一個長度范圍,表示長度就在這個范圍之中。它接受兩個參數,分別為最小值和最大值。

grid-template-columns: 1fr 1fr minmax(100px, 1fr);

上面代碼表示第三列寬度不小于100px, 不大于 1fr

8. auto?

自適應

.container {width: 300pxdisplay: grid;grid-template-columns: 50px auto 50px;
}

9. auto-fill、auto-fit
aut-fill 和 auto-fit 自適應 與 自填充,一般用來實現自適應布局的。

.container {display: grid;grid-template-columns: repeat(auto-fill, 100px);
}

5. 圣杯布局

圣杯布局是三列布局,我們需要一個容器?wrapper?包裹所有的內容,并包含?middle?(中間內容區域),?left?(左側欄), 和?right?(右側欄) 三個主要區域。 注意 HTML 結構中必須將?middle?放在最前面,以便優先加載。中間寬度自適應,兩邊定寬,主要是采用 浮動 + 定位實現圣杯布局

?將主要內容、左邊、右邊都設置位左浮動,并且設置主要內容部分寬度100%,左右兩邊定寬。

    /*  通用樣式 */body {margin: 0;padding: 0;}.wrapper {overflow: hidden; /* 清除浮動,并解決margin塌陷 */}.content {float: left;width: 100%; /* 占據父容器全部寬度 */}.left {float: left;width: 200px;}.right {float: left;width: 200px;}/*  為了方便查看效果 */.content {background-color: #eee;padding: 20px;height: 200px;box-sizing: border-box; /* 包含 padding 和 border */}.left, .right {background-color: #ddd;height: 200px;padding: 20px;box-sizing: border-box;}

?上面css樣式設置后效果如下,可以看到中間內容部分獨占一行。

?

?接下來需要把最外層的父容器(wrapper) 部分設置設置左右邊距,放置左右側盒子騰出空間。

?

?將左右兩邊的盒子定位到預留的位置中

左邊部分:負?margin-left?的百分比值是相對于父元素的寬度計算的,這里將左側欄拉到最左側。

右邊部分:負?margin-left?的固定值,將右側欄拉到中間內容區域的右側。

?

6. 雙飛翼布局

雙飛翼布局是另一種經典的網頁布局方式,與圣杯布局類似,同樣實現了左右兩側固定寬度,中間內容區域自適應的三欄布局。 雙飛翼布局和圣杯布局的核心思想是一樣的:讓中間內容區域優先加載,并且保證三欄居中對齊。 它們的不同之處在于實現的方式,雙飛翼布局使用?margin 負值和 padding?來實現。

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>雙飛翼布局</title><style>* {margin: 0;padding: 0;}.wrapper {width: 100%; /* 容器設置為100%*/}.middle {float: left;width: 100%;background-color: darkkhaki;}/* 這就是與 圣杯布局最大的差別,這里需要在中間容器額外內嵌一個塊級元素,設置外邊距為左右兩邊占位*/.content {margin: 0 200px; /* 左右margin,為側邊欄預留空間 */}.left {float: left;width: 200px;margin-left: -100%;}.right {float: left;width: 200px;margin-left: -200px;}/* 為了方便查看效果 */.content {background-color: #eee;padding: 20px;height: 200px;box-sizing: border-box; /* 包含 padding 和 border */}.left, .right {background-color: #ddd;height: 200px;padding: 20px;box-sizing: border-box;} </style>
</head>
<body><div class="wrapper"><div class="middle"><div class="content">中間</div></div><div class="left">左邊</div><div class="right">右邊</div></div>
</body>
</html>

9. 雙飛翼布局和圣杯布局的差異

相同點

1. 都是三欄布局,中間內容優先顯示,有利于搜索引擎優化

2. HTML?結構簡單,易于理解和維護

3.?主要使用浮動和 margin,兼容性良好。

不同點

圣杯布局:不需要額外的 HTML 嵌套,但需要使用相對定位。利用浮動+定位實現

雙飛翼布局:?需要額外的 HTML 嵌套,但不需要使用相對定位。利用浮動+外邊距實現

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/75571.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/75571.shtml
英文地址,請注明出處:http://en.pswp.cn/web/75571.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

打造海外流量矩陣,TikTok云控工具讓獲客更簡單!

跨境獲客&#xff0c;始終是無數企業主心中的一道難題。今天&#xff0c;給大家帶來一款強大實用的工具——TikTok矩陣云控系統&#xff0c;幫你輕松突破流量瓶頸&#xff0c;實現高效跨境獲客&#xff01; 跨國遠程操控——蘋果手機矩陣云控系統 在正式開始之前&#xff0c;…

MyBatis-plus 快速入門

提示&#xff1a;MyBatis-Plus&#xff08;MP&#xff09;是一個 MyBatis的增強版 文章目錄 前言使用MybatisPlus的基本步驟1、引入MybatisPlus依賴代替Mybatis依賴2、定義Mapper接口并繼承BaseMapper他是怎么知道哪張表&#xff0c;哪些字段呢 3、實體類注解4、根據需要添加配…

找搭子系統 搭子經濟新風口 基于精準匹配的社交新生態探索

一、市場前景&#xff1a;為什么現在需要"找搭子"&#xff1f; 孤獨經濟爆發 超60%年輕人存在"精準陪伴"需求&#xff08;2024社交報告&#xff09; 傳統社交App無法滿足"非婚戀、非熟人"的中間態需求 線下活動復蘇 劇本殺/飛盤等興趣活動年增…

深入探析C#設計模式:訪問者模式(Visitor Pattern)的原理與應用

引言 在軟件開發中&#xff0c;設計模式為我們提供了高效、可維護的解決方案。而在眾多設計模式中&#xff0c;訪問者模式&#xff08;Visitor Pattern&#xff09;以其獨特的結構和應用場景&#xff0c;在復雜系統中發揮著重要作用。本文將深入講解訪問者模式的定義、原理、優…

Redis核心功能實現

前言 學習是個輸入的過程&#xff0c;在進行輸入之后再進行一些輸出&#xff0c;比如寫寫文章&#xff0c;筆記&#xff0c;或者做一些技術串講&#xff0c;雖然需要花費不少時間&#xff0c;但是好處很多&#xff0c;首先是能通過輸出給自己的輸入帶來一些動力&#xff0c;然…

RPA VS AI Agent

圖片來源網絡 RPA&#xff08;機器人流程自動化&#xff09;和AI Agent&#xff08;人工智能代理&#xff09;在自動化和智能化領域各自扮演著重要角色&#xff0c;但它們之間存在顯著的區別。以下是對兩者區別的詳細分析&#xff1a; 一、定義與核心功能 RPA&#xff08;機…

多模態大語言模型arxiv論文略讀(十五)

Jailbreaking GPT-4V via Self-Adversarial Attacks with System Prompts ?? 論文標題&#xff1a;Jailbreaking GPT-4V via Self-Adversarial Attacks with System Prompts ?? 論文作者&#xff1a;Yuanwei Wu, Xiang Li, Yixin Liu, Pan Zhou, Lichao Sun ?? 研究機構…

第1節:計算機視覺發展簡史

計算機視覺與圖像分類概述&#xff1a;計算機視覺發展簡史 計算機視覺&#xff08;Computer Vision&#xff09;作為人工智能領域的重要分支&#xff0c;是一門研究如何使機器"看"的科學&#xff0c;更具體地說&#xff0c;是指用攝影機和計算機代替人眼對目標進行識…

【工具】Fiddler抓包

本文主要講解如何使用Fiddler抓HTTP包&#xff0c;可通過所抓包內容分析HTTP請求/響應的細節 安裝與配置 1.下載與安裝 下載地址: https://www.telerik.com/fiddler/ 點擊了鏈接后&#xff0c;跳轉到以下頁面&#xff1a; 點擊Fiddler Classic(免費版)后&#xff0c;跳轉到以…

STM32F103復用JTAG/SWD引腳為GPIO

普中-精靈1開發板&#xff0c;主芯片為STM32F103C8T6&#xff0c;4個獨立按鍵K1~K4依次接PA15~PA12&#xff0c;按下為低電平&#xff0c;8個LED燈D1~D8&#xff0c;依次接PA0~PA7。查詢手冊得知&#xff1a;PA15主功能為JTDI&#xff0c;PA14為JTCK/SWCLK&#xff0c;PA13為JT…

難度偏低,25西電人工智能學院821、833、834考研錄取情況

1、人工智能學院各個方向 2、人工智能學院近三年復試分數線對比 學長、學姐分析 由表可看出&#xff1a; 1、智能院25年院線相對于24年院線 全部專業下降比較多&#xff0c;其中控制科學與工程下降20分&#xff0c;計算機科學與技術下降20分&#xff0c;計算機技術[專碩]下降…

達夢數據校驗系統(DMDVS):數據完整性保障的不二之選

產品概述 達夢數據校驗系統(DMDVS)是一款企業級數據一致性管理平臺,提供跨數據庫、跨平臺的數據比對與修復能力。系統采用模塊化架構設計,支持靜態校驗、動態校驗、單向校驗及分布式校驗四大核心模式,適用于數據遷移驗證、容災備份核查、實時同步監控等關鍵場景,??更多…

【3dSwap】3D-Aware Face Swapping

文章目錄 3D-Aware Face Swapping背景points貢獻方法從2D圖像推斷3D先驗通過潛在代碼操縱進行人臉交換聯合樞軸調整目標函數實驗與二維人臉交換方法比較進一步分析3D感知人臉交換消融實驗局限性3D-Aware Face Swapping 會議/期刊:CVPR 2023 作者: code:https://lyx0208.gi…

客戶案例 | 日事清×初心家居:多部門協作實現新品上架自動化

1、客戶背景 佛山市初心家居有限公司&#xff0c;主營家居類目&#xff0c;年營收額近億元。初心家居有自己的家居生產工廠&#xff08;可為第三方提供生產&#xff09;&#xff0c;店內產品均為自主研發設計&#xff0c;所以新品開發也是初心家居的核心。 2、客戶工作場景及需…

KWDB創作者計劃—KWDB多副本集群保姆級部署

&#x1f4e2;&#x1f4e2;&#x1f4e2;&#x1f4e3;&#x1f4e3;&#x1f4e3; 作者&#xff1a;IT邦德 中國DBA聯盟(ACDU)成員&#xff0c;10余年DBA工作經驗 Oracle、PostgreSQL ACE CSDN博客專家及B站知名UP主&#xff0c;全網粉絲10萬 擅長主流Oracle、MySQL、PG、高斯…

micro ubuntu 安裝教程

micro ubuntu 安裝教程 官網地址 : https://micro-editor.github.io 以下是在 Ubuntu 系統中安裝 micro 編輯器 的詳細教程&#xff1a; 方法 1&#xff1a;通過 ?apt?? 直接安裝&#xff08;推薦&#xff09; 適用于 Ubuntu 20.04 及以上版本&#xff08;官方倉庫已收錄…

Docker 鏡像 的常用命令介紹

拉取鏡像 $ docker pull imageName[:tag][:tag] tag 不寫時&#xff0c;拉取的 是 latest 的鏡像查看鏡像 查看所有本地鏡像 docker images or docker images -a查看完整的鏡像的數字簽名 docker images --digests查看完整的鏡像ID docker images --no-trunc只查看所有的…

從零搭建微服務項目Pro(第0章——微服務項目腳手架搭建)

前言&#xff1a; 在本專欄Base第0章曾介紹一種入門級的微服務項目搭建&#xff0c;盡管后續基于此框架上實現了Nacos、Eureka服務注冊發現、配置管理、Feign調用、網關模塊、OSS文件存儲、JSR參數校驗、LogBack日志配置&#xff0c;鑒權模塊、定時任務模塊等&#xff0c;但由于…

VS Code下開發FPGA——FPGA開發體驗提升__下

上一篇&#xff1a;IntelliJ IDEA下開發FPGA-CSDN博客 Type&#xff1a;Quartus 一、安裝插件 在應用商店先安裝Digtal IDE插件 安裝后&#xff0c;把其他相關的Verilog插件禁用&#xff0c;避免可能的沖突。重啟后&#xff0c;可能會彈出下面提示 這是插件默認要求的工具鏈&a…

使用Python從零開始構建端到端文本到圖像 Transformer大模型

簡介&#xff1a;通過特征向量從文本生成圖像 回顧&#xff1a;多模態 Transformer 在使用Python從零實現一個端到端多模態 Transformer大模型中&#xff0c;我們調整了字符級 Transformer 以處理圖像&#xff08;通過 ResNet 特征&#xff09;和文本提示&#xff0c;用于視覺…