分析由瀏覽器對input框默認(rèn)寬度的不同所導(dǎo)致的問題

來源:最近后端同事讓我?guī)退薷臉邮降募嫒菪?,chrome與firefox下顯示的不同(只兼容這兩個(gè)瀏覽器),究其原因,應(yīng)該是兩個(gè)瀏覽器在input(不說類型的話,默認(rèn)為text,下同)默認(rèn)寬度不一致導(dǎo)致的。

  • 先看效果
    • chrome下的顯示(區(qū)塊寬度為1673px)


      chrome父元素.png
    • firefox下的顯示(區(qū)塊寬度為978px)


      火狐父元素.png
  • 父元素設(shè)置display:inline-block后,其寬度由內(nèi)容(子元素)決定;子元素設(shè)置百分比 ,寬度由父元素確定,這樣就導(dǎo)致了父元素的寬度由子元素決定,而子元素的寬度由父元素決定,說的簡單點(diǎn)
    • 父元素(inline-block)的寬度 <= 子元素寬度
    • 子元素的寬度設(shè)置為百分比 <= 父元素的寬度
    • 通過在瀏覽器測試,先不設(shè)置子元素寬度百分比的情況
      • 代碼
           <input type="text">
      </div>```
      
      * chrome展示效果
      
chrome下未定義子元素寬度的展示.png

* 子元素input的寬度


chrome下未定義子元素寬度.png

* 父元素div的寬度


chrome下父元素寬度.png
  • 設(shè)置子元素寬度百分比
    • 先看代碼
       <input type="text" style="width: 50%;background: black">
    </div>```
    * chrome的展示效果
    
chrome下的展示效果.png

* 子元素input的寬度


chrome下子元素的寬度.png

* 父元素div的寬度


chrome下設(shè)置子元素寬度百分比的父元素寬度.png

* 由此可見,無論子元素是否設(shè)置寬度百分比,都不影響父元素的寬度。
  • 根據(jù)子元素?zé)o論是否設(shè)置寬度百分比而不影響父元素的寬度(inline-block,寬度由內(nèi)容決定),可以得出如下結(jié)論:

    • 先計(jì)算父元素的寬度,不考慮子元素寬度的百分比,這樣父元素的寬度就通過子元素給撐開了;由于不同瀏覽器默認(rèn)的Input框的寬度不一樣,就導(dǎo)致了父元素的寬度不一樣
    • 然后再根據(jù)父元素的寬度來及其子元素的百分比來設(shè)置子元素的寬度。
  • 分析問題來源的原因

    • 其父元素設(shè)置了display:inline-block,寬度由內(nèi)容決定
      • 內(nèi)容中,由于input框沒有定義寬度,所以顯示其默認(rèn)的寬度(在火狐與谷歌中是不一致的)=> 父元素的寬度不一致
    • 子元素設(shè)置了寬度百分比,由其父元素的寬度決定 => 子元素的寬度不一致
  • 各個(gè)瀏覽器下對input框的默認(rèn)寬度

    • 谷歌


      chrome下input的默認(rèn)寬度.png
    • 火狐


      firefox下input默認(rèn)寬度.png
    • IE


      IE10下input的默認(rèn)寬度.png
  • 解決方案

    • 重置input框的寬度為數(shù)值,不要用瀏覽器默認(rèn)的寬度,否則可能會導(dǎo)致在各個(gè)瀏覽器的表現(xiàn)不一致
    • 重置input的寬度為百分比,而其父元素的寬度由內(nèi)容決定(比如display:inline-block),就會出現(xiàn)本例中的情況,此時(shí)可以定義父元素的寬度,不讓其寬度由內(nèi)容決定
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 14,108評論 1 92
  • 簡介網(wǎng)絡(luò)瀏覽器很可能是使用最廣的軟件。在這篇入門文章中,我將會介紹它們的幕后工作原理。我們會了解到,從您在地址欄輸...
    wengjq閱讀 2,304評論 2 15
  • ?前端面試題匯總 一、HTML和CSS 21 你做的頁面在哪些流覽器測試過?這些瀏覽器的內(nèi)核分別是什么? ...
    Simon_s閱讀 2,365評論 0 8
  • 1標(biāo)準(zhǔn)的CSS的盒子模型?與低版本IE的盒子模型有什么不同的? CSS盒子模型:由四個(gè)屬性組成的外邊距(margi...
    秦小婕閱讀 1,293評論 0 1
  • 暮矮空晴閱讀 306評論 1 3

友情鏈接更多精彩內(nèi)容