站在前端的角度,看鴻蒙頁面布局

從Web前端轉向鴻蒙(HarmonyOS)開發時,理解其頁面布局的相似與差異是快速上手的核心。鴻蒙的ArkUI框架在布局理念上與Web前端有諸多相通之處,但也存在關鍵區別。以下從五個維度系統分析:

📦?一、盒子模型:概念相似,實現不同?

相似性
鴻蒙的盒子模型仍包含內容(content)、內邊距(padding)、邊框(border)、外邊距(margin),與CSS完全一致?

// ArkUI 盒子模型示例
Text('內容').width(100)    // 內容寬度.padding(20)   // 內邊距.border({ width: 2, color: Color.Black }) // 邊框.margin({ top: 10 }) // 外邊距

差異點

  • 單位:鴻蒙默認使用邏輯像素vp(可省略單位)但也是有px2vp等方法進行轉換?,而CSS常用px/em/rem。所有單位問題很好解決

  • 樣式繼承:ArkUI不支持樣式繼承,需為每個組件單獨設置樣式,而CSS可通過選擇器繼承,

📐?二、布局容器:組件化 vs 標簽化

鴻蒙用專用布局組件替代HTML的通用容器,更強調結構化,并且鴻蒙中沒有了行塊元素的區別

布局類型Web前端實現鴻蒙實現對應關系
線性布局div { display: flex; }Row()?或?Column()Row?≈?flex-direction: row
層疊布局position: absoluteStack()類似絕對定位,支持zIndex
彈性布局display: flexFlex()概念一致,屬性命名相似
柵格布局display: gridGridRow()?+?GridCol()用于多設備響應式適配

示例:水平居中布局

// ArkUI(使用Column+Text)
Column() {Text("居中文本")
}
.justifyContent(FlexAlign.Center) // 主軸居中
.alignItems(HorizontalAlign.Center) // 交叉軸居中
.width('100%')

/* CSS 等效代碼 */
.container {display: flex;justify-content: center;align-items: center;
}

??

🎨?三、樣式應用:鏈式API vs CSS選擇器

  • Web前端:通過CSS選擇器(類、ID)批量定義樣式,實現結構與樣式分離。

  • 鴻蒙:采用鏈式API直接在組件上設置樣式,強調內聯聲明:

Text("藍色文本").fontColor("#FFF")      // 文字顏色.backgroundColor("#36D") // 背景色.borderRadius(10)       // 圓角.shadow({ radius: 10, color: 'rgba(0,0,0,0.5)' }) // 陰影:cite[1]:cite[3]

?💡 關鍵差異:ArkUI不支持全局樣式復用(如CSS類),需為每個組件單獨設置樣式。如果鴻蒙中想復用style可以使用?@Styles

📱?四、響應式布局:媒體查詢 vs 內置斷點系統

兩者均支持多端適配,但實現邏輯不同:

  • Web前端:通過@media (max-width: 768px)定義斷點。

  • 鴻蒙:內置BreakpointSystem,預置sm/md/lg斷點,通過條件設置屬性:

// 不同斷點下修改布局方向
Flex({direction: new BreakPointType({sm: FlexDirection.Column, // 小屏:垂直排列md: FlexDirection.Row,    // 中屏:水平排列}).getValue(currentBreakpoint)
})

🛠??五、典型布局場景實現對比

常見UI組件在鴻蒙中通過組合布局+響應式規則實現:

  1. 頁簽欄(Tab)

    • Web:<div>?+ CSS Flex/Grid

    • 鴻蒙:Tabs組件,動態調整barPosition(底部/側邊)。

  2. 輪播圖(Banner)

    • Web:第三方庫(如Swiper.js)

    • 鴻蒙:原生Swiper組件,通過displayCount控制不同屏幕顯示數量。

  3. 側邊欄(Sidebar)

    • Web:<aside>?+ Flex/Grid

    • 鴻蒙:SideBar組件,結合柵格系統調整寬度

🔄?六、前端遷移鴻蒙的關鍵思維轉變

  1. 從選擇器到鏈式調用
    放棄CSS全局樣式思維,習慣通過.width().fontColor()等API直接設置樣式。

  2. 布局容器優先
    根據需求直接選用Row/Column/Stack等布局組件,而非用通用<div>+CSS模擬。

  3. 響應式設計內置化
    利用鴻蒙預置斷點系統,避免手動編寫媒體查詢

鴻蒙與Web前端布局核心對比總結

特性Web前端鴻蒙ArkUI
布局單位px/em/rem/%vp(邏輯像素)/lpx
樣式繼承? 支持? 不支持
布局容器<div>?+ CSS Flex/GridRow/Column/Stack
樣式設置CSS選擇器鏈式API(如.width(100)
響應式適配@media媒體查詢BreakpointSystem斷點系統
組件化程度依賴第三方框架(如React)原生支持

💎?總結:鴻蒙的布局理念與Web前端高度相通(如盒模型、Flex布局),但通過組件化容器鏈式API簡化了實現流程。前端開發者需適應“放棄全局樣式”和“專用布局組件優先”的思維,便能快速遷移至鴻蒙開發,所以會前端的看一眼鴻蒙應該就能畫鴻蒙頁面了

點擊參與鴻蒙認證

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

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

相關文章

JavaWeb遺傳算法、TSP、模擬退火、ACO算法等實戰應用

Java Web中實現遺傳算法的應用 以下是關于Java Web中實現遺傳算法的應用場景和實例的整理,涵蓋不同領域的解決方案和實現方法: 遺傳算法基礎結構 在Java Web中實現遺傳算法通常需要以下核心組件: 種群初始化:隨機生成初始解集。 適應度函數:評估個體優劣。 選擇操作:輪…

【圖像算法 - 09】基于深度學習的煙霧檢測:從算法原理到工程實現,完整實戰指南

一、項目背景與需求 視頻介紹 【圖像算法 - 09】基于深度學習的煙霧檢測&#xff1a;從算法原理到工程實現&#xff0c;完整實戰指南今天我們使用深度學習來訓練一個煙霧明火檢測系統。這次我們使用了大概一萬五千張圖片的數據集訓練了這次的基于深度學習的煙霧明火檢測模型&a…

間接制冷技術概念及特征

1、基本概念 (1)間接制冷技術即二次制冷技術。常規做法:二次冷卻液儲液罐增加放置于制冷系統管路,促使冷量再快捷的傳遞給載冷劑,繼而載冷劑冷量促使冷庫達到制冷效果。間接制冷技術:通過常壓的二次冷卻介質進行大循環傳送冷量,在直接制冷劑不易應用的位置或者不可運用直…

Antlr學習筆記 01、maven配置Antlr4插件案例Demo

文章目錄前言源碼插件描述pom引入插件案例&#xff1a;實現hello 標識符 案例1、引入Antlr4的pom運行依賴2、定義語義語法&#xff0c;配置.g4文件實現java代碼3、編寫完之后&#xff0c;執行命令實現編譯4、編寫單測測試使用參考文章資料獲取前言 博主介紹&#xff1a;?目前…

PostGIS面試題及詳細答案120道之 (101-110 )

《前后端面試題》專欄集合了前后端各個知識模塊的面試題&#xff0c;包括html&#xff0c;javascript&#xff0c;css&#xff0c;vue&#xff0c;react&#xff0c;java&#xff0c;Openlayers&#xff0c;leaflet&#xff0c;cesium&#xff0c;mapboxGL&#xff0c;threejs&…

第十七天:原碼、反碼、補碼與位運算

原碼、反碼、補碼與位運算 一、原碼、反碼、補碼 1、原碼 定義&#xff1a;原碼是一種簡單的機器數表示法。對于一個有符號整數&#xff0c;最高位為符號位&#xff0c; 0 表示正數&#xff0c; 1 表示負數&#xff0c;其余位表示數值的絕對值。示例&#xff1a;以 8 位二進制…

一次完整的 Docker 啟動失敗排錯之旅:從 `start-limit` 到 `network not found

一次完整的 Docker 啟動失敗排錯之旅&#xff1a;從 start-limit 到 network not found 你是否也曾自信地敲下 sudo systemctl start docker&#xff0c;卻只得到一個冰冷的 failed&#xff1f;這是一個開發者和運維工程師都可能遇到的場景。本文將通過一個真實的排錯案例&…

Tdengine 時序庫年月日小時分組匯總問題

年月分組select to_char(collection_time ,"yyyy-mm") AS date, cast(SUM(a.stage_value)as DOUBLE) as stage_value from TABLE GROUP BY date年月日分組select to_char(collection_time ,"yyyy-mm-dd") AS date, SUM(a.stage_value)as DOUBLE) as stage_…

數據結構(01)—— 數據結構的基本概念

408前置學習C語言基礎也可以看如下專欄&#xff1a;打怪升級之路——C語言之路_ankleless的博客-CSDN博客 目錄 1. 基本概念 1.1 數據 1.2 數據元素 1.3 數據項 1.4 組合項 1.5 數據對象 1.6 數據類型 2. 數據結構 2.1 邏輯結構 2.2 存儲結構 2.3 數據的運算 在學…

什么是模型并行?

模型并行c 簡單來說&#xff0c;就是把一個模型拆開來放到多個 GPU 上&#xff0c;一起訓練&#xff0c;從而化解“顯存塞不下模型”的問題!更多專業課程內容可以聽取工信部電子標準院《人工智能大模型應用工程師》課程獲得詳解&#xff01;

跑yolov5的train.py時,ImportError: Failed to initialize: Bad git executable.

遇到的問題&#xff1a; Traceback (most recent call last):File "D:\miniconda\envs\yolov5\lib\site-packages\git\__init__.py", line 296, in <module>refresh()File "D:\miniconda\envs\yolov5\lib\site-packages\git\__init__.py", line 287…

TCP如何實現可靠傳輸?實現細節?

TCP如何實現可靠傳輸&#xff1f;實現細節&#xff1f;如何實現可靠傳輸&#xff1f;擁塞控制的主要機制TCP流量控制怎么實現的&#xff1f;如何實現可靠傳輸&#xff1f; TCP通過自身的序列號、確認應答、數據效驗、超時重傳、流量控制、擁塞避免&#xff0c;確保了數據傳輸的…

Linux 服務器性能監控、分析與優化全指南

Linux 服務器性能監控、分析與優化在現代 IT 架構中&#xff0c;Linux 服務器作為承載業務系統的核心載體&#xff0c;其性能表現直接決定了服務的穩定性、響應速度與用戶體驗。無論是高并發的 Web 服務、數據密集型的數據庫集群&#xff0c;還是承載虛擬化平臺的宿主機&#x…

基于wenet和模型做企業直播敏感語音屏蔽技術

本文介紹了基于Wenet語音識別工具包的實時敏感詞屏蔽技術方案。該方案通過客戶端緩存25秒直播內容&#xff0c;利用Wenet的流式識別和斷句檢測功能&#xff0c;實時檢測講師語音中的敏感詞&#xff0c;并將對應位置的語音替換為"嗶"聲。文章詳細闡述了Wenet的兩種識別…

42.MySQL視圖

1.一個需求emp 表的列信息很多&#xff0c;有些信息是個人重要信息 (比如 sal, comm, mgr, hiredate)&#xff0c;如果我們希望某個用戶只能查詢 emp 表的 (empno、ename, job 和 deptno ) 信息&#xff0c;有什么辦法&#xff1f;表的數據&#xff1a;想讓用戶查詢到的&#x…

MinIO01-入門

零、文章目錄 MinIO01-入門 1、介紹 &#xff08;1&#xff09;介紹 MinIO 是一款基于 Apache License v2.0 的開源對象存儲系統&#xff0c;專為海量非結構化數據&#xff08;如圖片、視頻、日志文件等&#xff09;設計&#xff0c;兼容 Amazon S3 API&#xff0c;支持高性…

*Docker數據卷(Volume)核心機制剖析:持久化與共享的終極解決方案

根本問題當容器被刪除時&#xff0c;其內部產生的所有文件&#xff08;包括配置文件、數據庫、日志&#xff09;都會不可逆丟失。數據卷&#xff08;Volume&#xff09;通過外置存儲方案徹底解決此痛點。一、數據卷與普通容器存儲對比實驗 場景1&#xff1a;無卷模式下的寫入悲…

原型模式在C++中的實現與面向對象設計原則

引言 在軟件開發中&#xff0c;原型模式是一種常用的設計模式&#xff0c;主要用于創建對象的克隆。通過原型模式&#xff0c;我們可以避免復雜的對象創建過程&#xff0c;尤其是當對象的初始化需要大量資源或復雜操作時。本文將通過一個具體的例子&#xff0c;詳細介紹如何在C…

SpringCloud學習------Gateway詳解

在微服務架構中&#xff0c;隨著服務數量的激增&#xff0c;如何統一管理服務入口、實現請求路由、保障服務安全等問題日益突出。SpringCloud Gateway 作為 Spring 官方推出的網關組件&#xff0c;憑借其強大的功Gateway 是 Spring 官方基于 Spring、SpringBoot 和 Project Rea…

計算機網絡:子網掩碼在路由轉發中的關鍵作用

在路由表中,子網掩碼是一個不可或缺的組成部分,其核心作用是精確界定IP地址中“網絡位”和“主機位”的邊界,從而實現路由器對數據包的準確轉發。以下從多個角度詳細解釋其必要性: 1. 區分網絡位與主機位,定位目標網絡 IP地址由“網絡標識”(網絡位)和“主機標識”(主…