楚孟慧 吳姝瑤
(山東科技大學(xué) 電氣信息系,山東 濟(jì)南250031)
1.1 與表格布局比較。css+div 布局在網(wǎng)站開(kāi)發(fā)中已經(jīng)被應(yīng)用很多年了,占據(jù)了相當(dāng)大的主導(dǎo)地位。div 是HTML 里的一種標(biāo)簽
將css 樣式表打包成一個(gè)文件,使用時(shí)可重復(fù)調(diào)用、舉一反三。使用css+div 布局可以使內(nèi)容和表現(xiàn)形式分離,代碼干凈整潔、有較好的復(fù)用性和可讀性。與css+div 布局相比因表格布局最初的目的是用于放置文字顯示內(nèi)容,用于網(wǎng)頁(yè)布局必須要調(diào)整表格內(nèi)部大小,與制表元素夾雜在一起容易導(dǎo)致大量冗余代碼,影響代碼的可讀性并且難以維護(hù)。
1.2 屬性的多樣性。Div 元素可設(shè)置多種屬性,其屬性可通過(guò)css 層疊樣式表統(tǒng)一設(shè)置,下面是幾種較為常用的能夠增強(qiáng)網(wǎng)頁(yè)美觀度屬性設(shè)置。
1.2.1 background 設(shè)置背景顏色,例如設(shè)置背景顏色為紅色或者綠色background:red/green ,其中屬性值還可以用十六進(jìn)制數(shù)表示;屬性值若是為url(“圖片路徑”)則為設(shè)置該路徑下的圖片為此div 元素的背景。
1.2.2 opacity 設(shè)置背景顏色的透明度,例如opacity:0.7 效果是百分之70 是不透明的,數(shù)值越小透明度越高。
1.2.3 border-radius 設(shè)置div 元素的圓角化, 例如border-radius:10px 將10px 的寬度進(jìn)行圓角化且數(shù)值越大圓角化的程度越高。
1.2.4 border 設(shè)置邊框?qū)傩裕藢傩钥赏瑫r(shí)設(shè)置邊框的寬度、樣式、顏色。例如:border: 1px solid #00008b 效果寬度為1px,樣式為實(shí)線,顏色為#00008b。
雖然大多數(shù)瀏覽器都支持css+div 技術(shù),但還是有部分瀏覽器不支持此技術(shù)。而且div+css 技術(shù)對(duì)于新手開(kāi)發(fā)者來(lái)說(shuō)是比較困難的,因?yàn)橄鄬?duì)于表格布局來(lái)說(shuō)div 元素的定位更復(fù)雜,容易導(dǎo)致頁(yè)面分布七零八落。
流式布局是在網(wǎng)頁(yè)中常見(jiàn)的布局,流式布局是按照標(biāo)簽的編寫順序來(lái)依次垂直排列。如圖1:
圖1 流式布局
流式布局代碼:
代碼解析:常規(guī)流式布局中簡(jiǎn)單羅列
僅僅使用常規(guī)的流式布局只能實(shí)現(xiàn)垂直方向上的div 元素排列無(wú)法形成多種多樣的網(wǎng)絡(luò)布局結(jié)構(gòu),此時(shí)浮動(dòng)布局就顯得尤為重要。浮動(dòng)布局可以形象的描述為每個(gè)div 元素塊就像浮動(dòng)在水面上,位置可以隨著水流方向的改變而改變。浮動(dòng)分為兩個(gè)方向左浮動(dòng)和右浮動(dòng)分別對(duì)應(yīng)屬性和屬性值為float:left /right。在同一行中的不同div 元素可以存在不同的浮動(dòng),浮動(dòng)塊不會(huì)相互重疊。在不需要浮動(dòng)屬性時(shí)可以清除浮動(dòng),浮動(dòng)布局可以使各部分排列有序,從而有利于對(duì)整體空間規(guī)劃。
當(dāng)三個(gè)相同大小的div 元素都設(shè)置向左浮動(dòng)的屬性時(shí)則出現(xiàn)如圖2 所示的情況:
圖2 全部左浮動(dòng)
當(dāng)沒(méi)有浮動(dòng)屬性時(shí)float:none 也是默認(rèn)設(shè)置網(wǎng)頁(yè)布局與圖1 相同。
當(dāng)?shù)撞縟iv 的浮動(dòng)屬性由float:left 改為float:right 時(shí)底部div 模塊會(huì)向右對(duì)齊。
當(dāng)div 排列在同一行時(shí)當(dāng)?shù)撞縟iv 的浮動(dòng)屬性被清除即clear:left 則底部div 將換行顯示,如圖3 。
圖3 底部清除浮動(dòng)
當(dāng)大小不一致的div 元素排列在同一行,不能完全顯示的div 會(huì)自動(dòng)換行,并在下一行的開(kāi)頭顯示,如圖4。
圖4 底部換行顯示
在css 中加入float:left 使得三個(gè)div 層全部左移形成水平排列的效果。css 樣式表中的高度和寬度大小相同。
3.3.1 靜態(tài)定位。position:static 如果代碼中不寫position 屬性相當(dāng)于寫上了position:static,元素在它原本的位置顯示,即使增加top、left 等屬性也不起作用。
3.3.2 相對(duì)定位與絕對(duì)定位。相對(duì)定位:podition:relative 是相對(duì)于原來(lái)位置進(jìn)行上下左右的移動(dòng),且原來(lái)位置仍被占位。
絕對(duì)定位position:absolute 是相對(duì)于網(wǎng)頁(yè)左上角0 點(diǎn)來(lái)說(shuō),配合top、left、right、bottom 來(lái)進(jìn)行定位。若位于父層元素的下一層元素則是相對(duì)于父層元素來(lái)定位,前提是父層元素已經(jīng)定位。當(dāng)父層元素定位為絕對(duì)定位,子層元素相對(duì)于最近的父層元素發(fā)生改變。
當(dāng)Grandfather 層定位,fatehr 層進(jìn)行想對(duì)移動(dòng)之后,son 層相對(duì)于已經(jīng)定位的father 層進(jìn)行移動(dòng),如圖5 所示。
圖5 絕對(duì)定位
解析:首先Grandfather 層div 設(shè)置position:absolute,此時(shí)Father 層的最近父層則為Grandfather 層,于是Father 層相對(duì)于Grandfather 層偏移。Father 層設(shè)置為position:absolute 之后Son層可以相對(duì)于Father 層進(jìn)行偏移。
綜上所述,css+div 布局結(jié)構(gòu)存在著優(yōu)勢(shì)同時(shí)又存在著劣勢(shì)。但div+css 布局能夠成為主流主要是由于css 與div 將樣式與布局分離,避免改變樣式時(shí)需要大量的修改代碼。所以對(duì)于新手設(shè)計(jì)師來(lái)說(shuō)需要將div+css 結(jié)構(gòu)掌握之后再進(jìn)行網(wǎng)頁(yè)設(shè)計(jì),盡量避免定位不準(zhǔn)確的問(wèn)題,掌握三種常用的布局方式對(duì)設(shè)計(jì)網(wǎng)頁(yè)有極大幫助。