html5中使用hotcss.js實(shí)現(xiàn)手機(jī)端自適配的方法
文章主要介紹了html5中使用hotcss.js實(shí)現(xiàn)手機(jī)端自適配的方法,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下Html5頁(yè)面在手機(jī)端做自適配是很常見的技術(shù)需求,下面...
文章主要介紹了html5中使用hotcss.js實(shí)現(xiàn)手機(jī)端自適配的方法,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
Html5頁(yè)面在手機(jī)端做自適配是很常見的技術(shù)需求,下面介紹下在html頁(yè)面使用hotcss
簡(jiǎn)介
使用動(dòng)態(tài)的HTML根字體大小和動(dòng)態(tài)的viewport scale。
遵循視覺一致性原則。在不同大小的屏幕和不同的設(shè)備像素密度下,讓你的頁(yè)面看起來是一樣的。
1.新建一個(gè)項(xiàng)目文件夾,目錄結(jié)構(gòu)如下圖:
src //主要文件在這里
├── hotcss.js
├── px2rem.less
├── px2rem.scss
└── px2rem.styl
2.hotcss.js 文件可以下載官方的,也可以在大神GitHub(https://github.com/Grace110/hotcss)上下載整個(gè)demo
注意:
hotcss.js必須在其他JS加載前加載,萬不可異步加載。
如果可以,你應(yīng)將hotcss.js的內(nèi)容以內(nèi)嵌的方式寫到<head>標(biāo)簽里面進(jìn)行加載,并且保證在其他js文件之前。
為了避免不必要的bug,請(qǐng)將CSS放到該JS之前加載。
hotcss.js也可以直接復(fù)制到<head>標(biāo)簽里面
<script>(function(window,document){var hotcss={};(function(){var viewportEl=document.querySelector('meta[name="viewport"]'),hotcssEl=document.querySelector('meta[name="hotcss"]'),dpr=window.devicePixelRatio||1,maxWidth=540,designWidth=0;dpr=dpr>=3?3:dpr>=2?2:1;if(hotcssEl){var hotcssCon=hotcssEl.getAttribute("content");if(hotcssCon){var initialDprMatch=hotcssCon.match(/initial\-dpr=([\d\.]+)/);if(initialDprMatch){dpr=parseFloat(initialDprMatch[1])}var maxWidthMatch=hotcssCon.match(/max\-width=([\d\.]+)/);if(maxWidthMatch){maxWidth=parseFloat(maxWidthMatch[1])}var designWidthMatch=hotcssCon.match(/design\-width=([\d\.]+)/);if(designWidthMatch){designWidth=parseFloat(designWidthMatch[1])}}}document.documentElement.setAttribute("data-dpr",dpr);hotcss.dpr=dpr;document.documentElement.setAttribute("max-width",maxWidth);hotcss.maxWidth=maxWidth;if(designWidth){document.documentElement.setAttribute("design-width",designWidth);hotcss.designWidth=designWidth}var scale=1/dpr,content="width=device-width, initial-scale="+scale+", minimum-scale="+scale+", maximum-scale="+scale+", user-scalable=no";if(viewportEl){viewportEl.setAttribute("content",content)}else{viewportEl=document.createElement("meta");viewportEl.setAttribute("name","viewport");viewportEl.setAttribute("content",content);document.head.appendChild(viewportEl)}})();hotcss.px2rem=function(px,designWidth){if(!designWidth){designWidth=parseInt(hotcss.designWidth,10)}return(parseInt(px,10)*320)/designWidth/20};hotcss.rem2px=function(rem,designWidth){if(!designWidth){designWidth=parseInt(hotcss.designWidth,10)}return(rem*20*designWidth)/320};hotcss.mresize=function(){var innerWidth=document.documentElement.getBoundingClientRect().width||window.innerWidth;if(hotcss.maxWidth&&innerWidth/hotcss.dpr>hotcss.maxWidth){innerWidth=hotcss.maxWidth*hotcss.dpr}if(!innerWidth){return false}document.documentElement.style.fontSize=(innerWidth*20)/320+"px";hotcss.callback&&hotcss.callback()};hotcss.mresize();window.addEventListener("resize",function(){clearTimeout(hotcss.tid);hotcss.tid=setTimeout(hotcss.mresize,33)},false);window.addEventListener("load",hotcss.mresize,false);setTimeout(function(){hotcss.mresize()},333);window.hotcss=hotcss})(window,document);</script>
//pc2rem.scss 頁(yè)面代碼
@function px2rem( $px ){
????@return $px*320/$designWidth/20 + rem;
}
$designWidth : 750; //如設(shè)計(jì)圖是750
3.但是html是無法直接調(diào)用scss文件的,這時(shí)我們需要一個(gè) scss文件 實(shí)時(shí)編譯器
vscode 編輯器里面安裝插件
4.編寫代碼
寫個(gè)簡(jiǎn)單的html頁(yè)面,內(nèi)容如下
<!DOCTYPE html>
<html>
<head>
????<meta charset="UTF-8">
????<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
????<title>hotcss在h5中的使用</title>
<!-- 引入hot.scss文件 ,或者把js文件直接復(fù)制到這里-->
????<script src="js/hotcss.js"></script>
????<!-- 引入css文件,注意,不是scss -->
????<link rel="stylesheet" href="css/style.css">
</head>
<body>
????<div class="container">
????????<div class="content">
????????????<p>hotcss在h5中的使用</p>
????????</div>
????</div>
</body>
</html>
接下來寫scss 樣式
同時(shí)打開style.css,可以看到,style.scss文件上的內(nèi)容會(huì)實(shí)時(shí)編譯到style.css'
走到這一步,就已經(jīng)能夠完成了自適應(yīng),在瀏覽器中打開
到此這篇關(guān)于html5中使用hotcss.js實(shí)現(xiàn)手機(jī)端自適配的文章就介紹到這了,更多相關(guān)html5 hotcss.js 手機(jī)端自適配內(nèi)容請(qǐng)搜索以前的文章或繼續(xù)瀏覽下面的相關(guān)文章
- HTML5網(wǎng)頁(yè)遮罩層 + Iframe實(shí)現(xiàn)界面自動(dòng)顯示的示例代碼
- HTML5通過navigator.mediaDevices.getUserMedia調(diào)用手
- HTML5中的網(wǎng)絡(luò)存儲(chǔ)實(shí)現(xiàn)方式
- HTML5離線存儲(chǔ)Manifest原理及使用詳解
- HTML5調(diào)用手機(jī)發(fā)短信和打電話功能
- HTML5標(biāo)簽HTMLCollection和NodeList的區(qū)別詳解
- HTML5網(wǎng)頁(yè)中iframe與window.onload如何使用詳解
- HTML5網(wǎng)頁(yè)body設(shè)置自適應(yīng)全屏示例代碼
- Html5 canvas中width、height和style的寬高區(qū)別詳解
- 一張圖看懂HTML5的前端性能優(yōu)化
HTML5網(wǎng)頁(yè)遮罩層 + Iframe實(shí)現(xiàn)界面自動(dòng)顯示的示例代碼
主要介紹了遮罩層 + Iframe實(shí)現(xiàn)界面自動(dòng)顯示的示例代碼,文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧前言這周由于科三的考試耽誤了兩天,提前一...
HTML5通過navigator.mediaDevices.getUserMedia調(diào)用手機(jī)攝像頭問題
文章主要介紹了HTML5通過navigator.mediaDevices.getUserMedia調(diào)用手機(jī)攝像頭問題,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下navigator.mediaDevices.getU...
HTML5中的網(wǎng)絡(luò)存儲(chǔ)實(shí)現(xiàn)方式
傳統(tǒng)方式使用document.cookie來進(jìn)行存儲(chǔ),但是由于其存儲(chǔ)的空間只有4KB左右,并且需要復(fù)雜的操作進(jìn)行解析,給發(fā)開者帶來很多不便,為此,HTML5規(guī)范提出了網(wǎng)絡(luò)存儲(chǔ)的解決方案,本文通過...
HTML5離線存儲(chǔ)Manifest原理及使用詳解
文章主要介紹了H5離線存儲(chǔ)Manifest原理及使用,文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧理解:離線存儲(chǔ)可以將站點(diǎn)的文件儲(chǔ)存在本地,在沒有網(wǎng)絡(luò)...
HTML5調(diào)用手機(jī)發(fā)短信和打電話功能
文章主要介紹了HTML5調(diào)用手機(jī)發(fā)短信和打電話功能,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下前言本來感覺用H5寫調(diào)用電話撥號(hào)功能和發(fā)送短信功能會(huì)很不好寫...
HTML5標(biāo)簽HTMLCollection和NodeList的區(qū)別詳解
文章主要介紹了HTML5中的HTMLCollection和NodeList的區(qū)別詳解,文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧HTML5 HTMLCollection和NodeList的...
HTML5網(wǎng)頁(yè)中iframe與window.onload如何使用詳解
文章主要介紹了iframe與window.onload如何使用詳解,文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。前言在項(xiàng)目上,需要等頁(yè)面加載完之后再執(zhí)行一...
HTML5網(wǎng)頁(yè)body設(shè)置自適應(yīng)全屏示例代碼
文章主要介紹了HTML5 body設(shè)置自適應(yīng)全屏,文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧用什么代碼實(shí)現(xiàn)?不允許有白色底色產(chǎn)生,因?yàn)槭謾C(jī)高度不一...
Html5 canvas中width、height和style的寬高區(qū)別詳解
文章主要給大家介紹了關(guān)于H5 canvas中width、height和style的寬高區(qū)別的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們...
一張圖看懂HTML5的前端性能優(yōu)化
最近1個(gè)月一直在設(shè)計(jì)HTML5相關(guān)的產(chǎn)品,沒錯(cuò),主要是用于微信的,雖然很多情況下,HTML5頁(yè)面的設(shè)計(jì)類似于APP,但是由于是網(wǎng)頁(yè)性的東西,對(duì)移動(dòng)網(wǎng)絡(luò)帶寬和瀏覽器性能,CPU,GP...