2011-08-15 24 views
17

IE7忽略我的最小寬度設置。我讀過IE7支持最小寬度,只要你處於標準模式(不是怪癖)。我指定CSS - 如何使IE7尊重最小寬度

<!DOCTYPE html> 

作爲我的標題。標記是valid.我仍然無法讓IE7尊重min-width。我該怎麼辦?


Sample Code 

    <table class="ProcedureTable"> 
     <thead> 
      <tr> 
       <th>column data</th> 
       <th>column data</th>   
       <th>column data</th> 
       <th>column data</th> 
       <th>column data</th> 
      </tr> 
     </thead> 
        <tr class="PadColumns"> 
         <td class="ExpandName"> 
          column data 
         </td> 

CSS

.ExpandName 
{ 
    min-width:25em; 
} 
+2

你可以發佈一些HTML/CSS? – leopic

回答

11

是啊..我就遇到了這個前一陣子

退房此鏈接

http://blog.throbs.net/2006/11/17/IE7+And+MinWidth+.aspx

本質...你需要我nclude這個墊片在JS手動破解規則

下面是我處理壽

只要打電話給人體機能的onload

/* 
author: Rob Eberhardt 
desc: fix MinWidth for IE6 & IE7 
params: none 
returns: nothing 
notes: cannot yet fix childless elements like INPUT or SELECT 
history: 
    2006-11-20 revised for standards-mode compatibility 
    2006-11-17 first version 
*/ 
function fixMinWidthForIE(){ 
    try{ 
     if(!document.body.currentStyle){return} //IE only 
    }catch(e){return} 
    var elems=document.getElementsByTagName("*"); 
    for(e=0; e<elems.length; e++){ 
     var eCurStyle = elems[e].currentStyle; 
     var l_minWidth = (eCurStyle.minWidth) ? eCurStyle.minWidth : eCurStyle.getAttribute("min-width"); //IE7 : IE6 
     if(l_minWidth && l_minWidth != 'auto'){ 
     var shim = document.createElement("DIV"); 
     shim.style.cssText = 'margin:0 !important; padding:0 !important; border:0 !important; line-height:0 !important; height:0 !important; BACKGROUND:RED;'; 
     shim.style.width = l_minWidth; 
     shim.appendChild(document.createElement("&nbsp;")); 
     if(elems[e].canHaveChildren){ 
      elems[e].appendChild(shim); 
     }else{ 
      //?? 
     } 
     } 
    } 
} 

還有另一種方式也可以這樣做

http://perishablepress.com/press/2007/01/16/maximum-and-minimum-height-and-width-in-internet-explorer/

* html div#division { 
    height: expression(this.scrollHeight < 334 ? "333px" : "auto"); /* sets min-height for IE */ 
} 
+1

+1第一種方法有效。第二個我無法弄清楚如何將其轉化爲我的需求,沒有奏效。我不明白語法。我很好奇爲什麼這麼多人說IE7支持標準模式下的最小寬度,如果事實上它並不需要這些「黑客」。 –

+0

是的,它是奇怪的..第二種方法通過使用IE特定的標記,實際上在CSS中運行JS ...有點酷,當你想起它 – samccone

+5

@ P.Brian.Mackey澄清,它實際上。你只是遇到了一個錯誤,IE7並不尊重'​​'上的'min-width'。第二種方法不起作用,因爲'* html'選擇器只針對IE6。 – duri

2

我是一個新手,所以顯然我不能評論@ samccone上面的第一個答案。只是想補充它的工作,但會產生在IE9的錯誤,他正在創造非打破空間元素的方法,即..

shim.appendChild(document.createElement("&nbsp;")); 

這條線可以替換...

shim.innerHTML = "&nbsp;"; 

一切都很好。希望這可以幫助別人。

0

標記有效。

不,<!DOCTYPE html>就那個時代而言是無效的。據我所知,只有HTML5纔有效,IE7當然不知道(IE9有點意識到,不知道8)。在我正在處理的頁面上,即使在body標籤上,min-width也能正常工作。但是,我們使用這個特定頁面的XHTML:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 

此外,其他的事情可能需要IE出的標準模式,並把它納入特殊模式,所以即使是正確的DOCTYPE可能無法爲您解決問題。 因此,如果您必須使用HTML5並與IE7兼容,則必須使用behaviour CSS屬性,條件註釋和/或特定於IE7的腳本。