HTML5 制作響應(yīng)式網(wǎng)頁,首先需要考慮是全平臺適配還是只是移動端適配。這里以移動端響應(yīng)式網(wǎng)站為例,講述如何制作響應(yīng)式網(wǎng)頁。
創(chuàng)新互聯(lián)自2013年創(chuàng)立以來,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目網(wǎng)站建設(shè)、網(wǎng)站制作網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元巴楚做網(wǎng)站,已為上家服務(wù),為巴楚各地企業(yè)和個人服務(wù),聯(lián)系電話:18982081108
1、選定基本設(shè)計(jì)尺寸,一般以1080為基準(zhǔn)。確定響應(yīng)式web設(shè)計(jì)的應(yīng)用場景之后,和美工(或設(shè)計(jì)師)溝通,之前,一般需要美工出幾套主流移動設(shè)備屏幕分辨率的設(shè)計(jì)圖,現(xiàn)在,使用流式布局以及rem等可以使用一套設(shè)計(jì)圖,以最常用的移動設(shè)備屏幕分辨率為基準(zhǔn)。
2、當(dāng)美工完成設(shè)計(jì)圖之后,前端工程師的工作就開始了。這時你就可以使用PS或是FW進(jìn)行切圖了。一般說來,F(xiàn)ireworks cs6切圖更快,但是Fireworks有時會有圖片失真的情況發(fā)生,所以,有時需要使用PS進(jìn)行配合,PS有切片工具可以專門用來切圖。
具體代碼:
(function (doc, win) {
var docEl = doc.documentElement,
resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize',
recalc = function () {
var clientWidth = docEl.clientWidth;
if (!clientWidth) return;
docEl.style.fontSize = 20 * (clientWidth / 320) + 'px';
};
html5是html4的更新標(biāo)準(zhǔn)。html5新增了一些html標(biāo)簽以及這些標(biāo)簽對應(yīng)的css和js接口。 bootstrap是在html5標(biāo)準(zhǔn)形成之際推出的,因此bootstrap天生含有html5的一些標(biāo)簽和特性。 比如,bootstrap支持響應(yīng)式設(shè)計(jì),具體體現(xiàn)在bootstrap的css庫(主要是啟用了css3標(biāo)準(zhǔn)的media query功能)實(shí)現(xiàn)了各種設(shè)備下的一些預(yù)設(shè)的html+css組件(就是一些半成品的代碼片段,適合在網(wǎng)頁各個地方復(fù)制粘貼)。
簡單說:
html5是html的最新標(biāo)準(zhǔn) ,體現(xiàn)在新標(biāo)簽,新css標(biāo)準(zhǔn),新js接口
bootstrap是基于html5技術(shù)的一個好用的前端代碼框架,可以簡單的復(fù)制粘貼,修修改改做一個漂亮頁面
響應(yīng)式設(shè)計(jì)是一種設(shè)計(jì)實(shí)現(xiàn)理念 ,css3的meida query功能讓這個理念的實(shí)現(xiàn)變的現(xiàn)實(shí)而方便。
H5是指在html5標(biāo)準(zhǔn)推行以后,利用html5新特性在手機(jī)上的配合市場營銷采用了大量的js css 及canvas技術(shù)實(shí)現(xiàn)的頁面。個人認(rèn)為H5的概念很狹隘不能代表整個web前端,更不能包含webapp。 但H5的概念也可以變的更寬放,泛指一切在手機(jī)上實(shí)現(xiàn)的應(yīng)用或頁面。
html5移動端開發(fā)和響應(yīng)式設(shè)計(jì)沒有必然聯(lián)系,不過在HTML5移動開發(fā)中經(jīng)常會經(jīng)常使用響應(yīng)式設(shè)計(jì)。
1、響應(yīng)式設(shè)計(jì)不僅用在移動網(wǎng)站,在PC端也有不同屏幕的適配,而且移動端和PC端可以只使用一套代碼,這就是全平臺的響應(yīng)式設(shè)計(jì)。
2、HTML5移動端(移動網(wǎng)站、混合應(yīng)用、WebAPP)為了解決屏幕適配經(jīng)常會使用響應(yīng)式設(shè)計(jì)(流式布局、CSS3媒體查詢),但是響應(yīng)式設(shè)計(jì)并不是必須,也可以使用流式布局和remnant來解決移動端的屏幕適配問題。
(function (doc, win) {
var docEl = doc.documentElement,
resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize',
recalc = function () {
var clientWidth = docEl.clientWidth;
if (!clientWidth) return;
docEl.style.fontSize = 20 * (clientWidth / 320) + 'px';
};
if (!doc.addEventListener) return;
win.addEventListener(resizeEvt, recalc, false);
doc.addEventListener('DOMContentLoaded', recalc, false);
})(document, window);
3、HTML5移動端開發(fā)最初的時候使用固定布局,兩邊留白,那時也沒有用到響應(yīng)式設(shè)計(jì),不過,那種用戶體驗(yàn)不好。
1.調(diào)整視口
代碼實(shí)例:
!DOCTYPE?html
head
meta?charset="UTF-8"?/
title布局之路-移動端開發(fā)實(shí)例/title
meta?name="viewport"?content="width=device-width,user-scalable?=?no"?/
link?rel="stylesheet"?type="text/css"?href="css/reset.css"?/
/head
body
div?class="wrap"/div
/body
/html
代碼解析:由于使用不同設(shè)備打開網(wǎng)頁時,寬度均有所不同,所以不能講視口設(shè)置為固定值,應(yīng)當(dāng)為width=device-width,即將視口設(shè)置為當(dāng)前設(shè)備的寬度。
2.確定設(shè)計(jì)圖的最小字體
瀏覽器(部分)能夠顯示的最小字體未12px,當(dāng)移動端頁面寬度為320px時,要保證最小字體為12px,那么在1080px的設(shè)計(jì)圖中,最小字體應(yīng)當(dāng)為42px。
代碼實(shí)例:
style?type="text/css"
html?{
font-size:?42px;
}
/style
3.浮動布局
各個區(qū)塊都是浮動的,不是固定不變的。為了能自適應(yīng)各個窗口。
代碼實(shí)例:
.main?{
float:?left;
width:?70%;
}
.box?{
float:?left;
width:?60.93%;
font-size:?1.71rem;
text-align:?center;
line-height:?4.64rem;
}
float浮動的好處就是,如果寬度不夠放置下這個元素,元素會自動滾動到下方。
4.通過媒介查詢,為不同設(shè)備加載相應(yīng)樣式
有條件應(yīng)用樣式:
style
@media?all?and(min-width:500px){?...?}
@media?(orientation){?...?}
/style
代碼解析:
第一行媒體查詢代碼指的是:為寬度大于等于500px的設(shè)備設(shè)置樣式。
第二行媒體查詢代碼指的是:為縱屏狀態(tài)(可見區(qū)域大于或等于寬度)下的移動端設(shè)備設(shè)置樣式。
有條件的加載樣式表:
head
link?rel="stylesheet"?href="wide.css"?media="screen?and(min-width:1024)"?/
link?rel="stylesheet"?href="mobile.css"?media="screen?and(max-width:320)"?/
/head
代碼解析:
第一行媒體查詢代碼指的是:為寬度大于等于1024px的設(shè)備,加載wide.css文件。
第二行媒體查詢代碼指的是:為寬度小于等于320px的設(shè)備,加載mobile.css文件。
5.使用百分比和rem替換px
除了布局和文本,"自適應(yīng)網(wǎng)頁設(shè)計(jì)"還必須實(shí)現(xiàn)圖片的自動縮放。
代碼效果對比:
/*使用固定像素*/
.box?{
float:?left;
width:?658px;
font-size:?72px;
text-align:?center;
line-height:?195px;
}
/*使用百分比和rem*/
.box?{
float:?left;
width:?60.93%;
font-size:?1.71rem;
text-align:?center;
line-height:?4.64rem;
}
代碼解析:
水平方向的值,將具體像素調(diào)整為百分比。百分比的計(jì)算是根據(jù)父級的內(nèi)容區(qū)寬度進(jìn)行計(jì)算的。
例如,父級寬度為1080px, 子級元素為197px,那么子元素轉(zhuǎn)換為百分比為:197/1080*100%=18.24%。需要注意的是百分比根據(jù)父級計(jì)算,當(dāng)標(biāo)簽結(jié)構(gòu)級別不同時,計(jì)算公式中的“分母”也有所不同,在開發(fā)時這個地方很容易出現(xiàn)問題,請務(wù)必注意。
垂直方向的值,將具體像素調(diào)整為rem,與水平方向相比,垂直方向的計(jì)算就比較簡單。例如,行高為195px,HTML標(biāo)簽當(dāng)前的字體大小為42px,將行高轉(zhuǎn)換為rem單位,即195/42= 4. 64rem。