2012-01-30 33 views
12

同胞土人。你如何解釋CSS定位給人類?

我,身心比較健全,特此放棄自己理解CSS定位。

有關CSS的在線資源非常詳細,可以解釋「color」屬性可以讓你設置東西的「顏色」。 Unmöglish。

然後,如果你想放的東西別的東西(瘋狂的想法,對吧?)左,所有你所要做的就是將其設置爲浮動到提供您設置的「相對」左標誌在它的父塊必須有一個祖父節點與「絕對」標誌被設置爲真,以便它的位置相對於其他容器可能包含或不包含任何東西,有位置,大小或不,取決於瀏覽器,其他東西的大小,以及可能的月相。 (CSS專家建議不要認真對待上一段,我敢肯定有人會指出我的咆哮是無效的,或符合W3C標準,並且它只適用於瑞典語測試版IE6)

開玩笑,我正在尋找任何解釋CSS背後佈局背後瘋狂的根源的資源。從本質上講,這是一些CSS將Crockford的文章寫入Javascript的東西。

本着這種精神,讓我指出我並不是在尋找像css庫或者藍圖這樣的網格框架,或者像CSS這樣的CSS擴展語言。我一直在使用這些來緩解我的痛苦,但是我擔心這會像告訴某人「僅僅使用jQuery」,當他們說他們無法將自己的思想包裝在JS的原型繼承中時。

如果你能指出我是http://shop.oreilly.com/product/9781565926226.do,我想我會認爲自己註定了。

在此先感謝。編輯:我可能不應該談論「定位」(感謝所有誰再次解釋說'位置:相對'並不意味着'相對於你的容器',而'位置:絕對'是指相對於我從來沒有如此接近於從SO問題中創建monty python腳本)。我認爲我的意思是一般的佈局(定位+浮動+基線+將東西放在一條直線上所需的所有廢話)。

也請原諒誇張的口氣,我試圖把一些幽默陷入沮喪。如果可以,我會用禪宗技術冷靜下來,但這隻能讓我想起 this

+1

閱讀[CSS 2.1規範](http://www.w3.org/TR/CSS2/)(第9章)。掌握一些東西需要時間。你一直在嘗試多久? – 2012-01-30 23:16:30

+0

我感到你的痛苦。我們將使用數十年的另一個egghead規範:) – drogon 2012-01-30 23:17:39

+0

[這是關於內容](http://stackoverflow.com/a/4903697/497418)和[規範](http://www.w3。 org/TR/CSS2/visuren.html)告訴你所有事情應該如何工作。 – zzzzBov 2012-01-30 23:17:39

回答

3

看來大多數人還沒有完全理解你的帖子的要點。我會爲你分解它:

CSS位置很複雜,因爲它是由許多不同人羣長期設計,各種版本和遺留兼容性問題。

第一次嘗試是保持簡單。只需提供基本的樣式。顏色,字體,大小,magins等等。他們增加了浮動,以提供基本的「剪切」功能,其中文字環繞圖像。 Float並不打算用作當前使用的主要佈局功能。

但人們對此並不滿意。他們想要各個欄目,網格,盒子,陰影和圓角以及其他各種各樣的東西。所有嘗試保持與以前的錯誤實現的兼容性。

HTML受到兩個對立陣營的衝擊。一方希望簡單(相比於現有的SGML)解決方案,另一方想要豐富的應用程序。所以CSS有時候會有這種類似於schitzophrenic的性質。

更重要的是,功能擴展到做他們最初不打算做的事情。這使得現有的實現都很麻煩。

那麼這對於你來說意味着什麼,一個純粹的人?這意味着你堅持與所有人洗衣服。這意味着你必須處理十年前的執行錯誤。這意味着你必須爲不同的瀏覽器編寫不同的CSS,或者你必須將自己限制在一個通用的「良好支持」特性集中,這意味着你不能充分利用最新的CSS能做的事情(你也不能使用這些功能旨在爲標準增添一些理智)。

在我看來,有一個「純粹的人」到undrstand CSS比這再好的書:

http://www.amazon.com/Eric-Meyer-CSS-Mastering-Language/dp/073571245X

很簡單,簡潔,併爲您提供了一個光滑的「易現實世界的例子眼睛「格式,缺乏大部分討厭的技術術語。它已經10歲了,並沒有涵蓋任何新的東西,但它應該允許你「琢磨」工作的方式。

0

你檢查出這個偉大的書的休息嗎? http://shop.oreilly.com/product/9781565926226.do

只是在開玩笑。

我不認爲你需要整個資源專門討論這個問題。一旦點擊它就相當簡單。

認爲CSS定位是一種將物品相對於它們的位置(無論它們落在頁面上)還是從X/Y座標絕對定位的方式。

你可以定位一些相對的東西,它會向上或向右移動一個正數,或者向下移動,並向左移動一個負數。

如果你絕對放置一個元素,它將從佈局中完全移除(其他元素不會將其識別爲在屏幕上),然後執行以下兩項操作之一。它可以是:

1 - 從頁面左上角開始自己定位,然後按照前面提到的向上/向下/向左/右取決於數字是否爲+/-。

2-如果父元素位於absoluterelative它將自己從父元素的左上角「角落」定位,而不是瀏覽器窗口。

z-index想象成photoshop中的圖層。 0代表底部(而更新的瀏覽器認識到負Z指更有趣)。而最後的100(更新的瀏覽器識別無限數量的數字)。 z-index只適用於位置:relativeabsolute。因此,如果我定位絕對的東西,並且恰好落在另一個元素的下面,我可以給它z-index: 100,它將自己置於頂部。請記住,元素本身是一個矩形,並且元素的高度/寬度可能會阻止您單擊下面的元素。你不能用純CSS做角度,圓圈等。

這有幫助嗎?

+0

再次,當我真正指「佈局」時,我可能通過談論定位來錯誤地解釋這個問題,例如「你爲了小貓的緣故把這件東西放在這個壓裂物的右邊!」。我提到這本書是因爲它已經無法裝飾我的書桌几年了... – phtrivier 2012-01-31 09:30:04

3

定位是很容易理解:

relative定位 - 爲您通常會正好渲染頁面。一旦完成,relative定位的任何東西都會被移動,相對於最初的位置。沒有其他影響。

absolute定位 - 從頁面流中刪除項目。其他的東西使得它們不在那裏,即它們填充了這個物品佔據的空間。他們現在定位爲絕對到最接近的元素與position: relativeposition: absolute設置。在很多情況下,這意味着它們被絕對定位到body標籤。

然後,您在CSS中使用toprightbottomleft進行定位。

如果事情有absolute定位組:

  • 位置相比頂部使用topleft在頁面左側的。當使用bottomright時,相對於頁面的右下定位。

  • 其寬度/高度可以與top/bottomleft/right,的組合來控制的。例如:top: 100px; bottom: 100px將使即其父身高的100% - 200px(除非指定的高度過於在這種情況下topheight是使用的項目與bottom被忽略)。

+0

感謝您的解釋,雖然這不包括浮動(這似乎是強制性的,以解決我的難以置信的複雜用例'放東西bext彼此')。另外,當你寫出「它的寬度/高度可以通過頂部/底部或左/右的組合來控制」時,你是否仍然意識到它聽起來有多荒謬(儘管技術上可能正確?) – phtrivier 2012-01-31 09:26:02

+0

寬度/高度的東西不是荒謬的是,這是一種不同的做事方式。如果你有一個靈活大小的父級(例如窗口),並且想要例如一個佔用90%寬度的頁腳欄,你可以寫入'left:5%;右:5%; bottom:0px;高度:50px;'。如果你手動指定'width',你需要JS來做同樣的事情。我在每一個可能的情況下都避免使用浮標,並且總是建議其他人也這樣做。 – 2012-01-31 18:39:47

+0

等等,有沒有一種更清晰的方式來讓一堆div(任意寬度,未知寬度)坐在另一個div的右邊(如,你知道,「一行」),而不是「全部浮動並添加兩端都清楚'?我的印象是,大多數的網格框架都在某種程度上這樣做...... – phtrivier 2012-02-01 10:21:29