請先看兩個佈局:html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> <style> #left { margin-right: 100px; } #right { width: 100px; float: right; } </style> </head> <body> <body> <div id="parent"> <div id="right" style='height: 100px;background-color: #0f0;'>右列定寬</div> <div id="left" style='height: 100px;background-color: #f00;'>左列自適應</div> </div> </body> </body> </html>
效果以下:佈局
這是一個普通的一欄固定,一欄浮動的佈局。沒有什麼特別的。ui
下一個佈局時這樣的:code
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> <style> #left { margin-right: 100px; } #right { width: 100px; float: right; } </style> </head> <body> <body> <div id="parent"> <div id="left" style='height: 100px;background-color: #f00;'>左列自適應</div> <div id="right" style='height: 100px;background-color: #0f0;'>右列定寬</div> </div> </body> </body> </html>
這個佈局的style標籤內容和上一個同樣,可是效果不同:htm
能夠說佈局已經失效了。it
這個兩個佈局的不一樣在於id爲left和right的這兩個元素定義的順序不一樣。若是先定義固定的right元素,再定義浮動的left元素,那麼佈局是成功的,就像第一張圖那樣。但若是順序反過來,就會像上圖那樣。class
我猜測這可能和渲染的機制有關,先生成固定寬度的元素,才能讓後定義的浮動元素來「適應」它。渲染