IE6使用fliter處理png後,連結無法點選的問題

參考文章:利用 AlphaImageLoader 解決 IE6 對 png 圖檔的透明問題

IE6底下使用png時,必須使用fiter的方式,png才能正常顯示不會出現醜醜的藍色。但是修正完畢後,如果裡面放了文字、連結、圖片等東西,會發現內容完全選不到,更不用說要點選連結,就好像內容被一個模包住碰不到一樣。

這個時候,就要用另外一個解法,把希望要被點選的東西再包到一個div內。然後在該div上(不是設定png背景圖的div,該div的子元素)加上position:relative;

結論:如果都要修,我寧可IE6不要用png,改用gif處理,會比較單純。因為這個修法要特別為IE6去改html。

input隱形按鈕在IE6的問題與解決方法

有時候版面設計會把按鈕作成圖片、而且讓造型上跟輸入欄結合在一起。這時候我通常會用比較偷懶的方法:把輸入欄、按鈕切成同一張圖。然後把輸入欄跟按鈕的input用隱形的方式壓在圖片上。

輸入欄的部份隱形沒有問題,但是input按鈕隱形的時候,在IE6會有問題,最近剛好碰到兩次,寫一下原本的作法跟解決方法。

如果不考慮IE6,IE7以上以及非IE瀏覽器可以用下面這段css把input變成隱形按鈕
<input type=”submit” name=”button” id=”button” value=”送出” />

#button{
width:10px; // 因為要隱形、要自訂寬
height:10px; // 因為要隱形、要自訂高
text-indent:-300px; //讓按鈕裡面的字超出按鈕範圍之外
overflow:hidden; //將超出範圍的字隱藏
border:none; //把按鈕框隱藏
background:transparent; //把背景變透明
}

但是在IE6下,只要把按鈕背景變透明,就只有按到字的時候,才能按到按鈕,偏偏我又設定把字也隱藏了,所以根本按不到。這個時候有兩種解法

解法一:把原本放input的位子改成放一張透明的gif,在該gif上下超連結
解法二:把<input type=”submit” name=”button” id=”button” value=”送出” />改成<input type=”image” src=”透明圖片gif的路徑” name=”button” id=”button” value=”送出” />

我第二次遇到的時候實際上還碰到另外一個狀況,就是該父元素的bg是用png,在ie6底下用fliter的方式修復。但是造成按鈕無法按,父元素加了position:relative;還是無效。所以後來只好針對ie6用gif圖檔背景,然後配合上述修改才處理掉按鈕在ie6無法按到的問題。

IE6底下div高度小於12px時,依舊顯示為12px的bug

參考文章:http://www.zeali.net/entry/502

IE6雞婆的認為div高度不該小於一行行高。而IE預設字體大小大約為13px,因此當高度小於一個文字的高度時,例如6px,實際上顯示還是會有一行的高度。

解法是設定font-size:0px;,或是乾脆加上overflow:hidden;

此問題只會出現在IE6

a:hover em 在IE6底下失效的問題

在IE6底下,只有a可以使用像hover這樣的偽類。但是如果要用像a:hover em 去指定a內標籤的效果一樣還是會有問題。

解法參考文章:CSS实例:a:hover伪类在IE6下的问题

例如
<a href=”e”>測試<em>斜體</em></a>

然後css只有
a:hover em{color:#ccc;}

那這個效果在IE6不會生效。如果要使其生效,要在他前面加上
a:hover{font-size:13px;}

且a:hover內的屬性,隨便一個都可以。甚至打假的xxx:bbb;也行

IE CSS hack的使用限制

IE css hack使用的特殊符號,如「*」、「_」、「\9」,要建立在IE6、IE7、IE8的表頭都有放<!DOCTYPE html PUBLIC… 宣告的情況下才有用。如果沒放,則IE6-IE8讀CSS的時候「*」、「_」、「\9」(原來拿來作為IE版本過濾的前置符號)在的全部的IE版本都會讀到。

等同於如果宣告拿掉,就沒辦法針對IE6、IE7、IE8做特殊修正,不過當宣告拿掉的時候,IE6~IE8會全部變得跟IE6一樣爛…

所以在製作上反而只要區分IE跟firefox,而不用管IE的版本。不過其實宣告拿掉是比較不好就是。會遇到這個是因為之前有案子被要求把宣告拿掉發現的。

IE底下,垂直對齊 vertical-align 的 CSS 解決方法

一般html寫法

<ul class="photo">
<li><div><img src="img/01.jpg"></div></li>
<li><div><img src="img/02.jpg"></div></li>
<li><div><img src="img/03.jpg"></div></li>
<li><div><img src="img/04.jpg"></div></li>
<li><div><img src="img/05.jpg"></div></li>
<li><div><img src="img/06.jpg"></div></li>
<li><div><img src="img/07.jpg"></div></li>
<li></li>
<li></li>
</ul>

為ie需要修改的html

<ul class="photo">
<li><div><span></span><img src="img/01.jpg"></div></li>
<li><div><span></span><img src="img/02.jpg"></div></li>
<li><div><span></span><img src="img/03.jpg"></div></li>
<li><div><span></span><img src="img/04.jpg"></div></li>
<li><div><span></span><img src="img/05.jpg"></div></li>
<li><div><span></span><img src="img/06.jpg"></div></li>
<li><div><span></span><img src="img/07.jpg"></div></li>
<li></li>
<li></li>
</ul>

 

css的設定請參考此文章

另外一篇也是在講這個,方法不太一樣:图片垂直居中的使用技巧