[0102]動(dòng)態(tài)拉伸浮動(dòng)(float)元素,所述動(dòng)態(tài)拉伸浮動(dòng)元素為:在一行中排版η個(gè)浮動(dòng)元素后,當(dāng)所述行的右方存在空白時(shí),將所述浮動(dòng)元素的寬度值設(shè)置為所述浮動(dòng)元素的最小寬度值后,判斷所述行的右方的空白是否大于一個(gè)或多個(gè)所述浮動(dòng)元素的寬度,當(dāng)所述行的右方的空白大于一個(gè)或多個(gè)所述浮動(dòng)元素的寬度時(shí),在所述行的右方的空白中加入一個(gè)或多個(gè)所述浮動(dòng)元素。其中,η為按標(biāo)準(zhǔn)流程排版時(shí),一行中排版的所述浮動(dòng)元素的個(gè)數(shù)。浮動(dòng)元素的屬性包括寬度、最小寬度和最大寬度,將浮動(dòng)元素的寬度值設(shè)置為其最小寬度值,可以將浮動(dòng)元素的寬度縮小。只有滿足所述行的右方的空白大于一個(gè)或多個(gè)所述浮動(dòng)元素的寬度的條件時(shí),在所述行的右方的空白中加入一個(gè)或多個(gè)所述浮動(dòng)元素。當(dāng)所述行的右方不存在空白時(shí),或者當(dāng)所述行的右方存在空白但所述行的右方的空白小于一個(gè)所述浮動(dòng)元素的寬度時(shí),對(duì)所述浮動(dòng)元素的排版不作處理。
[0103]與上述動(dòng)態(tài)拉伸浮動(dòng)元素步驟相對(duì)應(yīng),所述動(dòng)態(tài)拉伸浮動(dòng)元素可以包括如下流程步驟:
[0104](I)判斷一行排版η個(gè)浮動(dòng)元素后,所述行的右方是否存在空白;
[0105](2)當(dāng)步驟(I)的判斷結(jié)果為所述行的右方存在空白時(shí),將所述浮動(dòng)元素的寬度值設(shè)置為所述浮動(dòng)元素的最小寬度值;
[0106](3)在步驟(2)將所述浮動(dòng)元素的寬度值設(shè)置為所述浮動(dòng)元素的最小寬度值后,判斷所述行的右方的空白是否大于一個(gè)或多個(gè)浮動(dòng)元素的寬度;
[0107](4)當(dāng)步驟(3)的判斷結(jié)果為所述行的右方的空白大于一個(gè)或多個(gè)浮動(dòng)元素的寬度時(shí),在所述行的右方的空白中加入一個(gè)或多個(gè)所述浮動(dòng)元素。
[0108]其中,在一種可能的實(shí)施方式中,步驟(3)可以為:獲取所述行的右方的空白的寬度值,以所述行的右方的空白的寬度值除以浮動(dòng)元素的寬度值,對(duì)所得到的結(jié)果取整,判斷取整的結(jié)果m是否大于或等于I ;
[0109]相應(yīng)地,步驟(4)為:當(dāng)步驟(3)中判斷的結(jié)果為m大于或等于I時(shí),在所述行的右方的空白中加入m個(gè)浮動(dòng)元素;
[0110]如果步驟(3)的判斷結(jié)果為所述行的右方不存在空白,或者,如果步驟(3)中判斷的結(jié)果為m小于1,則結(jié)束所述動(dòng)態(tài)拉伸浮動(dòng)元素流程,對(duì)所述浮動(dòng)元素的排版不作處理。
[0111]通過(guò)動(dòng)態(tài)拉伸浮動(dòng)元素,可以擴(kuò)大浮動(dòng)元素的可顯示區(qū)域,在一行中盡可能多的排版浮動(dòng)元素,從而避免因?yàn)楣?jié)點(diǎn)的樣式修改后浮動(dòng)元素出現(xiàn)折行造成顯示混亂和不均勻,也避免屏幕上出現(xiàn)過(guò)多空白。
[0112]在較佳的實(shí)施方式中,所述適應(yīng)屏幕規(guī)則排版,還可以包括:
[0113]展開所有的框架(Frame)和浮動(dòng)框架(Iframe)元素。由于框架元素和浮動(dòng)框架元素中通常嵌套了另一個(gè)頁(yè)面,如果不展開這些元素,將難以查看被嵌套的頁(yè)面。展開框架集(FrameSet)中所有的框架元素,以及所有頁(yè)面中的浮動(dòng)框架元素,從而顯示框架元素和浮動(dòng)框架元素中的所有內(nèi)容,防止適應(yīng)屏幕排版中無(wú)法顯示被嵌套頁(yè)面而造成內(nèi)容缺失。
[0114]按行排版表格。對(duì)表格按行進(jìn)行排版,而非按表格方式進(jìn)行排版。所述按行排版表格為:將表格中同一行內(nèi)的單元格按單元格本身的順序在一個(gè)排版行中依次排版,并將在一個(gè)排版行中未排版完畢的單元格另起一個(gè)排版行繼續(xù)排版;當(dāng)表格中同一行的單元格排版完畢后,將表格中下一行的單元格另起一個(gè)排版行進(jìn)行排版。
[0115]按行排版表格可以更好的使表格適應(yīng)屏幕的大小,讓表格可以完整有序地顯示在屏幕上,防止表格內(nèi)容丟失和單元格變形,以及防止節(jié)點(diǎn)的樣式修改后表格內(nèi)容出現(xiàn)重疊和錯(cuò)亂的情況。
[0116]去除多余的空白。所述去除多余的空白,包括:對(duì)于連續(xù)出現(xiàn)的多個(gè)空標(biāo)簽(<br>),只保留一個(gè)空標(biāo)簽,刪除其他空標(biāo)簽,從而壓縮空行的高度;去掉段落標(biāo)簽(
)、單元格標(biāo)簽(<td>)和區(qū)塊標(biāo)簽(<div>)內(nèi)單獨(dú)的空格( ),所述去掉單獨(dú)的空格為:當(dāng)某一行中只有一個(gè) 而無(wú)其他元素或內(nèi)容時(shí),忽略此行,對(duì)此行不作排版。去除不必要的空白,可以使適應(yīng)屏幕規(guī)則排版的效果更緊湊。
[0117]保持圖片、視頻和插件元素的長(zhǎng)寬比。所述保持圖片、視頻和插件元素的長(zhǎng)寬比為:獲取圖片、視頻和插件元素的原始長(zhǎng)寬比,當(dāng)節(jié)點(diǎn)的樣式修改后,分別按修改后的圖片、視頻和插件元素的寬度和自身的原始長(zhǎng)寬比調(diào)整修改后的圖片、視頻和插件元素的高度,例如,圖片原始的大小為400*600px,原始長(zhǎng)寬比為3:2,節(jié)點(diǎn)的樣式修改后,圖片的寬度變?yōu)?00px,則圖片的高度相應(yīng)地調(diào)整為300px,圖片的大小調(diào)整為200*300px。
[0118]保持圖片、視頻和插件的長(zhǎng)寬比,可以取得更好的顯示效果,防止圖片、視頻和插件在顯示時(shí)變形。
[0119]本申請(qǐng)實(shí)施例提供的一種網(wǎng)頁(yè)適應(yīng)屏幕排版方法,只對(duì)節(jié)點(diǎn)的寬度大于智能終端屏幕的節(jié)點(diǎn),修改所述節(jié)點(diǎn)的樣式,并按適應(yīng)屏幕規(guī)則排版,使所述節(jié)點(diǎn)的顯示能夠適應(yīng)屏幕,并具有美觀的效果和視覺(jué)體驗(yàn);而對(duì)節(jié)點(diǎn)的寬度小于或等于智能終端屏幕的節(jié)點(diǎn),則保留其原樣式,并按標(biāo)準(zhǔn)流程排版。從而在保證網(wǎng)頁(yè)頁(yè)面適應(yīng)屏幕的基礎(chǔ)上更多地保留頁(yè)面原來(lái)的布局、樣式和風(fēng)格,而且由于只改動(dòng)一部分節(jié)點(diǎn),節(jié)省了排版資源,總體上不容易與標(biāo)準(zhǔn)流程沖突,適用于各種頁(yè)面寫法。通過(guò)以上的方法實(shí)施例的描述,所屬領(lǐng)域的技術(shù)人員可以清楚地了解到本申請(qǐng)可借助軟件加必需的通用硬件平臺(tái)的方式來(lái)實(shí)現(xiàn),當(dāng)然也可以通過(guò)硬件,但很多情況下前者是更佳的實(shí)施方式?;谶@樣的理解,本申請(qǐng)的技術(shù)方案本質(zhì)上或者說(shuō)對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來(lái),該計(jì)算機(jī)軟件產(chǎn)品存儲(chǔ)在一個(gè)存儲(chǔ)介質(zhì)中,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本申請(qǐng)各個(gè)實(shí)施例所述方法的全部或部分步驟。而前述的存儲(chǔ)介質(zhì)包括:只讀存儲(chǔ)器(ROM)、隨機(jī)存取存儲(chǔ)器(RAM)、磁碟或者光盤等各種可以存儲(chǔ)程序代碼的介質(zhì)。
[0120]根據(jù)本申請(qǐng)實(shí)施例的第二方面,與本申請(qǐng)實(shí)施例提供的一種網(wǎng)頁(yè)適應(yīng)屏幕排版方法相對(duì)應(yīng),本申請(qǐng)實(shí)施例還提供了一種網(wǎng)頁(yè)適應(yīng)屏幕排版裝置。圖3為本申請(qǐng)實(shí)施例提供的一種網(wǎng)頁(yè)適應(yīng)屏幕排版裝置的結(jié)構(gòu)示意圖,在一種可能的實(shí)施方式中,如圖3所示,所述裝置包括:
[0121]計(jì)算單元U301,用于計(jì)算網(wǎng)頁(yè)排版樹中各個(gè)節(jié)點(diǎn)的寬度;
[0122]第一判斷單元U302,與計(jì)算單元U301連接,用于判斷各個(gè)節(jié)點(diǎn)的寬度是否小于或等于屏幕寬度;
[0123]第一執(zhí)行單元U303,與第一判斷單元U302連接,用于當(dāng)節(jié)點(diǎn)的寬度小于或等于屏幕寬度時(shí),保留所述節(jié)點(diǎn)的原樣式,并對(duì)所述節(jié)點(diǎn)按標(biāo)準(zhǔn)流程排版;
[0124]第二執(zhí)行單元U304,與第一判斷單元U302連接,用于當(dāng)節(jié)點(diǎn)的寬度大于屏幕寬度時(shí),修改所述節(jié)點(diǎn)的樣式,并對(duì)所述節(jié)點(diǎn)按適應(yīng)屏幕規(guī)則排版。
[0125]圖4為圖3所示的裝置中計(jì)算單元的結(jié)構(gòu)示意圖。在一種可能的實(shí)施方式中,所述計(jì)算單元U301,如圖4所示,包括:
[0126]第一執(zhí)行子單元U401,用于遍歷網(wǎng)頁(yè)排版樹的節(jié)點(diǎn);
[0127]第一判斷子單元U402,與第一執(zhí)行子單元U401連接,用于判斷各個(gè)節(jié)點(diǎn)的層疊樣式表中是否設(shè)置了寬度值;
[0128]第二執(zhí)行子單元U403,與第一判斷子單元U402連接,用于當(dāng)節(jié)點(diǎn)的層疊樣式表中設(shè)置了寬度值時(shí),以所述節(jié)點(diǎn)的層疊樣式表的寬度為節(jié)點(diǎn)的寬度;
[0129]第三執(zhí)行子單元U404,與第一判斷子單元U402連接,用于當(dāng)節(jié)點(diǎn)的層疊樣式表中未設(shè)置寬度值時(shí),查找所述節(jié)點(diǎn)的所有子節(jié)點(diǎn);
[0130]第二判斷子單元U405,與第三執(zhí)行子單元U404連接,用于判斷所述節(jié)點(diǎn)的所有子節(jié)點(diǎn)的層疊樣式表中是否都未設(shè)置寬度值;
[0131]第四執(zhí)行子單元U406,與第二判斷子單元U405和第三執(zhí)行子單元U404連接,用于當(dāng)所述節(jié)點(diǎn)的所有子節(jié)點(diǎn)的層疊樣式表中都未設(shè)置寬度值時(shí),設(shè)置所述節(jié)點(diǎn)的寬度小于或等于屏幕的寬度;
[0132]第五執(zhí)行子單元U407,與第二判斷子單元U405和第三執(zhí)行子單元U404連接,用于當(dāng)有所述節(jié)點(diǎn)的子節(jié)點(diǎn)的層疊樣式表中設(shè)置了寬度值時(shí),以寬度最大的所述子節(jié)點(diǎn)的寬度為所述節(jié)點(diǎn)的寬度。
[0133]圖5為圖3所示的裝置中第二執(zhí)行單元的結(jié)構(gòu)示意圖。在一種可能的實(shí)施方式中,所述第二執(zhí)行單元U304,如圖5所示,包括:
[0134]樣式修改子單兀U501,用于修改節(jié)點(diǎn)的樣式;
[0135]適應(yīng)屏幕規(guī)則排版子單元U502,與樣式修改子單元U501連接,用于對(duì)節(jié)點(diǎn)按適應(yīng)屏幕規(guī)則排版。
[0136]圖6為圖5所示的第二執(zhí)行單元中樣式修改子單元的結(jié)構(gòu)示意圖。在一種可能的實(shí)施方式中,所述修改樣式子單元,如圖6所示,包括:
[0137]寬度修改子單元U601,用于修改節(jié)點(diǎn)的層疊樣式表的寬度值和最大寬度值,使所述層疊樣式表的寬度值和最大寬度值小于屏幕寬度;
[0138]邊距修改子單元U602,修改節(jié)點(diǎn)中層疊樣式表元素盒模型的填充屬性和邊距屬性的分辨率,使所述填充屬性和所述邊距屬性的分辨率分別小于或等于自身的預(yù)設(shè)值。
[0139]圖7為圖5所示的第二執(zhí)行單元中適應(yīng)屏幕規(guī)則排版子單元的結(jié)構(gòu)示意圖。在一種可能的實(shí)施方式中,所述適應(yīng)屏幕規(guī)則排版子單元,如圖7所示,包括:
[0140]高度排版子單元U701,用于以修改節(jié)點(diǎn)的樣式后所述節(jié)點(diǎn)的元素內(nèi)容的高度為所述節(jié)點(diǎn)的排版高度,按所述節(jié)點(diǎn)的排版高度進(jìn)行排版;
[0141 ] 動(dòng)態(tài)拉伸子單元U702,用于動(dòng)態(tài)拉伸浮動(dòng)元素。
[0142]圖8為圖7所示適應(yīng)屏幕規(guī)則排版子單元中動(dòng)態(tài)拉伸子單元的結(jié)構(gòu)示意圖。在一種可能的實(shí)施方式中,所述動(dòng)態(tài)拉伸子單元,如圖8所示,包括:
[0143]第三判