移動web開發三之頭部和底部

開發京東的移動站web首頁


1》總體佈局

1>在百分比伸縮佈局中,限定組件最小大小,限定組件最大大小(避免圖片過分放大而失真),公認設計圖寬度640px

頭部開發

2》 html5定位(position)

1)包含塊(containing block),position爲absolute/fixed/relative的最近的先祖元素,

position=“absolute”:絕對定位

 1.座標計算:相對包含塊開始計算,若不存在包含塊,相對於viewport計算。

 2.位置固定在網頁上

 3.盒子是position=absolute,子盒子100%相對於最近的relative/absolute/fixed祖先盒子。如果沒有相對於viewport

position=“fixed”: 固定定位

1.座標計算:相對於veiwport窗口計算。

2.位置相對於窗口不動

3.子盒子是position=fixed,子盒子的100%相對於Viewport 往往會造成溢出

position=“relative”相對定位

1.座標計算:相對原本位置開始計算。

2.位置固定在網頁上

3.子盒子是position=relative,子盒子100%相對於父盒子

position=“static”默認的定位

1.座標計算:從父元素的內邊距開始計算(不包括外邊距和邊框,包括內邊距和主體內容)

2.位置固定在網頁上

3.static盒子的100%相對於父盒子

3》 fixed 和 百分比搭配 溢出問題

父div樣式:

.jd_layout{
    width: 100%;
    max-width:640px;
    min-width:300px;
    margin:0 auto;
}
	子div樣式:	
.jd_header {
    position: fixed;
    height: 40px;
    width:100%;
}
fixed定位的元素width:100%;相對於viewport, 溢出了父盒子。
那麼fixed定位的子盒子,相對的寬度也就是viewport了。
.jd_header > .jd_header_box{
    width: 100%;
    max-width:640px;
    min-width:300px;
    margin:0 auto;
}

4》 圖片的失真問題

	通過壓縮尺寸的方式解決圖片在自適應過程中因放大而失真(公認設計圖是640px)
	如果是img,使用設置寬高的方式壓縮
	如果是背景,使用設置background-size屬性來壓縮
	例如:
.logo{
    width:50px;
    height:50px;
    background: url("../img/logo.jpg") no-repeat;
    background-size:200px,200px;
}

如果原圖是640px,這裏採用200px,即做了一個64:20的壓縮

5》常用的定位搭配

{
    position: relative;
}
{
    position: absolute;
    top:100px;
    left:100px;
}
父元素是relative,子元素時absolute  ==> 好處:父元素不動的同時,子元素相對於父元素計算座標

6》absolute定位導致的問題:

	使用了absolute的元素不會受父級包含塊(包含塊是父元素)的padding以及包含塊中其他元素等約束。

	1)包含塊有其他元素,absolute定位的元素可以覆蓋其他元素顯示
	2)不同於父級包含塊的普通子元素,absolute定位的不會撐開父級包含塊
	3)父級包含塊的padding屬性對 absolute定位的子元素無效

7》css選擇器之屬性選擇器

	[attribute^=value]	a[src^="http"]		屬性以指定字符值開頭
	[attribute*=value]	a[src*="abc"]		屬性包含指定字符值
	[attribute$=value]	a[src$=".com"]	屬性以指定字符值結尾
	
也可以 用於class,如下:
	[class^="icon_"]{}表示對class的value值以“icon_”開頭的所有元素的選擇

8》關於css導致的覆蓋:

	1> absolute定位的元素與普通兄弟元素重合,覆蓋普通兄弟元素
	2> fixed定位的元素與其他普通元素重合,覆蓋其他普通元素,
	3> absolute/fixed/relative對absolute/fixed/relative定位元素,特殊定位的對特殊定位,按css的添加順序覆蓋,fixed同理
	4> 如果想根據需求來決定顯示順序,使用index屬性, 默認是0,數字越小,越在下層。

9》兩種居中情況及寫法

	1>方法一:採用margin: 0 auto;
		margin:0 auto居中 失效的幾種情況
		1)使用absolute/fixed/relative進行定位後
		 2)沒有設置寬度
		3)元素設置了浮動(float)
	2>方法二:採用absolute定位,按座標來定位到中間。
代碼如:
.mydiv{
    width:150px;
    height:6px;
    position: absolute;
    /*mydiv從父元素中間開始*/
    left:50%;
    /*mydiv往右移動半個寬度,達到居中效果*/
    margin-left:-75px;
}

尾部

10》css中的top, bottom,left,rigth與margin-top, margin-left等的區別

top等 只能與有定位(fixed, relative, absolute)的元素配合使用,否則沒有效果,

margin-top等,對任何元素都可使用,無論是否設置定位。但對定位的元素使用可能在不同瀏覽器解析效果不同。

建議:top等與有定位的元素配合使用。

margin-top等與沒有定位的元素配合使用

應用:讓盒子總是固定顯示在底部(如果換成margin-bottom沒有效果!)

.floor_box{
    position: fixed;
    bottom:0;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章