最近重新審視了一下塊集元素和內聯元素,不是混淆,而是重新想了一下新的東西,有時候在我們進行重構的時候,偶爾會為了實際需要而將內聯元素強制顯示為塊集元素,在一般情況下,這個是不會出問題的,而且可以很輕松的通過標准,但是在某一些情況下,雖然驗證工具可以放過我們,但是在IE6下面會出現解析不正確的問題,下面就簡單跟大家分享一下這個問題。
有時候由於需要文字和圖片同時獲取到點擊態,或者需要實現一些高難度的效果,就需要多標簽來寫結構,可能的結構會如下所示:
<div class="block">
<a href="http://www.webjx.com"><span><img src="/School/UploadFiles_7810/201105/20110527122336987.png" alt="Raina" /></span></a>
</div>
在沒有被賦予強大的CSS的時候,是可以正常點擊的,但是當賦予需要的CSS的時候,在IE8一下就會出現圖片區域點擊不到的情況:
.block span{float:left;}
如果將span標簽塊集化:
.block span{float:left;dispaly:block;width:100px;height:100px;}
最終的結果依然不是不能點擊到,但是圖片區域以為的內容確可以正常點擊。
而對於此,我的理解是這樣的:
因為a標簽本身就是一個內聯元素標簽,內聯標簽內正常情況只允許放置內聯元素,放置塊集元素本身語法就有問題,雖然表面上放置的span標簽,但是我們又將其強制塊集化,在某些浏覽器下還是會解析錯誤,比如說IE6/7,所以這裡針對鏈接的這種情況,出現的問題就是圖片區域無法點擊。
針對這種問題的解決方法:
保證在a標簽中不要放置塊集元素,或者強制塊集元素,如果需要解決一些特殊效果,可以采取將這個強制元素跟a內置的img標簽同級放置,這樣也可以避免圖片點擊不到問題。