前端常見的適配方式的方法

来源:https://www.cnblogs.com/ray123/archive/2019/05/19/10890745.html
-Advertisement-
Play Games

作為一個真正的前端工作者適配是一個老生常談的問題,那麼今天給大家總結一下在工作當中常用做適配的方式。 一、固定佈局(pc端)(靜態佈局) 以像素作為頁面的基本單位,不管設備和瀏覽器寬度,只設計一套尺寸 二、根據不同根據不同的解析度,載入不同的CSS樣式文件(可切換的固定佈局)自適應佈局 1、<scr ...


作為一個真正的前端工作者適配是一個老生常談的問題,那麼今天給大家總結一下在工作當中常用做適配的方式。

一、固定佈局(pc端)(靜態佈局)

以像素作為頁面的基本單位,不管設備和瀏覽器寬度,只設計一套尺寸

二、根據不同根據不同的解析度,載入不同的CSS樣式文件(可切換的固定佈局)自適應佈局

 

1、<script>
// 解析度大於等於1680,大部分為1920的情況下,調用此css
if(window.screen.width >= 1680){
document.write('<link rel="stylesheet" href="css/index_1920.css">');
}
// 解析度再在1600-1680的情況下,調用此css
else if(window.screen.width >= 1600){
document.write('<link rel="stylesheet" href="css/index_1600.css">');
}
// 解析度小於1600的情況下,調用此css
else{
document.write('<link rel="stylesheet" href="css/index.css">');
}
</script>

註意:註意這裡的js一定要寫在<head></head>標簽裡面,這樣在載入頁面內容之前,可以提前把css樣式表載入出來

2、媒體查詢

媒體查詢可以讓我們根據設備顯示器的特性(如視口寬度、屏幕比例、設備方向:橫向或縱向)為其設定CSS樣式,媒體查詢由媒體類型和一個或多個檢測媒體特性的條件表達式組成。

link元素中的CSS媒體查詢

<link rel="stylesheet" media="(max-width: 800px)" href="example.css" />

css3

必須設置<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">

viewport:視口

width=device-width:就將佈局視口設置成了理想的視口。

initial-scale:[0,10]  初始縮放比例,1表示不縮放

maximum-scale:[0,10]  最小縮放比例

maximum-scale: [0,10]  最大縮放比例

user-scalable: yes/no  是否允許手動縮放頁面,預設值為yes

語法:

@media mediatype and|not|only (media feature) {
    CSS-Code;
}

第一種方法是css2媒體查詢用法,最大的弊端是他會增加頁面http的請求次數,增加了頁面負擔,

我們一般用第二種方法CSS3把樣式都寫在一個文件裡面才是最佳的方法。

但是媒體查詢的缺點也很明顯,如果在瀏覽器大小改變時,需要改變的樣式太多,那麼多套樣式代碼會很繁瑣。

 

三、rem佈局(彈性佈局)移動端

rem(font size of the root element)是指相對於根元素 (html)的字體大小的單位。

1、媒體查詢結合rem佈局

媒體查詢動態修改根元素的大小,使得rem 一直在跟著變化,響應式就成功了

為什麼使用媒體查詢結合rem佈局

一個物體在一個超大空間中顯得很小,但是在小的空間存放不下,為使得頁面佈局不管在什麼設備上都是正常,協調的情況,就會採用媒體查詢 + rem,來根據不同的設備去相應的改變元素的大小。

媒體查詢結合rem佈局的缺點

  計算起來太繁瑣

2、flexble.js和rem佈局:

用法:首先在頁面導入flexible.js導入<script src="js/flexible.js"></script>去掉mete標簽(禁止縮放)的設置

當設計圖為750px;從設計圖量出header為88px;

css設計為header的height 88/100=0.88rem;

3、rem+VW佈局

必須設置<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">

為了方便計算可把html中font-size設置成100px;但是100px固定大小不會自動適配。所以把100px轉換成vw  

100px=?vw等於他的視口寬度

假如:設備:640px  dpr:2   320px

因為 100vw=320px

所以 1vw=3.2px;

所以 100px=31.25vw

假如 設備750px dpr為2 375px

因為 100vw=375px;

所以 1vw=3.75px;

所以 100px=26.67vw

當設備640px :31.25vw

當設備750px :26.67vw

註意文字要單獨設置單位為px,否則文字為100px太大,要用媒體查詢的方式改變文字大小。

優點:理想狀態是所有屏幕的高寬比和最初的設計高寬比一樣,或者相差不多,完美適應。

缺點:這種rem+js只不過是寬度自適應,高度沒有做到自適應,一些對高度,或者元素間距要求比較高的設計,則這種佈局沒有太大的意義。如果只是寬度自適應,更推薦響應式設計。

四、百分比佈局  (流式佈局)

以百分比作為頁面的基本單位,可以適應一定範圍內所有的尺寸的設備屏幕及瀏覽器寬度,並能完美利用有效空間展現最佳效果

五、混合式佈局

同彈性佈局類似,可以適應一定範圍內所有尺寸的設備屏幕及瀏覽器寬度,並能完美利用有效空間展現最佳效果;只是混合像素、和百分比兩種單位作為頁面單位

六、響應式佈局

1、佈局特點:每個屏幕解析度下麵會有一個佈局樣式,即元素位置和大小都會變。

2、設計方法:媒體查詢+流式佈局。通常使用 @media 媒體查詢 和網格系統 (Grid System) 配合相對佈局單位進行佈局,實際上就是綜合響應式、流動等上述技術通過 CSS 給單一網頁不同設備返回不同樣式的技術統稱。

優點:適應pc和移動端,如果足夠耐心,效果完美

缺點:(1)媒體查詢是有限的,也就是可以枚舉出來的,只能適應主流的寬高。(2)要匹配足夠多的屏幕大小,工作量不小,設計也需要多個版本。

響應式頁面在頭部會加上這一段代碼:
<meta name="applicable-device" content="pc,mobile">
<meta http-equiv="Cache-Control" content="no-transform ">

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • CPU 處理邏輯計算和記憶體管理,顯示操作。 GPU CPU無法顯示覆雜的圖形,GPU用於顯示覆雜圖形,分擔CPU的任務 xml佈局到屏幕的顯示流程:xml 通過 LayoutInflater 載入到記憶體中,然後經過CPU計算處理為多維圖形,在通過 OpenGL 調用GPU,GPU對圖形進行柵格化顯示 ...
  • 在做項目的過程中,使用正則表達式來匹配一段文本中的特定種類字元,是比較常用的一種方式,下麵是對常用的正則匹配做了一個歸納整理。 1、匹配中文:[\u4e00-\u9fa5] 2、英文字母:[a-zA-Z] 3、數字:[0-9]4、匹配中文,英文字母和數字及下劃線:^[\u4e00-\u9fa5_a- ...
  • 1.什麼是JQuery。 JavaScript開發的過程中,處理瀏覽器的相容很複雜而且很耗時,於是一些封裝了這些操作的庫應運而生。這些庫還會把一些常用的代碼進行封裝。 把一些常用到的方法寫到一個單獨的js文件,使用的時候直接去引用這js文件就可以了。(animate.js、common.js) 常見 ...
  • bootstrap中的導航條 一、和導航的區別 1. 導航條比導航多了一個條字 2. 直接上圖 導航: 導航條: 簡單文字描述: 由兩張圖看出,導航內容比較簡單,而導航條可以包含導航及其他元素,如表單,搜索框等,並且通常導航條會有一個區別於頁面的背景色。 二、在頁面中定義導航條 方法: 為父容器添加 ...
  • 前端之CSS2,內容包括 CSS盒子模型, 塊元素-內聯元素-內聯塊元素 ,浮動,定位,background屬性。其中,CSS盒子模型 包括 CSS盒子模型介紹,設置邊框,設置內間距padding,設置外間距margin,margin相關技巧,外邊距合併問題,margin-top 塌陷問題,元素溢出... ...
  • 1.計算屬性 我們可以將同一函數定義為一個方法而不是一個計算屬性。兩種方式的最終結果確實是完全相同的。然而,不同的是計算屬性是基於它們的依賴進行緩存的。只在相關依賴發生改變時它們才會重新求值;多次調用,計算屬性會立即返回之前的計算結果,而不必再次執行函數。 2.使用偵聽器 我們發現,與計算屬性相比, ...
  • 本章使用路徑生成器來繪製一個折線圖。以中國和日本的GDP數據為例: 1 //數據 2 var dataList = [ 3 { 4 coountry : "china", 5 gdp : [ 6 [2000,11920],[2001,13170],[2002,14550],[2003,16500], ...
  • Object Array instanceof Function 引用類型 - Object {} 等價於 new Object() 我們經常使⽤用對象來承載可選參數,⽽而⽤用 命名的形式參數來傳遞必要的參數 a.c 等價於 a[‘c’] 我們經常使⽤用對象來承載可選參數,⽽而⽤用 命名的形式參數來 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...