2010-03-23 40 views
2

我在FireFox 3.6版本中遇到了文本框大小問題。 <輸入類= 「DAT」 類型= 「文本」 名稱= 「rejection_reason」 大小= 「51」 最大長度= 「70」 平變化= 「on_change();」>IE 6和FireFox 3.6中的文本框大小不同3.6

樣式是: .dat { font-family:verdana,arial,helvetica; font-size:8pt; font-weight:bold; text-align:left; vertical-align:middle; background-color:White; }

Fire Fox中的文本框大小比IE6小一點。

不知道爲什麼IE6和FireFox顯示diff大小的文本框。

回答

2

嘗試在你的CSS中指定寬度。如果仍然有問題,您可以在寬度單詞的前面添加一個星號作爲第二個條目,它將僅適用於IE6。

.dat 
{ 
    width: 100px; 
    *width: 105px; -- or whatever makes it look correct 
} 

編輯:感謝您對特殊字符的更新。

+2

僅適用於IE瀏覽器,CSS hack是*,所以你會寫寬度:100px; * width:105px;確保IE Hack是在實際樣式之後。 – Kieron

+0

我的應用程序中有很多測試框,並且每個文本框的大小都是硬編碼的。 我試圖找出一些公式,它可以給我在px或em中用size屬性定義的等效大小,以便我可以使用css。 – Anurag

2

你還沒有指定它的寬度只是你想要它通過size屬性採取51個字符。我建議刪除Size =「51」屬性並添加寬度樣式:666px;

編輯:在您的評論 首先,因爲你可以不意味着你應該。解決這個問題的方法是將所有的輸入類型=「文本」>改爲使用css類或css寬度來定義它們的寬度。因爲指定這隻效果與尺寸輸入具有大小屬性​​

jQuery(       // on Document load 
    function($){     // run this function 
    $('input[type=text][size]') // find all input type=text with a size attr 
      .each(     // for each element found 
     function(index, Element){ // run this function 
      var size = $(this).attr('size'); // get size attrubte value 
      $(this).width((size * 0.6)+"em"); // set the css width property to 
     });         // a nasty huristic 
    } 
); 

現在,當你觸摸每一個頁面,您可以刪除

但是以下jQuery將寬度樣式添加到每個輸入類型=文本大小attr並將其替換爲Css大小,所以最終您不需要此腳本。

+0

我的應用程序中有很多測試框,並且每個文本框的大小都是硬編碼的。我試圖找出一些公式,它可以給我在px或em中用size屬性定義的等效大小,以便我可以使用css。 – Anurag

1

@size屬性給出了字符大小。但是,除非使用等寬字體,否則字符本身的大小不是明確定義的。另外,不同的渲染引擎可以對字符間距和/或字距使用不同的規則。所以,最後,這個屬性不過是對瀏覽器的模糊提示。

你試過類似style = "width:51em;"的東西嗎?沒有測試過,但寬度屬性得到了很好的支持,所以我希望這可以工作。如果您想要更精確的尺寸,您還可以使用絕對(像素)單位。

希望這會有所幫助。

+0

我不認爲你想這樣做,而不是除了。在這種情況下,我對尺寸屬性的理解是,它根本不適用於文本框的大小,而只是輸入接受的字符數。我認爲它完全獨立於文本框的物理大小。來自W3Schools(http://www.w3schools.com/tags/att_input_size.asp): 對於,size屬性定義了字符數應該是可見的。對於所有其他輸入類型,大小以像素爲單位定義輸入字段的寬度。' – Todd

+0

每種方法(@size與CSS寬度)用不同的術語定義框的大小。既然它們都定義了相同的事物,那麼其中只有一個實際上可以生效,而忽略另一個。使用這兩者將留給瀏覽器來決定哪一個優先,這就是爲什麼我建議它作爲替代品。如果CSS優先於所有相關的瀏覽器,那麼這兩種定義都沒有壞處,但仍然沒有收益。 –

+0

感謝您的回覆! 我在我的應用程序中有很多測試框,並且每個文本框的大小都是硬編碼的。我試圖找出一些公式,它可以給我在px或em中用size屬性定義的等效大小,以便我可以使用css。 – Anurag

2

有了更全面的解釋,我只需要給一個經理;

IE6建於2000年左右,當時忽略了幾個重要的網絡標準。 IE6有點「吸取教訓」; IE7更好地遵循這些標準,IE8更好。

Firefox是圍繞Netscape/Mozilla建立的,重要的是,他們儘可能遵循公共標準。 Firefox在很大程度上表現得像Safari,Chrome,Opera以及那裏的小型市場共享瀏覽器。

商人問: 那麼,爲什麼支持標準,而不是IE,這是塊的大孩子?幾乎我們所有的客戶都使用IE!

回答: 因爲IE也在慢慢向標準邁進。如果我們支持Firefox,IE8很容易,我們也可能獲得IE7以及幾乎沒有變化。 IE6是美中不足之處。

如果我們支持IE6--原始提案 - 那麼IE7是一種特殊情況,IE8是另一種特例,Firefox是一種特例,依此類推。

如果我們可以鼓勵用戶離開IE6,這是我們最好的情況。我相信當Server 2003 SP1離開支持時,微軟正式結束對IE6的所有支持 - 包括安全補丁,April 2009Google已完全停止支持IE6,例如,禮貌地讓用戶知道他們需要升級「以獲得完整的網站體驗」。像IE6NoMore這樣的網站爲運行IE6的用戶提供了一個漂亮的CSS彈出窗口,爲他們提供了一些升級選項。但是與此同時,由於客戶確實使用它,因此IE6將留在這裏,並且它最容易 - 也是最易維護的 - 可以根據標準進行構建,並在IE6完成之前切換回IE6。