最近一個(gè)項(xiàng)目主要涉及前端的交互優(yōu)化,由于UED資源不足,所以一起做了一些前端的工作,
由于各瀏覽器的標(biāo)準(zhǔn)不一樣,如要兼容像ie6,7,8及firefox,樣式調(diào)整比較費(fèi)事,現(xiàn)在css相關(guān)
的一些技巧分享一下,希望對(duì)大家有所幫助。
1、什么是css hack.
針對(duì)不同的瀏覽器去寫(xiě)不同的CSS,讓它能夠同時(shí)兼容不同的瀏覽器,能在不同的瀏覽器中也
能得到我們想要的頁(yè)面效果,這種針對(duì)不同的瀏覽器寫(xiě)不同的CSS code的過(guò)程,稱(chēng)之為CSS hack。
通過(guò)下表中的hack code就可以實(shí)現(xiàn)不同版本ie瀏覽器間的兼容:
hack code |
ie6 |
ie7 |
firefox |
_ |
√ |
× |
× |
* |
√ |
√ |
× |
!import |
× |
√ |
√ |
‘_’ : 只有ie6能識(shí)別_,如ie7,8下”width:100px; “的樣式是OK,但ie6不夠?qū)挄r(shí),可以在”width:100px”后面增加一段”_width:105px;” 那么ie7,8不會(huì)解析_width:105px,但ie6會(huì)執(zhí)行。
‘*’ : ie6,7都能識(shí)別*,但firefox不能識(shí)別;
‘!import’ : ie 6不能識(shí)別,ie7和ie8都能識(shí)別;
2、css調(diào)試工具
(1). ie8的調(diào)試工具,ie8下按F12能呼出開(kāi)發(fā)人員開(kāi)發(fā)工具,如下圖:
選中圖中的箭頭鼠標(biāo)按鈕,在瀏覽器中選中需要優(yōu)化的HTML對(duì)象,HTML窗口就會(huì)
定位到選中HTML對(duì)象的代碼上(如上圖左),則右窗口中則顯示當(dāng)前對(duì)象的所有樣式,
通過(guò)對(duì)右窗口中的樣式調(diào)整,達(dá)到預(yù)期效果后,找到css文件的class,并作相同修
改。通過(guò)這個(gè)工具,修改樣式后所見(jiàn)即所得,確定樣式后再修改樣式文件。
(2). Firebug,firefox下可以通過(guò)Firebug工具,來(lái)定位HTML對(duì)象并調(diào)試該對(duì)象的樣式,如下圖:
網(wǎng)頁(yè)可見(jiàn)區(qū)域?qū)挘篸ocument.body.clientWidth
網(wǎng)頁(yè)可見(jiàn)區(qū)域高:document.body.clientHeight
網(wǎng)頁(yè)可見(jiàn)區(qū)域?qū)挘篸ocument.body.offsetWidth (包括邊線(xiàn)的寬)
網(wǎng)頁(yè)可見(jiàn)區(qū)域高:document.body.offsetHeight (包括邊線(xiàn)的寬)
網(wǎng)頁(yè)正文全文寬:document.body.scrollWidth
網(wǎng)頁(yè)正文全文高:document.body.scrollHeight
網(wǎng)頁(yè)被卷去的高:document.body.scrollTop
網(wǎng)頁(yè)被卷去的左:document.body.scrollLeft
網(wǎng)頁(yè)正文部分上:window.screenTop
網(wǎng)頁(yè)正文部分左:window.screenLeft
屏幕分辨率的高:window.screen.height
屏幕分辨率的寬:window.screen.width
屏幕可用工作區(qū)高度:window.screen.availHeight
屏幕可用工作區(qū)寬度:window.screen.availWidth
HTML精確定位:scrollLeft,scrollWidth,clientWidth,offsetWidth
scrollHeight: 獲取對(duì)象的滾動(dòng)高度。
scrollLeft:設(shè)置或獲取位于對(duì)象左邊界和窗口中目前可見(jiàn)內(nèi)容的最左端之間的距離
scrollTop:設(shè)置或獲取位于對(duì)象最頂端和窗口中可見(jiàn)內(nèi)容的最頂端之間的距離
scrollWidth:獲取對(duì)象的滾動(dòng)寬度
offsetHeight:獲取對(duì)象相對(duì)于版面或由父坐標(biāo) offsetParent 屬性指定的父坐標(biāo)的高度
offsetLeft:獲取對(duì)象相對(duì)于版面或由 offsetParent 屬性指定的父坐標(biāo)的計(jì)算左側(cè)位置
offsetTop:獲取對(duì)象相對(duì)于版面或由 offsetTop 屬性指定的父坐標(biāo)的計(jì)算頂端位置
event.clientX 相對(duì)文檔的水平座標(biāo)
event.clientY 相對(duì)文檔的垂直座標(biāo)
event.offsetX 相對(duì)容器的水平坐標(biāo)
event.offsetY 相對(duì)容器的垂直坐標(biāo)
document.documentElement.scrollTop 垂直方向滾動(dòng)的值
event.clientX+document.documentElement.scrollTop 相對(duì)文檔的水平座標(biāo)+垂直方向滾動(dòng)的量
IE,F(xiàn)ireFox 差異如下:
IE6.0、FF1.06+:
clientWidth = width + padding
clientHeight = height + padding
offsetWidth = width + padding + border
offsetHeight = height + padding + border
IE5.0/5.5:
clientWidth = width - border
clientHeight = height - border
offsetWidth = width
offsetHeight = height
(需要提一下:CSS中的margin屬性,與clientWidth、offsetWidth、clientHeight、offsetHeight均無(wú)關(guān))
網(wǎng)頁(yè)可見(jiàn)區(qū)域?qū)挘?document.body.clientWidth
網(wǎng)頁(yè)可見(jiàn)區(qū)域高: document.body.clientHeight
網(wǎng)頁(yè)可見(jiàn)區(qū)域?qū)挘?document.body.offsetWidth (包括邊線(xiàn)的寬)
網(wǎng)頁(yè)可見(jiàn)區(qū)域高: document.body.offsetHeight (包括邊線(xiàn)的高)
網(wǎng)頁(yè)正文全文寬: document.body.scrollWidth
網(wǎng)頁(yè)正文全文高: document.body.scrollHeight
網(wǎng)頁(yè)被卷去的高: document.body.scrollTop
網(wǎng)頁(yè)被卷去的左: document.body.scrollLeft
網(wǎng)頁(yè)正文部分上: window.screenTop
網(wǎng)頁(yè)正文部分左: window.screenLeft
屏幕分辨率的高: window.screen.height
屏幕分辨率的寬: window.screen.width
屏幕可用工作區(qū)高度: window.screen.availHeight
屏幕可用工作區(qū)寬度: window.screen.availWidt
示例:
ReverseAjaxTracker
。這將在對(duì) bean 生成第一個(gè)請(qǐng)求時(shí)改寫(xiě)延遲初始化(lazy initialization)的常規(guī)行為 —— 在本例中這是必須的,因?yàn)榭蛻?hù)機(jī)不會(huì)主動(dòng)對(duì) ReverseAjaxTracker
調(diào)用方法。