流动布局
流动布局是浏览器默认的布局方式。他会按照你所写的标签特性,从上至下、从左到右的方式进行排列
在HTML中我们按照标签的排列特性可以将它们分成三类:
1.行级元素:不独占一行,不能设置元素的高度、宽度和底边边距,它的宽度和高度是由他的内容撑起来的。
2.行内块元素:不独占一行,可以设置元素的宽度、高度和底边边距。
3.块级元素:独占一行,元素的宽度、高度、上下边的边距都可以设置。
常用的行级元素有:<span><a>
常用的行内块元素:<img><input><textarea>
常用的块级元素:<div><h1><p><table><tr><td><form><ul><ol><li><dl><dt><dd>
浮动布局
在默认情况下,块级元素会独占一行,但是当我们想让两个块级元素在同一行排列时,我们就可以用到浮动布局
层模型
设置层模型属性会将标签从原来的文本流中上升到浮动层中来,然后调整他在浮动层中的位置,文本层中的标签会覆盖在下面文本层中的标签上面。有相对定位、绝对定位和固定定位三种属性。
需求 :假设高度默认100px ,请写出三栏布局,其中左栏、右栏各为300px,中间自适应
将左右的div宽度设为300px,分别左右浮动,中间盒子不设宽度。注意:先写右边盒子,再写中间盒子,否则先渲染中间盒子,中间盒子会占满该行剩下的宽度,右边盒子只能换行显示,就会出现下面的情况
正常的渲染效果如下所示:
第二种:绝对定位(position:absolute)
设置父盒子position:relative(相对定位),
三个子盒子position:absolute,
左盒子left:0,
右盒子right:0
中间盒子left:300pxright:300px
第三种:flex布局
父盒子 display:flex
左右盒子设置宽度:300px
中间盒子flex:1(flex-grow:1 flex-shrink:1 flex-basis:0%)不考虑元素尺寸自由伸缩
第四种:grid布局
父盒子display: grid
grid-template-columns:300px auto 300px(分割成3列,宽度分别为300px auto 300px)
grid-template-rows:100px(占一行,行高100px)
田字格布局,要求大小相同的四个正方形。而html里div如果不加控制的话是独占一行的,现在要做的是把四个大小相同的方块,排列成“田”字。第一步、新建html文档并搭建框架
新建一个TXT文档,重命名为“田子格布局.html”,然后用记事本打开,输入表头信息,已经html整体框架搭建。包括head与body。
第二步、DIV布局
分别复制4个不同的div作为4部分,并且分别命名为不同id;显示内容为块1、块2、块3、块4。
【提示】div在html里是单独占一列的(如果不控制),现在4个div布局完成。
【代码如下】
</head>
<body>
<div id="prat1">块1</div>
<div id="prat2">块2</div>
<div id="prat3">块3</div>
<div id="prat4">块4</div>
</body>
</html>
第三步、CSS控制4个DIV显示
输入style然后开始对4个div进行控制,分别对四个块进行大小和颜色的设定,处理之后在浏览器中打开显示如下图所示。
【提示】由于是田子格,所以四个div大小应该相同,为了可以区分颜色分别采用不同的颜色。
【代码如下】
<style>
#prat1{
width: 200px
height: 200px
background: blue/*边长200像素的蓝色方块*/
}
#prat2{
width: 200px
height: 200px
background: red/*边长200像素的蓝色方块*/
}
#prat3{
width: 200px
height: 200px
background: yellow/*边长200像素的蓝色方块*/
}
#prat4{
width: 200px
height: 200px
background: green/*边长200像素的蓝色方块*/
}
</style>
第四步、使用浮动
在CSS里控制输入float:left;四个div全部输入一样内容,这时候看到的是四个并排的div,而没有达到想要的效果,如下图所示。
【代码如下】
<style>
#prat1{
width: 200px
height: 200px
background: blue
float: left
}
#prat2{
width: 200px
height: 200px
background: red
float: left
}
#prat3{
width: 200px
height: 200px
background: yellow
float: left
}
#prat4{
width: 200px
height: 200px
background: green
float: left
}
</style>
第五步、清除浮动
在第三块上使用清除浮动clear:left;其余的代码保持不变,然后保存代码,刷新打开的页面,就会看到一个田字格了,如下图所示。
【代码如下】
#prat3{
width: 200px
height: 200px
background: yellow
float: left
clear: left
【注意】只清除第三块的就可以了。
【完整的代码】
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/htmlcharset=UTF-8">
<title>田字格布局</title>
<style>
#prat1{
width: 200px
height: 200px
background: blue
float: left
}
#prat2{
width: 200px
height: 200px
background: red
float: left
}
#prat3{
width: 200px
height: 200px
background: yellow
float: left
clear: left
}
#prat4{
width: 200px
height: 200px
background: green
float: left
}
</style>
</head>
<body>
<div id="prat1">块1</div>
<div id="prat2">块2</div>
<div id="prat3">块3</div>
<div id="prat4">块4</div>
</body>
</html>