如何實現IE6下塊級元素的內容自動收縮
來源:程序員人生 發布時間:2013-11-12 08:09:04 閱讀次數:2751次
近期在做提示層組件的開發,遇到了一個IE6常見的bug....想出了幾個解決的辦法,挺有意思的,這里分享給大家。
由于IE6瀏覽器中,display:inline-block只能觸發IE的haslayout屬性使得元素具有布局屬性,當對div元素使用display:inline-block,div元素仍然為塊狀布局而占據一行。
那么如何在IE6下使得塊級元素的內容自動收縮呢?開發圓角小提示層模塊,讓它來解答這個問題。

結構和樣式:
/**
* @name : prompt
* @explain : 圓角小提示層
* @type : 基類
* @dependent : 無
* @author : peunzhang
* @version : 2012.9.6
* @html :
<!-- 圓角小提示層 [[ -->
<div class="prompt">
<span class="ico-layer-arrow-up"><!-- 上指示圖標 --></span>
<a href="#" class="ico-close-gold" title="關閉">關閉</a>
<div class="prompt-main">
<div class="prompt-cnt"><a href="#">這里輸入內容</a></div>
</div>
</div>
<!-- 圓角小提示層 ]] -->
*/
.ico-layer-arrow-up,.prompt-main,.prompt-cnt,.ico-close-gold{display:inline-block;background:url(https://img.tenpay.com/res/wallet_v2/global/img/global.png?v=20120913) no-repeat;_background:url(https://img.tenpay.com/res/wallet_v2/global/img/global_png8.png?v=20120913) no-repeat;vertical-align:middle;overflow:hidden;}
.prompt{position:absolute;padding:5px;font-size:12px;line-height:12px;font-family:5B8B4F53;}
.prompt .ico-layer-arrow-up{position:absolute;top:0;left:12px;background-position:-41px -27px;}
.prompt .prompt-main{padding-left:7px;height:20px;background-position:-150px -501px;}
.prompt .prompt-cnt{padding-right:18px;height:20px;line-height:20px;line-height:21px9;white-space:nowrap;vertical-align:top;background-position:right -501px;color:#7C6103;white-space:nowrap;}
.prompt .prompt-cnt a{color:#7C6103;}
.prompt .prompt-cnt a:hover{color:#0099FF;}
.prompt .ico-close-gold{position:absolute;top:12px;right:12px;}
雪碧圖的一角:

打開IE6瀏覽器,展現如下,寬度并不能自動收縮(這里瀏覽器窗口寬度被縮小到400px)

經過不斷的測試,使用以下3種方法可以解決該bug
解決辦法1:把span元素替換div元素,span元素設置display:inline-block呈行塊布局,具有自動收縮的效果
<div class="prompt">
<span class="ico-layer-arrow-up"><!-- 上指示圖標 --></span>
<a href="#" class="ico-close-gold" title="關閉">關閉</a>
<span class="prompt-main">
<span class="prompt-cnt"><a href="#">這里輸入內容</a></span>
</span>
</div>
解決辦法2:針對IE6瀏覽器,給最外層的div元素設置寬度:_width:1%,使得最外層的寬度自動收縮
解決辦法3:針對IE6瀏覽器,觸發塊級元素的haslayout屬性,并設置display:inline可使得塊級屬性呈現行塊布局模式,詳細可看《display:inline-block下的IE元素》
.prompt-main,.prompt-cnt{_zoom:1;_display:inline;}
模塊開發完成,實現了內容自動收縮,根據實際的場景而選擇最佳的使用方法,這里采用了第一種方案,優點是不寫任何hack,缺點是可擴張性不佳。
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈