最近看到一些朋友经常问一些div+css排版的问题..现将方法总结出来
.入正题
我们通过采用div+css布局,可以轻松实现2行5列图片的排版样式.
原理: 设定一个div(box)作为容器,我们所有的图片都放在其中.在图片宽度一定的情况下,我
们可以通过设定box的宽度来控制每行显示的图片数,即图片的列数.比如在本例中,图片大小为
128x128,那么设定box宽度为640的话,每行就能显示5张图片.然后我们控制图片的总数为10,
就实现了2行5列的图片排版.可以看出,这个排版是由css控制实现的.
比如以下代码- [html]
- <div class="box">
- <div class="image"><img src="images/demo.png"></div>
- <div class="image"><img src="images/demo.png"></div>
- <div class="image"><img src="images/demo.png"></div>
- <div class="image"><img src="images/demo.png"></div>
- <div class="image"><img src="images/demo.png"></div>
- <div class="image"><img src="images/demo.png"></div>
- <div class="image"><img src="images/demo.png"></div>
- <div class="image"><img src="images/demo.png"></div>
- <div class="image"><img src="images/demo.png"></div>
- <div class="image"><img src="images/demo.png"></div>
- <div class="clear"></div>
- </div>
- [/html]
复制代码 我们用div(box)作容器放所有图片.为了实现图片排列的整齐划一,我们用div (image)放单个图片,通过控制div(image)的样式来实现.
其样式文件如下- [html]
- .box {
- width:700px;
- border:1px solid #ccc;
- background:#fff;
- margin:0px auto;
- padding:0px;
- }
- .image {
- float:left;
- border:1px solid #ccc;
- margin:3px 3px;
- padding:2px;
- display: inline;
- }
- .clear {clear:both;}
- [/html]
复制代码 这段css的关键在于.box里宽度(width)值的设定.下面我们来看一下如何设定这个值才合理.
1 设定div(image)的边框属性,形成一个图片框.
2 .image里设定padding:2px,实现图片与图片框之间有2个象素的距离,比较美观.
3.image里设定margin:3px 3px ,实现各图片框之间有3+3=6象素的间距,美观.
4.计算div(box)的宽度值.每张图片宽128,5张一共128*5=640;图片框左右各有3px的外边距,
5个一共3*2*5=30;图片框左右各有2px的内边距,5个一共2*2*5=20,图片框左右边框均为1px,5个共1*2*5=10;所以box的宽度该设定为640+30+20+10=700.
实事上这个值并不是如此严格,我们设定为720怎么样?720-100=20,20px的宽度显然放不下一张128px的图片,因此显示的仍是5列.如果这个剩余的宽度大于一张图
片的宽度了,那么下一行最前一张图片就会填充到这一行的最后,变成6列.同样,如果宽度设定小于700px了,那么就会把这一行最后的图片挤到下一行,同样是不行的. |