默认情况下,所有的网页标签都在标准流布局中
从上到下,从左往右
脱离标准流的方法有
float属性
position属性 和 left、right、top、bottom属性
CSS布局 - float属性
float 属性定义元素在哪个方向浮动。以往这个属性总应用于图像,使文本围绕在图像周围,不过在 CSS 中,任何元素都可以浮动。浮动元素会生成一个块级框,而不论它本身是何种元素。
如果浮动非替换元素,则要指定一个明确的宽度;否则,它们会尽可能地窄。
注释:假如在一行之上只有极少的空间可供浮动元素,那么这个元素会跳至下一行,这个过程会持续到某一行拥有足够的空间为止。
float属性的常用取值有:
值 | 描述 |
left | 脱离标准流,浮动在父标签的最左边 |
right | 元素向右浮动。 |
none | 默认值。元素不浮动,并会显示在其在文本中出现的位置。 |
inherit | 规定应该从父元素继承 float 属性的值。 |
任何一种类型的标签,一旦脱离标准流,就会被强制转为行内-块级标签
<style
type="text/css">#main
{
width:
400px;
height:
200px;background-color:
red;
}
.test1
{
background-color:
green;
/*浮动*/
float:
left;
width:
80px;
height:
50px;
}
.test2
{
background-color:
blueviolet;
float:
right;
width:
50px;
}
.test3
{
background-color:
powderblue;
}
</style>
<div
id="main">
<div
class="test1">1</div>
<div
class="test2">2</div>
<div
class="test3">3</div>
</div>
CSS布局 - position属性
position 属性规定元素的定位类型。子标签相对于父标签的定位。
这个属性定义建立元素布局所用的定位机制。任何元素都可以定位,不过绝对或固定元素会生成一个块级框,而不论该元素本身是什么类型。相对定位元素会相对于它在正常流中的默认位置偏移。
值 | 描述 |
absolute |
生成绝对定位的元素,相对于 static 定位以外的第一个父元素进行定位。
元素的位置通过 "left", "top", "right" 以及 "bottom" 属性进行规定。
|
fixed |
生成绝对定位的元素,相对于浏览器窗口进行定位。
元素的位置通过 "left", "top", "right" 以及 "bottom" 属性进行规定。
|
relative |
生成相对定位的元素,相对于其正常位置进行定位。
因此,"left:20" 会向元素的 LEFT 位置添加 20 像素。
|
static | 默认值。没有定位,元素出现在正常的流中(忽略 top, bottom, left, right 或者 z-index 声明)。 |
inherit | 规定应该从父元素继承 position 属性的值。 |
/*子绝父相:子标签绝对定位,父标签相对定位*/
<style>
#main
{
background-color:
red;
margin:
60px;
width:
400px;
height:
200px;
position:
relative;
}
.test1
{
background-color:
greenyellow;
position:
absolute;
/*子绝父相:子标签绝对定位,父标签相对定位*/
/*定位*/
/*left: 20px;
top: 20px;*/
right:
0px;
bottom:
0px;
}
</style>
<div
id="main">
<div
class="test1">2121</div>
</div>
<style>
.test2
{
background-color:
paleturquoise;
/*停留在浏览器的底部*/
position:
fixed;
bottom:
0px;
width:
100%;}
</style>
<div
class="test2">
相对浏览器进行定位
</div>
标签的居中
水平居中和垂直居中
1>所有的标签水平居中
行内标签和行内-块级标签:在父标签中设置text-align: center;
块级标签:在自身设置margin: auto;
2>所有的标签垂直居中
行内标签和行内-块级标签:在父标签中设置line-height: 父视图的高度;
块级标签:
父视图中设置position: relative;
自身中设置position: absolute;
left: 50%;
top: 50%;
<!--平移-->
transform: translate(-50%,-50%);
<style>
#main
{
width:
500px;
height:
200px;
background-color:
palevioletred;
/*让内容居中:不能作用到块级标签上*/
text-align:
center;
/*
垂直居中:如果不设置行高,默认是内容的高度,如果设置了行高等于父标签自身的高度,里面的内容始终都是垂直居中的
*/
line-height:
200px;
position:
relative;
}
span
{
background-color:
palegreen;
}
.test
{
width:
200px;
height:
100px;
/*垂直居中*/
line-height:100px;
background-color:
palegoldenrod;
/*margin-left: auto;
margin-right: auto;*/
margin:0
auto;
position:
absolute;
left:
50%;
top:
50%;
/*平移*/
transform:
translate(-50%,-50%);
}
</style>
<div
id="main">
<!--行内标签-->
<span>行内标签</span>
<!--行内-块级标签-->
<!--<button>行内-块级标签</button>-->
<!--块级标签-->
<div
class="test">块级标签</div>
</div>