2012-06-15 230 views
0

我的jsfiddle在這裏http://jsfiddle.net/pedz/YG3bv/瀏覽器對準兼容性問題

完整頁面http://jsfiddle.net/pedz/YG3bv/14/embedded/result/

這是我發佈的jsfiddle頁面,以便讓我知道如果我把事情弄糟了第一次嘗試。

如果您使用Chrome或Safari瀏覽器查看此小三角形左尖端的最左像素是直接在下劃線最右邊的像素下。這就是我要的。

如果使用Firefox瀏覽器(我正在使用13),那麼看起來像兩個像素的小三角形就會右移。

我被告知,當用IE9查看時,它左移一個像素。

我已經弄清楚了Chrome和FF大多數日子。如果你在各種元素中添加邊界,那麼你可以確定我的一些結論。

FF和Chrome同意關於左側和底部,但他們不同意關於父容器的頂部或右側。與Chrome相比,FF的右側有一列或兩列像素。這就是爲什麼箭頭更靠右一個或兩個像素。

當您在foo範圍內放置邊框時,也會出現FF與Chrome相比將文本向上移動一個像素的情況。在FF中的下行不會觸及邊界,而他們在Chrome中執行(或非常接近)。同樣,Chrome中的文本上方(邊框內)的空白位置比FF中的要多。我不關心的這個特殊問題......它只是我觀察到的。

我的想法是我需要「重置」一些CSS屬性,但我還沒有弄清楚我需要哪一個。這真是我的終極目標......瞭解瀏覽器之間的CSS屬性是不同的。

我的第二個目標是想出一種方法,讓不同瀏覽器中的同一位置上的小三角形......或一種技術來做到這一點。我可以在瀏覽器中添加特定的Javascript來以某種方式推動事物,但從網絡來看,這聽起來像是一個非常糟糕的主意。

預覽:

Preview in Chrome19 預覽在鉻19

Preview in IE9 預覽在Internet Explorer 9

Preview in Firefox13 預覽在Firefox 13

+2

如果您要在網頁設計中使用1px精度,請購買您最喜愛的止痛藥品牌的股票...您會因爲頭疼而頭疼。 – saluce

+1

檢查編輯。我已經上傳了截圖,以幫助觀衆立即看到問題。看到我的答案。您需要使用[CSS重置工具](http://meyerweb.com/eric/tools/css/reset/)來解決跨瀏覽器兼容性問題(本例中爲Firefox問題)。 –

回答

1

這當然是一個非常有趣的場景。

看起來像Firefox是的<跨度後呈現非打破空間>倒三角,這肯定不是你的意圖。這是因爲三角形的跨度嵌套在另一個跨度內。

TBODY在你的代碼看起來像:

<td class='upd_apar_def-defect upd_apar_def_dual_button'> 
    <span class='foo'> 
<a href='some/path' class='upd_apar_def_link'>123456</a><span class='upd_apar_def_span'></span> 
    </span> 
</td> 
<td class='upd_apar_def-apar upd_apar_def_dual_button'> 
    <span class='foo'> 
<a href='some/path' class='upd_apar_def_link'>987654</a><span class='upd_apar_def_span'></span> 
    </span> 
</td> 

嘗試用替換它來解決問題:

<td class='upd_apar_def-defect upd_apar_def_dual_button'> 
    <span class='foo'> 
<a href='some/path' class='upd_apar_def_link'>123456</a><span class='upd_apar_def_span'></span></span> 
</td> 
<td class='upd_apar_def-apar upd_apar_def_dual_button'> 
    <span class='foo'> 
<a href='some/path' class='upd_apar_def_link'>987654</a><span class='upd_apar_def_span'></span></span> 
</td> 

CSS和您的DOM的休息沒有問題,但顯然火狐似乎做正確的事(IMO)..雖然它的爭議! :-)

+0

是的。我上週發現了這個問題,但沒有更新這個問題。 「漂亮」的html不是我的朋友。 :-( 感謝您的幫助。 – pedz

0

一眼望去,我看到的是沒有設置字體大小或字體系列值。內容在不同的瀏覽器中似乎具有不同的默認字體大小和/或字體系列,這可能是導致佈局因瀏覽器而異的部分原因。

編輯:

增加字體大小和字體家庭後,我仍然看到FF和Chrome之間的差異。添加傳統的reset.css似乎沒有任何效果。我懷疑這種差異主要來自嘗試將CS​​S佈局樣式(位置:絕對等)應用於HTML表格元素(td等)。無論你做什麼,這種組合可能會有不可預知的結果。

+0

感謝您的幫助。我添加了字體大小和家庭。我曾嘗試過的一個實驗。正如你所說,它沒有幫助。我的部分實驗只是在div和跨度上。我也有各種各樣的jsfiddles。它基於那些我認爲FF和Chrome不同意「抵消父母」(foo跨度)的頂部或正確位置的人。 – pedz

+0

我會將其縮減爲最簡單的代碼,讓您看到發生的問題,並以該形式呈現它。 –

0

解決了Firefox的問題。

Fixed on Firefox

修正了火狐

我與另外CSS重置代碼here更新您的提琴手後跨瀏覽器的兼容性。製作此文件的本地副本或嵌入您現有的CSS文件。

添加以下CSS重置代碼上面/* your CSS starts here */行:

html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video { 
    border:0; 
    font-size:100%; 
    font:inherit; 
    vertical-align:baseline; 
    margin:0; 
    padding:0; 
} 

article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section { 
    display:block; 
} 

希望這有助於。

+0

我真的不喜歡這種霰彈槍解決問題的方法。一旦將_required_屬性正確設置爲所需的值,重置將不再執行任何操作,而是佔用空間。根據OP,_「......這裏真的是我的終極目標......瞭解瀏覽器之間CSS屬性**的不同之處。」_ – Sparky

+2

我喜歡它!這些重新設置阻止了我瘋狂地用手切片模板... – Ties

+1

@ Sparky672,檢查編輯。這不是一個真正的短槍法。許多網頁設計師都使用CSS重置[***修復常見兼容性問題***](http://meyerweb.com/eric/tools/css/reset/)。除了幾乎沒有10行代碼之外,你還在討論什麼額外的空間? [它的縮小版本](http://www.refresh-sf.com/yui/files/ad7bc7e5bf992​​1511c7aeeb27be3e2012250c3cd/.min.css)是583個字節。 –