2011-11-10 52 views
12

谷歌瀏覽器似乎有一個錯誤,當一個字段集中的內容溢出。谷歌瀏覽器 - 字段集溢出錯誤

下面是一個說明該問題的的jsfiddle:http://jsfiddle.net/Dismissile/Lnm42/

如果你看一下頁面,你會看到,當你有一個容器,一個字段內,並且該容器具有overflow: auto集,該容器具有以水平溢出內容,字段集實際上擴展,而不是使用滾動條:

<fieldset class="parent"> 
    <div class="child"> 
     <div class="grandchild"> 
      asdf 
     </div> 
    </div> 
</fieldset> 

<div class="parent"> 
    <div class="child"> 
     <div class="grandchild"> 
      asdf 
     </div> 
    </div> 
</div> 

CSS:

.parent { 
    border: 1px solid green; 
    padding: 20px; 
    margin: 20px; 
} 

.child { 
    border: 1px solid red; 
    padding: 20px; 
    overflow: auto; 
} 

.grandchild { 
    border: 1px solid #ccc; 
    width: 2000px; 
    padding: 10px; 
} 

有沒有CSS黑客/修補程序我可以使用,以便內容在Chrome中的字段集內正常溢出?

回答

1

使用JavaScript來設定視口的寬度:

我添加了一個名爲fieldset-width到字段集類:

<fieldset class="parent fieldset-width">

然後加入這個JQuery代碼:

$(document).ready(function() { 
    $(".fieldset-width").css("width", $(window).width() - 82); 
}); 

$(window).resize(function() { 
    $(".fieldset-width").css("width", $(window).width() - 82); 
}); 

我唯一的評論是,我想不出一個很好的理由來干擾默認的fieldset功能。我不喜歡「滾動條內的滾動條」開始。對於輸入字段(通常包含哪些字段集),我會特別小心地讓用戶滾動以獲取所有輸入字段。

+0

呀不通過JS字段集功能未亂,一件事你必須在那裏任意82px再加上你的大小調整處理器可以由於不受限制,因此在運行較重DOM的頁面上運行緩慢。使用'min-width:auto'來解決這個問題(Chrome默認使用'-webkit-min-content')來驗證這一點,右鍵單擊fieldset元素並使用「inspect element」並查看「computed style」,然後請注意用戶代理樣式表中定義的「min-width」屬性。 – nothingisnecessary

+0

**更新:**'min-width:auto'不再有效。改爲使用'min-width:inherit'。詳情請參閱我的建議答案。 – nothingisnecessary

1

使用僞字段集(又名<div class="fieldset"></div>)我相信你可以接近。見jsfiddle

試試這個造型:

fieldset,.fieldset { 
    margin: 10px; 
    border: solid 1px black; 
    position: relative; 
    padding: .5em; 
} 

.legend { 
    left: 0.5em; 
    top: -0.6em; 
    color: black; 
    position: absolute; 
    background-color: white; 
    padding: 0 0.25em 0 0.25em; 
} 

這是不太理想的字段集造型需要複製,但對我來說這是唯一的容忍解決我的磨合這個問題,我已經能夠想出來。如上所述,您可能可以將現有的字段集樣式應用於僞字段。

11

UPDATE:

正如最近Chrome瀏覽器微軟Windows更新(V28也許還沒有跟蹤它了嗎?),auto不再是min-width一個有效的價值,而這個解決方案不再作品!

新的解決方案:

使用inherit而不是auto似乎解決這個問題迄今我已經測試的所有情況。 (包括原裝小提琴..詳見the new fiddle fix。)

更新修復:FIELDSET {min-width: inherit; }

原來的答覆:

鉻定義fieldset的默認用戶代理樣式:min-width: -webkit-min-content

因此,當您的可視區域(又稱「屏幕」)小於具有特定寬度的div時,-webkit-min-content會增大字段集以適應內容大小(加上填充等)。

的修復:FIELDSET { min-width: auto; }

我定你的小提琴,try it out

+0

這是迄今爲止最好的答案。 –

+0

這非常有幫助,謝謝!只是想添加,如果你想切斷字段集中的內容,你可以添加'overflow:auto;'但是這可能不是其他所有情況下最好的方法。 – renfredxh

0

您可以添加style =「display:table-column;」作爲解決方案的字段集。