本篇不分析常見的佈局方式,而是從同級元素之間的位置關係和父子元素之間的位置關係這兩個方面來示例,理解了這兩個點,就能夠實現任何類型的佈局了。css
<html>
<head>
<title></title>
<script> function buttonHandler() { alert('Hello') } </script>
</head>
<body>
<button onclick="buttonHandler()">
按鈕
</button>
</body>
</html>
複製代碼
又回到最開始的按鈕例子,咱們先忽略head標籤及裏面的內容。影響按鈕展現的節點有 html -> body -> buttonhtml
元素的定位類型是由position這個屬性來決定的,它可能有五種類型:瀏覽器
<html>
<head>
<title></title>
<style> /* 若是但願按鈕相對於body進行絕對定位,就須要講body的定位類型設置爲非static類型 */ body { position: relative; } .button { position: absolute; left: 50px; top: 100px; } </style>
<script> function buttonHandler() { alert('Hello') } </script>
</head>
<body>
<button class="button" onclick="buttonHandler()">
按鈕1
</button>
</body>
</html>
複製代碼
<html>
<head>
<title></title>
<style> .button { position: relative; left: 50px; top: 100px; } </style>
<script> function buttonHandler() { alert('Hello') } </script>
</head>
<body>
<button class="button" onclick="buttonHandler()">
按鈕1
</button>
</body>
</html>
複製代碼
在默認static的狀況下,left, top這些位置屬性值是無效的。佈局
同級元素直接如何排列,除了能夠經過定位進行控制,默認受它的盒模型的類型影響。盒模型的類型是又display這個屬性規定的。它有不少類型,此處解釋最經常使用的幾個:spa
將a標籤的display屬性設置爲block的時候,它就具備了塊元素的特色code
<html>
<head>
<title></title>
<script> function buttonHandler() { alert('Hello') } </script>
</head>
<body>
<button class="button" onclick="buttonHandler()">
按鈕1
</button>
<button class="button" onclick="buttonHandler()">
按鈕2
</button>
</body>
</html>
複製代碼
<html>
<head>
<title></title>
<style> .button { display: block; } </style>
<script> function buttonHandler() { alert(‘Hello’) } </script>
</head>
<body>
<button class=「button」 onclick=「buttonHandler()」>
按鈕1
</button>
<button class=「button」 onclick=「buttonHandler()」>
按鈕2
</button>
</body>
</html>
複製代碼
它們會擁有塊元素的特色,自動換行。htm
<html>
<head>
<title></title>
<style> .button { display: block; /* 設置向左浮動,塊元素也能夠排列在一行了 */ float: left; } </style>
<script> function buttonHandler() { alert('Hello') } </script>
</head>
<body>
<button class="button" onclick="buttonHandler()">
按鈕1
</button>
<button class="button" onclick="buttonHandler()">
按鈕2
</button>
</body>
</html>
複製代碼
塊元素設置了浮動屬性以後,會帶來一系列的特性,還須要看文檔和嘗試。繼承
<html>
<head>
<title></title>
<style> .button { /* 設置向右的邊距,兩個元素之間增長一個距離 */ margin-right: 20px; } .button2 { display: block; /* 設置向上的邊距,兩個元素之間增長一個距離 */ margin-top: 20px; } </style>
<script> function buttonHandler() { alert('Hello') } </script>
</head>
<body>
<button class="button" onclick="buttonHandler()">
按鈕1
</button>
<button class="button" onclick="buttonHandler()">
按鈕2
</button>
<button class="button button2" onclick="buttonHandler()">
按鈕3
</button>
</body>
</html>
複製代碼
除了外邊距還有內邊距,這裏須要瞭解一下什麼是盒模型。ip
瞭解瞭如何控制父子元素之間以及同級元素之間的位置關係,已經能夠處理各種佈局需求了。本篇例子主要幫助理解CSS是如何佈局的,CSS佈局的內容遠不止例子裏提到的這些,不一樣場景下的佈局方式都有各自的最佳實踐,後續的例子裏也會慢慢補充。文檔