網站首頁 編程語言 正文
先看沒有適配前的效果,下面是沒有適配前,使用的是px單位,代碼和效果如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>前端解決項目適配問題</title>
<style type="text/css">
.outside{
width: 1920px;
height: 100%;
}
.interior{
width: 300px;
height: 300px;
background: red;
}
</style>
</head>
<body>
<div class="outside">
<div class="interior"></div>
</div>
</body>
</html>
?
說明:px、rpx、em、rem當然還有其它單位,這些單位在我們開發過程中最常見的長度單位。首先去弄懂這幾個長度單位的區別與用法,免得到時候有很多的兼容性問題。這里我簡單說明下他們的區別:px像素是相對長度單位。像素px是相對于顯示器屏幕分辨率而言的(引自CSS2.0手冊)。rpx其實是微信對于rem的一種應用的規定,或者說一種設計的方案,官方上規定屏幕寬度為20rem,規定屏幕寬為750rpx。em是相對長度單位。相對于當前對象內文本的字體尺寸。如當前對行內文本的字體尺寸未被人為設置,則相對于瀏覽器的默認字體尺寸。(引自CSS2.0手冊)。rem是相對于根元素<html>,也就是說,我們只需要在根元素確定一個參考值,其他子元素的值可以根據這個參考值來轉換。具體這個參考值設置為多少,完全可以根據我們自己的需求來定。
說到這里,我們要進入我們的正題了,前端做適配的方式有很多種,比如使用框架bootstrap、百分比等,我們今天講的是使用rem單位做適配。
首先第一步:引入flexible.js,它的作用是根據獲取當前網頁的寬度除以相應的數(默認是24),設置html的font-size,間接影響所有的rem。
第二步,把px換成rem,換算關系是根據flexible.js里面的第十七行var rem = docEl.clientWidth / 10決定的,docEl.clientWidth就是我們當前網頁的寬度,也就是outside為1920,所以這就相當于1rem=1920/10=192px,這個時候就把網頁有關使用px單位的都換成rem單位,它們之間的轉換關系為1rem = 192px, 2rem = 384px(這個轉換不固定的,是根據你當前網頁的寬度和flexible.js里面的var rem = docEl.clientWidth / 10;除以多少為準,默認除以24)把px都按轉換關系換成rem單位后,就完成了適配。
適配后,代碼和效果如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>前端解決項目適配問題,適配后</title>
<style type="text/css">
.outside{
/* 1920除以10等于192(rem) 所以1rem = 192px*/
width: 192rem;
height: 100%;
}
.interior{
/* 第二步,把px換成rem
換算關系是根據flexible.js里面的第十七行var rem = docEl.clientWidth / 10決定的,
docEl.clientWidth就是我們當前網頁的寬度,也就是outside為1920
所以這就相當于1rem=1920/10=192px,這個時候就把網頁有關使用px單位的都換成rem單位,
它們之間的轉換關系為1rem = 192px, 2rem = 384px(這個轉換不固定的,是根據你當前網頁的寬度和flexible.js里面的var rem = docEl.clientWidth / 10;除以多少為準,默認除以24)
把px都按轉換關系換成rem單位后,就完成了適配,
*/
/* 300除以192等于1.56(rem) */
width: 1.56rem;
height: 1.56rem;
background: red;
}
</style>
</head>
<body>
<div class="outside">
<div class="interior"></div>
</div>
<!-- 第一步引入flexible -->
<script src="./flexible.js"></script>
</body>
</html>
注:是否引入flexible.js文件是關鍵,flexible.js下載地址,提取碼:wdn1,按F12打開控制臺,看html里面是否font-size屬性,如下圖所示:
原文鏈接:https://blog.csdn.net/qq_42690194/article/details/120876602
相關推薦
- 2022-08-23 python多線程對多核cpu的利用解析_python
- 2023-04-03 python中super().__init__()作用詳解_python
- 2023-07-05 React hooks之useCallback的使用與性能分析
- 2022-02-09 linux下源碼包安裝的服務管理_Linux
- 2022-04-18 C#實現在窗體上的統計圖效果_C#教程
- 2022-07-06 Qt之使用GraphicsView框架實現思維導圖的示例_C 語言
- 2022-09-07 redis?protocol通信協議及使用詳解_Redis
- 2022-06-17 Android自定義實現可回彈的ScollView_Android
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支