使用 Less 實現 PC 和移動端樣式適配

🌐 使用 Less 實現 PC 和移動端樣式適配 —— 以 position 屬性為例

在前端開發中,我們常常會遇到這樣一個場景:

在 PC 頁面中需要某個元素是 position: relative;,但在移動端卻希望它是 position: inherit;,以便更靈活地響應父級布局。

今天我們就來用 Less 來實現這個功能,并且講解其中的原理和最佳實踐,幫助你構建一個可維護、響應式的樣式體系。


🧠 為什么要用 Less 來寫響應式樣式?

Less 是一種 CSS 預處理語言,擴展了 CSS 的功能,支持變量、嵌套、函數、運算等強大特性,可以讓你的樣式更具可讀性和復用性。

特別是寫響應式樣式時,Less 的嵌套和變量非常實用:

  • ? 樣式層級清晰
  • ? 響應式代碼塊集中
  • ? 修改斷點值更方便

? 場景描述

我們有一個類名為 .highlight 的元素,它的樣式在 PC 和移動端不一樣:

設備要求樣式
PCposition: relative
移動端(≤768px)position: inherit

?? 使用原生 CSS 的寫法(對比)

.highlight {position: relative;
}@media screen and (max-width: 768px) {.highlight {position: inherit;}
}

雖然能實現功能,但結構分散,不利于維護。我們可以用 Less 嵌套方式來優化。


? 使用 Less 實現響應式的寫法

.highlight {position: relative;@media screen and (max-width: 768px) {position: inherit;}
}

? 說明:

  • .highlight 是基礎樣式塊;
  • 在內部通過嵌套 @media 實現移動端樣式;
  • 這種結構清晰、緊湊,便于日后維護。

💡 加一步優化:使用變量定義斷點

@mobile-width: 768px;.highlight {position: relative;@media screen and (max-width: @mobile-width) {position: inherit;}
}

這樣,如果你的項目中所有移動端斷點都用 @mobile-width,一處修改即可影響全局樣式,非常適合多人協作和主題配置


? 最終代碼:封裝通用混合方法

// 定義斷點變量(可全局修改)
@mobile-width: 768px;// 封裝「非PC端樣式」的混合方法
.mobile-style(@style-rules) {// 非PC端:屏幕寬度小于斷點時生效@media screen  and  (max-width: (@mobile-width - 1px)) {@style-rules();}
}// 調用示例
.element {// PC端默認樣式(直接寫在外層)color: red;padding: 20px;// 非PC端樣式(通過混合傳入).mobile-style({color: blue;padding: 10px;});
}

? 實戰建議

需求推薦方式
樣式區分 PC / 移動端使用嵌套 @media
管理多個斷點使用變量 @mobile-width@tablet-width
寫法規范嵌套結構控制在 2 層以內,避免過深

🚫 常見錯誤提示

錯誤原因解決方法
position 樣式沒生效媒體查詢條件不匹配檢查設備寬度是否 ≤ 768px
媒體查詢覆蓋失敗順序錯誤 / specificity 不夠把媒體查詢嵌套寫在目標類中
忘記編譯 LessLess 不是原生 CSS配置好 Webpack、Vite 或使用 Less 插件

🧪 建議調試方法

在瀏覽器 DevTools 控制臺中,切換設備寬度至手機模式(或縮小窗口),然后檢查 .highlightposition 是否從 relative 變為 inherit


? 結語

通過本文你學會了如何使用 Less 編寫響應式樣式,并且清楚了為什么嵌套結構和變量能提升代碼可維護性。

👉 除了 position,你還可以用這種方式來控制 font-sizepaddingflex-direction 等屬性在不同設備上的表現,打造一套真正自適應的樣式體系

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

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

相關文章

企業戰略管理(設計與工程師類)-2-戰略規劃及管理過程-1-概述

戰略管理過程 參考資料: 戰略管理 - 清華大學- 蔡臨寧公司戰略與風險管理 - 華中科技大學 - 賀遠瓊戰略管理 - 北京理工大學 - 楊萬榮DeepSeek - 深度思考與聯網檢索 AFI框架 戰略管理最典型的就是采用傳統的AFI通用戰略管理框架(模型)&a…

Swoole 的 Hyperf 框架和 Go 的 Gin 框架高并發原理以及技術實現對比分析

Swoole 的 Hyperf 框架和 Go 的 Gin 框架雖然都支持高并發,但它們的實現原理、底層機制和適用場景有顯著差異。以下從 高并發原理、技術實現區別、優缺點 三個方面詳細分析: 一、高并發實現原理 1. Hyperf (PHP Swoole) Hyperf 的高并發能力基于 Swoo…

【教程】如何利用bbbrisk一步一步實現評分卡

利用bbbrisk一步一步實現評分卡 一、什么是評分卡1.1.什么是評分卡1.2.評分卡有哪些 二、評分卡怎么弄出來的2.1.如何制作評分卡2.2.制作評分卡的流程 三、變量的分箱3.1.數據介紹3.2.變量自動分箱3.3.變量的篩選 四、構建評分卡4.1.評分卡實現代碼4.2.評分卡表4.3.閾值表與分數…

AI日報 - 2025年4月2日

🌟 今日概覽(60秒速覽) ▎🤖 AGI突破 | 研究揭示零RL訓練可誘發模型頓悟,Anthropic發布Claude 3.5內部機制研究,簡化語言模型推理優化新方法提出。 DeepSeek-R1無需額外指令即可深度推理;Anthro…

探索 Kubernetes 網絡穿透:如何從外部訪問 K8s Pod 地址

文章目錄 探索 Kubernetes 網絡穿透:如何從外部訪問 K8s Pod 地址為什么需要外部訪問 Pod 地址?常見的網絡穿透方案NodePortLoadBalancerIngressPort-ForwardHostNetworkkt-connect:為開發調試提供便捷穿透 實踐建議與注意事項各方案對比表總…

深入理解 Apache Dagster:數據管道編排實戰指南

本文系統介紹了 Apache Dagster 的核心概念與實踐方法,涵蓋環境搭建、管道定義、運行調試及高級功能,幫助開發者快速掌握這一現代化數據編排工具,提升數據工程效率。 1. 背景與核心優勢 隨著數據驅動應用的復雜化,傳統工具在可維…

Minio集群部署

Minio集群部署 資源規劃 IP服務規劃配置192.168.116.138minio-116核32G磁盤10T192.168.116.139minio-216核32G磁盤10T192.168.116.140minio-316核32G磁盤10T192.168.116.141minio-416核32G磁盤10T192.168.116.128nginx代理8核16G磁盤500G 基本環境配置 下面命令minio4臺設備…

操作系統高頻(六)linux內核

操作系統高頻(六)linux內核 1.內核態,用戶態的區別??? 內核態和用戶態的區別主要在于權限和安全性。 權限:內核態擁有最高的權限,可以訪問和執行所有的系統指令和資源,而用戶態的權限相對較低&#x…

強大而易用的JSON在線處理工具

強大而易用的JSON在線處理工具:程序員的得力助手 在當今的軟件開發世界中,JSON(JavaScript Object Notation)已經成為了數據交換的通用語言。無論是前端還是后端開發,我們都經常需要處理、驗證和轉換JSON數據。今天&a…

【學習記錄】pytorch載入模型的部分參數

需要從PointNet網絡框架中提取encoder部分的參數,然后賦予自己的模型。因此,需要從一個已有的.pth文件讀取部分參數,加載到自定義模型上面。做了一些嘗試,記錄如下。 關于模型保存與載入 torch.save(): 使用Python的pickle實用程…

【藍橋杯14天沖刺課題單】Day 8

1.題目鏈接:19714 數字詩意 這道題是一道數學題。 先考慮奇數,已知奇數都可以表示為兩個相鄰的數字之和,2k1k(k1) ,那么所有的奇數都不會被計入。 那么就需要考慮偶數什么情況需要被統計。根據打表,其實可以發現除了…

鴻蒙ArkTS開發:微信/系統來電通話監聽功能實現

本文將介紹如何在鴻蒙應用中使用ArkTS實現通話監聽和錄音功能,利用harmony-utils工具庫簡化開發流程。 工具庫地址 一、功能概述 本實現包含以下核心功能: 通話狀態監聽:檢測來電、去電和通話中狀態 音頻流監控:通過麥克風使用…

NFS 重傳次數速率監控

這張圖展示的是 NFS 重傳次數速率監控,具體解釋如下: 1. 指標含義 監控指標 node_nfs_rpc_retransmissions_total 統計 NFS(網絡文件系統)通信中 RPC(遠程過程調用)的重傳次數,rate(node_nfs_…

【 <二> 丹方改良:Spring 時代的 JavaWeb】之 Spring Boot 中的國際化:支持多語言的 RESTful API

<前文回顧> 點擊此處查看 合集 https://blog.csdn.net/foyodesigner/category_12907601.html?fromshareblogcolumn&sharetypeblogcolumn&sharerId12907601&sharereferPC&sharesourceFoyoDesigner&sharefromfrom_link <今日更新> 一、開篇整…

黑帽SEO之搜索引擎劫持-域名劫持原理分析

問題起源 這是在《Web安全深度剖析》的第二章“深入HTTP請求流程”的2.3章節“黑帽SEO之搜索引擎劫持”提到的內容&#xff0c;但是書中描述并不詳細&#xff0c;沒有講如何攻擊達到域名劫持的效果。 書中對SEO搜索引擎劫持的現象描述如下&#xff1a;直接輸入網站的域名可以進…

theos工具來編譯xcode的swiftUI項目為ipa文件

Theos 是一個開源的開發工具套件&#xff0c;主要用于為 iOS/macOS 平臺開發和編譯 越獄插件&#xff08;Tweaks&#xff09;、動態庫、命令行工具等。它由 Dustin Howett 創建&#xff0c;并被廣泛用于越獄社區的開發中。但這里我主要使用它的打包ipa功能&#xff0c;因為我的…

25.4.1學習總結【Java】

動態規劃題 2140. 解決智力問題https://leetcode.cn/problems/solving-questions-with-brainpower/ 給你一個下標從 0 開始的二維整數數組 questions &#xff0c;其中 questions[i] [pointsi, brainpoweri] 。 這個數組表示一場考試里的一系列題目&#xff0c;你需要 按順…

計算機網絡知識點匯總與復習——(二)物理層

Preface 計算機網絡是考研408基礎綜合中的一門課程&#xff0c;它的重要性不言而喻。然而&#xff0c;計算機網絡的知識體系龐大且復雜&#xff0c;各類概念、協議和技術相互關聯&#xff0c;讓人在學習時容易迷失方向。在進行復習時&#xff0c;面對龐雜的的知識點&#xff0c…

string的底層原理

一.構造函數 我們來看一下&#xff0c;string的底層就是一個字符型指針和一個size來表示string的大小&#xff0c;capacity來表示分配的內存大小。 我們來看我們注釋掉的第一個構造函數&#xff0c;我們是通過初始化列表來初始化size的大小&#xff0c;再通過size的大小來初始化…

Python FastAPI + Celery + RabbitMQ 分布式圖片水印處理系統

FastAPI 服務器Celery 任務隊列RabbitMQ 作為消息代理定時任務處理 首先創建項目結構&#xff1a; c:\Users\Administrator\Desktop\meitu\ ├── app/ │ ├── __init__.py │ ├── main.py │ ├── celery_app.py │ ├── tasks.py │ └── config.py…