梁敦毫
(廣東茂名幼兒師范專(zhuān)科學(xué)校,廣東茂名 525000)
近年來(lái),隨著移動(dòng)互聯(lián)網(wǎng)的高速發(fā)展,移動(dòng)互聯(lián)網(wǎng)用戶的數(shù)量已經(jīng)遠(yuǎn)遠(yuǎn)超過(guò)了PC端用戶,由于移動(dòng)設(shè)備使用便捷,越來(lái)越多的人喜歡通過(guò)手機(jī)、平板等移動(dòng)設(shè)備來(lái)訪問(wèn)網(wǎng)絡(luò),例如,當(dāng)想查看某學(xué)校官網(wǎng)時(shí),用戶可能會(huì)通過(guò)手機(jī)登陸,如果打開(kāi)的網(wǎng)站排版混亂、字體太小、滾動(dòng)條很長(zhǎng)等情況,不僅用戶體驗(yàn)差,網(wǎng)站也達(dá)不到宣傳的效果?,F(xiàn)在,大部分的網(wǎng)站都逐步往風(fēng)格一致而且兼容不同的設(shè)備的方向發(fā)展,響應(yīng)式布局就順應(yīng)而生。響應(yīng)式布局是指通過(guò)一套代碼使網(wǎng)頁(yè)內(nèi)容能根據(jù)設(shè)備的不同尺寸良好的呈現(xiàn)不一樣的效果,從而提高用戶的體驗(yàn)。
響應(yīng)式布局是指一個(gè)網(wǎng)站能夠兼容不同的終端設(shè)備,而不需要為每個(gè)終端設(shè)備設(shè)計(jì)一個(gè)特定版本。響應(yīng)式布局能根據(jù)不同的終端,呈現(xiàn)不同的顯示效果,為用戶帶來(lái)更好舒適的界面和更好的用戶體驗(yàn)。
HTML5是最新的Web標(biāo)準(zhǔn),在原有的HTML4基礎(chǔ)上增加了一些新的標(biāo)簽和JavaScript接口,其中定義了很多語(yǔ)義化的標(biāo)簽,如:header、footer、nav、main等,這些標(biāo)簽給網(wǎng)頁(yè)的布局帶來(lái)了很大的便利。
CSS3是CSS(層疊樣式表)的最新版本,它在原有的CSS2.0的版本上增加了許多新的特性,例如,多列布局和彈性盒模型布局特性、媒體查詢特性等,其中,彈性盒模型布局方便了Web前端開(kāi)發(fā)者根據(jù)復(fù)雜的前端分辨率進(jìn)行彈性布局,輕松地實(shí)現(xiàn)頁(yè)面中的某一區(qū)塊在水平、垂直方向?qū)R,是進(jìn)行響應(yīng)式網(wǎng)站開(kāi)發(fā)的一大利器[1]。媒體查詢能根據(jù)不同的分辨率的終端設(shè)備,定義不同的樣式。
Bootstrap是美國(guó)Twitter公司的設(shè)計(jì)師Mark Otto和Jacob Thornton合作基于HTML、CSS、JavaScript開(kāi)發(fā)的簡(jiǎn)潔、直觀、強(qiáng)悍的前端開(kāi)發(fā)框架,使得Web開(kāi)發(fā)更加快捷[2]。Bootstrap提供了一套響應(yīng)式、移動(dòng)設(shè)備優(yōu)先的流式網(wǎng)格系統(tǒng),隨著屏幕或視口(viewport)尺寸的增加,系統(tǒng)會(huì)自動(dòng)分為最多12列[3]。
設(shè)計(jì)網(wǎng)頁(yè)布局的實(shí)現(xiàn)方式有很多種,但是主流的設(shè)計(jì)方式是DIV+CSS,這種方式結(jié)構(gòu)代碼簡(jiǎn)單,可以輕松的實(shí)現(xiàn)內(nèi)容與表現(xiàn)相分離,提高網(wǎng)頁(yè)的加載速度,特別是在HTML5中增加了
該響應(yīng)式布局的實(shí)現(xiàn)主要是利用CSS3的媒介查詢(@media)功能。通過(guò)查詢判斷設(shè)備終端所處的寬度范圍,然后執(zhí)行對(duì)應(yīng)的CSS樣式,從而呈現(xiàn)不同的布局效果。該案例實(shí)現(xiàn)的兩個(gè)關(guān)鍵點(diǎn)如下:
2.1.1 HTML結(jié)構(gòu)代碼
在案例中,布局分三大模塊:頭部(header)、中間(container)、腳部(footer),其中主題部分分左側(cè)(left)、主體(main)、右側(cè)(right)三個(gè)模塊。具體代碼如下:
2.1.2 CSS代碼
為了實(shí)現(xiàn)不同的設(shè)備顯示不同的布局效果,案例中將設(shè)備的瀏覽器的寬度分為大于等于992像素,768~992像素以及小于768像素三種情況。當(dāng)寬度大于992像素時(shí),header、container、footer的寬度均設(shè)置為992像素,container中的三個(gè)模塊都左浮動(dòng);具體代碼如下:
圖1 效果圖
當(dāng)寬度在768-992像素時(shí),header、container、footer的寬度均設(shè)置為750像素,main和left設(shè)置左浮動(dòng),right設(shè)置為display。
當(dāng)寬度小于768像素時(shí),所有模塊的寬度都設(shè)為600像素,這樣模塊就實(shí)現(xiàn)疊加顯示。
從上面的案例可以看出HTML5+CSS3的方法可以實(shí)現(xiàn)響應(yīng)式布局,但是,設(shè)計(jì)人員需要為每一個(gè)查詢范圍的分別寫(xiě)一套不同的CSS代碼,這樣不僅代碼多,而且工作量非常大。為了能簡(jiǎn)單高效的設(shè)計(jì)響應(yīng)式布局,可以借助前端開(kāi)發(fā)框架Bootstrap來(lái)實(shí)現(xiàn)。
Bootstrap中預(yù)定義了一套CSS樣式,以及樣式對(duì)應(yīng)的jQuery代碼,使用時(shí)只需要提供固定的HTML結(jié)構(gòu),再添加Bootstrap中的類(lèi)名稱(chēng)即可實(shí)現(xiàn)指定的效果。另外,Bootstrap還包含了豐富的組件和插件,同時(shí)擁有一套移動(dòng)設(shè)備優(yōu)先的流式網(wǎng)格系統(tǒng),網(wǎng)格系統(tǒng)將容器平均為12列,在使用時(shí)根據(jù)實(shí)際情況設(shè)置模塊所占的列數(shù),但是所有模塊的列數(shù)總和不超過(guò)12,如圖2網(wǎng)格系統(tǒng)所示,它包含了很多易于使用的預(yù)定義類(lèi)和強(qiáng)大的用于生成更具語(yǔ)義的布局[4]。網(wǎng)格系統(tǒng)通過(guò)一系列的行和列的組合來(lái)創(chuàng)建網(wǎng)頁(yè)布局,整個(gè)網(wǎng)格系統(tǒng)根據(jù)設(shè)備尺寸的大小形成四種不同的網(wǎng)格選項(xiàng),Bootstrap為不同的網(wǎng)格選項(xiàng)定義了不同的類(lèi),如圖3網(wǎng)格參數(shù)所示。
圖2 網(wǎng)格系統(tǒng)
其中,class前綴的命名規(guī)則就是根據(jù)不同屏幕寬度區(qū)分的,例如,.col-xs-適用屏幕寬度小于768px的超小設(shè)備,.col-sm-適用寬度在768px~992px之間的小型設(shè)備,.col-md-適用寬度在992px~1200px之間的中型設(shè)備,.col-lg-適應(yīng)寬度大于1200px的大型設(shè)備。
了解了網(wǎng)格系統(tǒng),再利用Bootstrap設(shè)計(jì)與圖1相同效果的網(wǎng)頁(yè)布局就變得輕松多了。下面將通過(guò)兩個(gè)步驟來(lái)實(shí)現(xiàn)這個(gè)布局效果:
2.2.1 添加Bootstrap文件
Bootstrap里集成了很多前端框架的內(nèi)容,要想使用這些內(nèi)容,必須把Bootstrap導(dǎo)入到網(wǎng)頁(yè)中,導(dǎo)入的方式有兩種:下載Bootstrap文件再導(dǎo)入到網(wǎng)頁(yè);通過(guò)CDN庫(kù)導(dǎo)入。在本案例中,采用第一種方式,下載Bootstrap后,解壓出來(lái),并在HTML的頭部導(dǎo)入Bootstrap的CSS文件,命令如下:
2.2.2 劃分網(wǎng)頁(yè)模塊
這里劃分模塊的代碼和前面是類(lèi)似的具體如下:
在HTML代碼中,直接使用Bootstrap的網(wǎng)格系統(tǒng),頭部header和腳部footer不管屏幕寬度多大都是占12列,所以直接引用類(lèi)“col-sm-12”即可,content模塊分成left、main、right三個(gè)部分,當(dāng)屏幕寬度小于768px時(shí),當(dāng)部分都是占12列,引用類(lèi)“col-xs-12”;當(dāng)屏幕寬度在768px-992px時(shí),left占4列,引用類(lèi)“col-sm-12”,main占8列,引用類(lèi)“col-sm-8”,而right則隱藏起來(lái),引用類(lèi)“hiddensm”;當(dāng)屏幕寬度大于992px時(shí),三個(gè)部分分別占3列、6列、3列,對(duì)應(yīng)分別引用類(lèi)“col-md-3”、col-md-6”、col-md-3”。這樣,網(wǎng)頁(yè)就可以隨著屏幕寬度的變化而呈現(xiàn)出不同的布局效果,其效果如圖4所示,至此,利用Bootstrap設(shè)計(jì)響應(yīng)式布局就完成了。
圖3 網(wǎng)格參數(shù)
圖4 不同屏幕寬度顯示效果圖
在本文中敘述了兩種不同的設(shè)計(jì)響應(yīng)式布局的方式。比較這兩種實(shí)現(xiàn)方式,采用媒體查詢,需要為每一種尺寸的設(shè)備設(shè)計(jì)一套樣式,代碼量大,設(shè)計(jì)繁瑣;而采用Bootstrap框架體系,只需要直接引用預(yù)定義的樣式類(lèi)即可,設(shè)計(jì)變得便捷高效。由此可見(jiàn),在移動(dòng)設(shè)備流行的時(shí)代,Web前端開(kāi)發(fā)中,掌握和應(yīng)用Bootstrap框架是十分重要的。