CSS

1. 布局模型与盒模型一样都是 CSS 最基本、 最核心的概念。

2. 但布局模型是建立在盒模型基础之上,又不同于我们常说的 CSS 布局样式或 CSS 布局模板。

3. 布局模型是本质,CSS 布局模板是外在的表现形式。


在网页中,元素有三种布局模型:

  1. 流动模型(Flow)
  2. 浮动模型 (Float)
  3. 层模型(Layer)

4. 流动模型

4.1 流动是默认的网页布局模式。
4.2 块状元素从上而下按顺序垂直分布

4.3 内联元素从左到右水平分布显示。

5. 浮动模型

块状元素独占一行,怎么让两个块状元素并排显示?解决方案为设置元素浮动(设置float)。

例子1. 块状元素显示在同一行,同左或者同右。

<!DOCTYPE HTML>
<html>

<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <title>浮动模型</title>
  <style type="text/css">
    div {
      border: 2px red solid;
       200px;
      height: 400px;
      float: left;
    /* float: right; */
    }
  </style>
</head>

<body>
  <div id="div1">栏目1</div>
  <div id="div2">栏目2</div>
</body>

</html>

例子2. 块状元素显示在同一行,一左一右。

div{
    200px;
    height:200px;
    border:2px red solid;
}
#div1{float:left;}
#div2{float:right;}

6. 层模型

层模型有三种形式:

6.1 层模型-绝对定位(position: absolute)

这条语句的作用将元素从文档流中拖出来,然后使用left、right、top、bottom属性相对于其最接近的一个具有定位属性的父元素进行绝对定位。如果不存在这样的父元素,则相对于body元素,即相对于浏览器窗口

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>absolute样式</title>
<style type="text/css">
div{
    200px;
    height:200px;
	border:2px red solid;
	position:absolute;
	left:100px;
	top:50px;
}
</style>
</head>
<body>
<div id="div1"></div>
</body>
</html>


6.2 层模型-相对定位(position: relative)

生成相对定位的元素,相对于其正常位置进行定位
相对于以前的位置移动,移动的方向和幅度由left、right、top、bottom属性确定,偏移前的位置保留不动(同时占有以前的位置)

#div1{
    200px;
    height:200px;
    border:2px red solid;
    position:relative;
    left:100px;
    top:50px;
}

<div id="div1"></div>

占有以前的位置

<!DOCTYPE HTML>
<html>

<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <title>relative样式</title>
  <style type="text/css">
    #div1 {
       200px;
      height: 200px;
      border: 2px red solid;
      position: relative;
      left: 100px;
      top: 100px;
    }
  </style>
</head>

<body>
  <div id="div1"></div>
  <span>偏移前的位置还保留不动,覆盖不了前面的div没有偏移前的位置</span>
</body>

</html>


6.3 层模型-固定定位(position: fixed)

生成固定定位的元素,相对于浏览器窗口进行定位
例如放大和缩小浏览器窗口不会影响固定定位元素的位置,始终在某一个位置


7. position:relative与position:absolute组合使用,实现相对于其它元素定位

7.1 参照定位的元素必须是相对定位元素的父元素

<div id="box1"><!--参照定位的元素-->
    <div id="box2">相对参照元素进行定位</div><!--相对定位元素-->
</div>

7.2 参照定位的元素必须加入position:relative
因为会保留以前的位置,网页整体布局不会乱。(可以设置position:absolute看效果)

#box1{
    200px;
    height:200px;
    position:relative;        
}

7.3 定位元素加入position:absolute,便可以使用top、bottom、left、right来进行偏移定位。

#box2{
    position:absolute;
    top:20px;
    left:30px;         
}

原文地址:https://www.cnblogs.com/allen2333/p/8857461.html