浪費4個多小時修正因使用透明PNG而帶來的問題

來源:互聯網
上載者:User
 

還是因為《show一下剛做的系統登入介面》,登入框有多個不同等級的alpha值,四周的外邊框透明度為31%,登入框透明度為90%,文字框透明度為75%,產生HTML頁面時,分別用了3個<span>並設定相應的alpha值,簡化後如:

 

<style type="text/css">

.lgfrmbg { position:absolute; top:50%; left:50%; margin:-148px 0 0 -208px; width:417px; height:297px;}

.lgfrm { position:absolute; top:50%; left:50%; margin:-142px 0 0 -202px; width:404px; height:285px;}

.frm {position: relative; top:64px; left:40px; font:12px 宋體; color:#dee4d6;}

.frm input {margin:4px 0 0 4px; border: 1px solid #14277a;filter:alpha(opacity=75);-moz-opacity:0.75;opacity: 0.75;}

</style>

 

<span class="lgfrmbg"><!--外邊框--></span>

<span class="lgfrm"><!--登入框--><span class="frm"><!--文字框--><input type="text" id="edtAccount" /></span></span>

 

很簡單。為了讓介面變得好看,使用了PNG使用<span>的底圖,同時為瞭解決Ie6對透明PNG的bug和跨瀏覽器,使用CSS Hack,樣式表變成了:

 

.lgfrmbg { position:absolute; top:50%; left:50%; margin:-148px 0 0 -208px; width:417px; height:297px;}
html>body .lgfrmbg {background-image: url(/images/lgfrmbg.png);}
*html .lgfrmbg {filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true, sizingMethod=scale, src="/images/lgfrmbg.png") progid:DXImageTransform.Microsoft.Alpha(opacity=31);}

............

 

通過瀏覽器查看效果,介面在IE6和IE7下顯示得很好,三個<span>的位置合并得天衣無縫。唯一的問題無論滑鼠怎麼點就是點不中文字框。原本以為是因為“position:absolute; top:50%; left:50%; margin:-148px 0 0 -208px”這種方式導致瀏覽器不能正確計算文字框位置造成,於是花了4個小時來修改這種定位方法,試遍了能想到和找到方法,均沒有滿意的效果。

最後才想起了有人提過那個CSS Hack會導致元素內部連結無法點擊。一測試果真是它造成的,解決方案很簡單(不是網上推薦使用display:inline代替float),把文字框的<span>獨立出來再稍為修改CSS代碼即可,而且這樣做更符合W3C標準。

修改後代碼如下:
<style type="text/css">

.lgfrmbg { position:absolute; top:50%; left:50%; margin:-148px 0 0 -208px; width:417px; height:297px;}
html>body .lgfrmbg {background-image: url(/images/lgfrmbg.png);}
*html .lgfrmbg {filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true, sizingMethod=scale, src="/images/lgfrmbg.png") progid:DXImageTransform.Microsoft.Alpha(opacity=31);}
.lgfrm { position:absolute; top:50%; left:50%; margin:-142px 0 0 -202px; width:404px; height:285px;}
...............
.frm {position: absolute; top:50%; left:50%; margin:-78px 0 0 -162px; font:12px 宋體; color:#dee4d6;}
.frm input {margin:5px 0 0 5px; border: 1px solid #14277a;
filter:alpha(opacity=75);
-moz-opacity:0.75;
opacity: 0.75;
}

</style>

 

<span class="lgfrmbg"></span>
<span class="lgfrm"></span>
<span class="frm"><input type="text" id="edtAccount" /></span>

 

白白浪費了4小時,冤枉啊!!

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.