CSS实现⽹页布局(⼀列,两列,三列)
1.⼀列布局(⼜叫单列布局)
⼀列布局需要掌握3个知识点:标准⽂档流,其中⼜包含了块级元素和⾏级元素,还有margin属性,可以说实现⼀列布局的关键代码就是由margin属性实现的,通过设置margin:0 auto;来实现⽔平居中,auto就是它会根据浏览器的宽度⾃动设置两边的外边距。要设置margin,你⾸先得有⼀个盒⼦模型,⽐如这⾥的div,然后设置它的长宽,有⼀个固定的⼤⼩,才可以实现居中。
css固定定位<style type="text/css">
body{margin:0;padding:0;}
.head{heigth:200px;background:blue;}
.main{height:500px;width:800p;margin:0 auto;}
.footer{background:blue;height:200px;width:800px;margin:0 auto;}
</style>
<div class="head"> This is head !</div>
<div class="main"> This is main !</div>
<div class="footer"> This is footer !</div>
2.⼆列布局(两列⾃适应)
浮动:
块级元素都是⼀⾏⼀⾏这样排列的,需要把两个块级元素并排时,就需要⽤到CSS中的浮动布局float,float有三个属性值,
left-左浮动,right-右浮动,none-不浮动,⼀旦设置了float属性,元素就会对应的向左移,或向右移,直到碰到容器边缘,
当元素没有内容但是设置了浮动属性时,元素的宽度就随内容的变化⽽变化。
清除浮动的常⽤⽅法是:clear:both;(为需要清楚浮动的元素设置)如果你清楚的知道设置了那种浮动,也可以clear:right/left,⼀般都⽤both,保障浮动被清除;还有另外⼀种清除浮动的⽅法,width:100%;overflow:hidden;
<style type="text/css">
body{margin:0;padding:0;}
.main{width:800px;margin:0 auto;}
.left{width:20%;height:500px;background:blue;float:left;}
.right{width:80%;background:red;height:500px;float:right;}
</style>
<div class="main">
<div class="left"> This is left !</div>
<div class="right"> This is right !</div>
</div>
添加了⽗级div后,right和left块就被限制在⽗级块中,⽗级块宽度是固定的,则左右两块的宽度也随之
固定,但是如果⽗级块的宽度改变,则左右两块也会随之改变,且⽐例还是2:8,这个是固定不变的。
3.三列布局
position可设置4个属性值,分别为:static(静态定位),relative(相对定位),absolute(绝对定位),fixed(固定定位)
三列布局⾃适应,将上述两列布局中的⽐例更改为33.33%即可,那么以此类推,四列布局⾃适应也可以⽤⼀样的⽅法,调整⽐例分配,从⽽实现⾃⼰想要的布局⽅式。
<style type="text/css">
body{margin:0;padding:0;}
.main{width:800px;margin:0 auto;}
.left{width:33.33%;height:500px;background:blue;float:left;}
.middle{width:33.33%;height:500px;background:black;float:left;}
.
right{width:33.33%;background:red;height:500px;float:right;}
</style>
<div class="main">
<div class="left"> This is left !</div>
<div class="middle"> This is middle !</div>
<div class="right"> This is right !</div>
</div>
另外⼀种情况是,左右两块的宽度都是固定的分别为200px,300px,⽽中间是⾃适应的。这种情况下就不能通过float来实现了,此时我们需要对左右两块进⾏绝对定位,然后设置中间块的margin,则可以实现要求。如果你想让中间和左右两块不要紧密贴合,则可以在设置margin(上,右,下,左)时,把像素适当的提⾼。实现⽅式如下:
注意left:0;top:0;right:0;top:0; 这些设置是必须的,不加就会出问题,亲测
<style type="text/css">
body{margin:0;padding:0;}
.main{width:800px;margin:0 auto;}
.left{width:200px;height:500px;background:blue;position:absolute;left:0;top:0;}
.middle{height:500px;background:black;margin:0 300px 0 200px;}
.right{width:300px;background:red;height:500px;position:absolute;right:0;top:0;}
</style>
<div class="main">
<div class="left"> This is left !</div>
<div class="middle"> This is middle !</div>
<div class="right"> This is right !</div>
</div>
在⽹页设计中,我们更多的是将上述布局⽅式进⾏混合,⽐如在⼀列布局的main块中插⼊⼆列或者三列布局,代码和上基本⼀致