CSS 奇技淫巧
display:inline-block 代替 float; 消除 inline-block 元素之间的缝隙
ul{font-size:0; /* 子级 inline-block 产生的缝隙取消 */} li{ display: inline-block; *display: inline; /* 如果先定义了 display:inline-block,然后再将 display 设回 inline 或 block,layout 不会消失 */ width:200px; height:200px; background: red; font-size: 12px; /* 父级通过 font-size 消除了 inline-block产生的留白, 故重新设置 font-size */ zoom:1; /* 触发haslayout */ }
子级 nagative margin-tob 让父级高度收缩 (效果与设置父级固定高度一致);
<div class="container"> <div style="padding-bottom:50px; background: pink"> <!-- ★ 父级必须设置 padding-bottom: 大于0, 否则无效 --> <img src="http://f.hiphotos.baidu.com/news/pic/item/94cad1c8a786c917250b38d8cb3d70cf3ac757c2.jpg" style="display: block; margin-bottom: -100px;"> </div> <div style="margin-top:100px; padding-bottom:0px; background: pink"> <!-- 父级 padding-bottom: 0, 所以子级 margin-bottom: nagative 无效 --> <img src="http://f.hiphotos.baidu.com/news/pic/item/94cad1c8a786c917250b38d8cb3d70cf3ac757c2.jpg" style="display: block;"> </div> <div style="margin-top:100px;height:205px; background: pink"> <!-- 父级也可以直接设置固定高度, 效果同等于第一个实例 --> <img src="http://f.hiphotos.baidu.com/news/pic/item/94cad1c8a786c917250b38d8cb3d70cf3ac757c2.jpg" style="display: block;"> </div> </div>
文字绕排
图片或者div float:left; 它后面的兄弟元素就会由于它脱离文档流而位置产生变化,其中:
如果兄弟元素为 块状非文本, 那么这些元素将靠齐父级左上角原点 (float元素无占位空间);
如果兄弟元素中含有 文本,那么这些文本节点将围绕 float元素 进行绕排效果, float元素的 width 以及 padding margin 可以影响到 文本节点 与 float元素的左,上距离, 文本节点的尺寸为( 父级左上角原点到 文本绕排最外层的范围);
红块为未浮动的块状兄弟元素 文字产生绕排,并且将文本节点所处的父级(如p标签)尺寸直接撑开
absolute等高布局
<style type="text/css"> *{padding:0; margin:0} .fl{float:left;} </style> <div class="container"> <div class="left_wrap fl"> <div class="left_bg"></div> <div class="left_con"> 您大爷!!!!!您大爷!!!!!您大爷!!!!!您大爷!!!!!您大爷!!!!!您大爷!!!!!您大爷!!!!!您大爷!!!!!您大爷!!!!!您大爷!!!!!您大爷!!!!!您大爷!!!!!您大爷!!!!!您大爷!!!!!您大爷!!!!!您大爷!!!!! </div> </div> <div class="right_wrap fl"> 他妹哟~他妹哟~他妹哟~他妹哟~他妹哟~他妹哟~他妹哟~他妹哟~他妹哟~他妹 </div> </div> <style type="text/css"> .container{ width:600px; margin: 0 auto; overflow: hidden;/*父级高度根据子级实际内容高度进行子级多余隐藏*/ background: red; /* 这玩意是右边的背景 */} .left_wrap{position:relative; width:40%;} .left_bg{ position: absolute; top:0; left:0; width:100%; height: 999em; background: pink; /* 这玩意是左边的背景 */ } .left_con{position: relative; z-index: 1; /* 层级高于left_bg显示 */} .right_wrap{width:60%;} </style>
img vertical-align: top 解决图片默认下方有占位空间