CSS Overflow屬性詳解

來源:互聯網
上載者:User

檢索或設定當對象的內容超過其指定高度及寬度時如何管理內容。
所有對象的預設值是 visible ,除了 textarea 對象和 body 對象的預設值是 auto 。設定 textarea 對象此屬性值為 hidden 將隱藏其捲軸。

overflow屬性有四個值:

visible (預設), hidden, scroll, 和auto

同樣有兩個overflow的姐妹屬性overflow-y 和overflow-x,它們很少被採用。

1、Visible

如果你不設定overflow屬性,則預設的overflow屬性值就是visible。所以一般而言,並沒有什麼理由特別的設定overflow的屬性為visible除非你想覆蓋它在其它地方被設定的值。

這裡需要記住的重要的事情是,儘管盒子外面的內容是可見的,內容並不會影響頁面的工作流程。比如:

一般來說,你至少不用為裡面的內容為文字的盒子設定固定的高度,這樣就不會遇到這種情況了。

2、Hidden

預設值visible的相反的值就是hidden。它會將所有超出盒子的所有內容都給隱藏掉。

這對應付使用動態內容,而且可能會由於內容溢出而引起一些布局上的問題的確很有用。儘管如此,請記住用此方法隱藏的內容將徹底的看不到(除非去查看原始碼)。 比如有的使用者佈建他們的瀏覽器的預設字型比你預期的要大些,你會將一些文字推到盒子的外面然後完全的隱藏之……

3、Scroll

設定一個盒子的overflow值為scroll將會隱藏掉渲染到盒子之外的內容,但是它將會提供一個捲軸在盒子內部滾動,從而可以查看剩下的內容。

值得注意的是,使用scroll將會同時產生水平和垂直兩個捲軸,就算內容只需要其中一個。

4、Auto

overflow的auto值很像scroll,它唯一解決的是在你不需要的時候也會出現捲軸的問題。

清除浮動

設定overflow的一個更流行的用處是,說也奇怪,清除浮動。設定overflow並不會在該元素上清除浮動,它將清除自己(self-clear)。意思就是,應用了overflow(autohidden)的元素,將會擴充到它需要的大小以包圍它裡面的浮動的子項目(而不是疊了起來(collapsing)),假設未定義高度。就像這樣:

這裡有更多關於浮動的細節文章關於浮動的一切。

跨瀏覽器的煩惱

就像CSS中的很多東東,overflow有很多的跨瀏覽器的蹊蹺的事情。比如這些:

捲軸在盒子裡面還是外面?

firefox將其放到盒子外面,而IE則將其放到裡面。我認為只有IE是對的(它應該在裡面的)。

看清楚這個明顯的不同。

IE 8 擴充盒子的bug

IE8有很多有趣的新bug,包括一些非常嚴重的隱藏在網頁中的。這裡有更多的關於IE8的overflow的bug的介紹。

破壞浮動布局

IE 6, 7 和 8都會扭曲預設的overflow visible值並將水平的擴充一個盒子一匹配內容(比片)。 這對使用浮動列布局的結構非常痛苦,而且單個擴充的列就能夠將其它列擠下去並使布局亂掉!

捲軸能用CSS控制嗎?

IE過去在較老的版本中允許這樣,但是之後就收斂了。比如許多表單元素,捲軸就不允許使用CSS控制。我在它是否是件好事情上沒有任何具體的意 見,但是我可以說,在網站的所有內容上使用捲軸是很醜陋的和俗氣的。如果你需要一個美化的捲軸,你或許需要尋找javascript來類比。

IE 技巧

無論是否需要,IE都會一直顯示一個垂直的捲軸,這對預防水平跳動是有些作用的,但並非總是可取的。要想在IE中移除它,可以在body元素中設定overflow為auto。

(示範:本文的示範頁面,可以查看這個頁面。)
相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.