页面排版的时候经常会遇到li包含img时,图片文件的下边缘出现大概5个或10个像素的间隙,出现间隙大概是以下原因:
A) b! ^6 n$ k: q3 F G图片文字等inline元素默认是和父级元素的baseline对齐的,而baseline又和父级底边有一定距离(这个距离和 font-size,font-family 相关,不一定是 5px),所以设置 vertical-align:top/bottom/text-top/text-bottom 都可以避免这种情况出现。而且不光li,其他的block元素中包含img也会有这个现象,只要是inline元素和父级元素是baseline的属性的对齐。( w& q1 b4 R& M' l) |. @
html会把图片默认为内联级元素和文字是一样的,那文字的话,给他设置不同的文字大小或字体,肯定会有不同的行高,或者它们会有默认的行高。这样就有了img下面的空隙。4 c3 _) K" O+ i' k
具体解决办法:
3 a6 t3 t2 D5 ~: i& T* z; o第一,给图片img标签display:block。
9 n( }3 d0 m) c1 E' b6 S5 M1 img {display:block}; }8 G, ~: i% O2 O
第二,定义容器里的字体大小为0。% I" I/ @2 p% T& d7 h8 f& D" \
1 div {
1 ]1 s3 Q! \* C3 [! K2 width:110px;' O6 r! j( \; f# G1 i
3 border:1px solid #000;9 Z+ c9 E: Q8 d0 [
4 font-size:0
3 i. g# z5 H* I9 [8 a% _2 f5 }
6 { T; p' [7 u6 Y1 S第三,定义图片img标签vertical-align:bottom,vertical-align:middle,vertical-align:top
* } n- x; R$ Q& J, V* A2 u% ~( L1 img{vertical-align:bottom;}
3 c5 x. c' p( F& a& |+ e至于html属性align=”center”(对于图片浏览器会处理成align=”middle”)的解决办法,就相当于vertical-align:middle; 所以道理也是一样的,只要vertical-align不取baseline,这个空隙就消失了。) b; _( F4 F( F( r2 J& ~
相关说明$ f: `' q; l/ j6 K2 e2 d+ G6 r
1.ie的显示有几种模式,在html文档的开始部分声明<!doctype ….>7 d+ [& G; t" J! F* U1 I0 m
如果声明为strict模式,ie以w3c的方式显示文档,而w3c的标准里面<img />默认是一个inline的标签,除非自己显式的声明为 block.
. C) M" s J0 H- \3 Z2.那个空隙是ie针对盒模型默认的line-height和font-size. 给img desplay:block;虽然能解决问题,但没从结构上来考虑.可谓治标不治本.
, B( l3 c1 y: M9 }2 O* V0 m8 `8 ^7 _: s. h5 F: ~, U
更多网页制作信息请查看: 网页制作 |
|