|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
最新版本html5+CSS3与2014年10月29日,万维网联盟宣布,经过几乎8年的艰辛努力,该标准规范终于最终制定完成。
破洛洛文章简介:图片的自顺应居中及兼容性处置。
头几天在做腾讯微博的微卖场的时分,碰到必要做图片居中的需求。也就是说,商品列表中的图片必要居中显现。由于图片是卖家本人把商品图片链接过去,商品图片的巨细没有做限定和过滤。以是我们必要做的是,让图片在容器傍边程度居中、垂直居中、图片自顺应容器巨细。图片原始图片巨细和在容器中显现的巨细有如许的干系:
假定容器巨细为200像素*200像素,图片的宽为x像素,高为y像素,则:当x<=200,y<=200时,图片位于容器中的两头,即程度居中和垂直居中,显现在容器的图片巨细为:宽=x,高=y;当x>200,y<=200时,显现在容器中的图片巨细为:宽=200,高=200y/x;当x<=200,y>200时,显现在容器中的图片巨细为:宽=200x/y,高=200;当x>200,y>200,且x>y,显现在容器中的图片巨细为:宽=200,高=200y/x;当x>200,y>200,且x<y,显现在容器中的图片巨细为:宽=200x/y,高=200;当x>200,y>200,且x=y,显现在容器中的图片巨细为:宽=200,高=200;为了更好地看到效果,先把图片的原始图片展现出来,以便和它在列表容器傍边做对照。
x<=200,y<=200的图片:
x>200,y<=200的图片:
x<=200,y>200的图片:
x>200,y>200,且x=y的图片:
图片自顺应居中合用的场景有商品列表、相册、搜刮图片了局列表等。怎样利用静态的办法完成如许的效果呢?看了网上的一些办法,加上本人的一些申明,做了几个demo,供人人参考。
利用通明图片,在该图片上设置背景图。
这类办法合用于小图片,即商品图都比容器小,不必要缩放,加载形态图片可使用这个办法。这个办法的范围性在于,商品图片必要在服务器端过滤,大概先等比例减少,再在扫瞄器端显现。- <divclass="wrap_1"><ahref=""></a></div>
复制代码- /*图片的背景图体例*/.wrap_1{width:200px;height:200px;border:1pxsolidred;}.wrap_1img{display:block;background-repeat:no-repeat;background-position:center;}
复制代码 检察demo
设置display为table-cell
在img外设置两层div,最外层div的款式设置为display:table-cell。由于IE6、7中对table-cell不撑持,以是针对IE6、7,设置了position来完成居中。在IE8中,假如图片自己的宽比容器的严惩,则容器宽度会被撑开,这里利用针对IE8的width为200px处置。- <divclass="wrap_2_outer"><divclass="wrap_2_inner"><ahref=""></a><i></i></div>
复制代码- /*空标签*/.wrap_3{width:200px;height:200px;overflow:hidden;text-align:center;font-size:0;border:1pxsolidred;}.wrap_3i{display:inline-block;width:0;height:100%;overflow:hidden;margin-left:-1px;font-size:0;line-height:0;vertical-align:middle;}.wrap_3img{vertical-align:middle;max-height:200px;max-width:200px;}
复制代码 检察demo
设置行高line-height
对图片容器设置行高为容器的高。- <divclass="wrap_4"><imgsrc="400_300.jpg"alt=""></div>
复制代码- /*设置行高*/.wrap_4{width:200px;height:200px;text-align:center;border:1pxsolidred;font-family:arial;line-height:198px;font-size:0;_font-size:180px;}.wrap_4img{display:inline-block;vertical-align:middle;max-height:200px;max-width:200px;}
复制代码 检察demo
以上完成的效果为:
IE6的杯具
关于图片的自顺应,利用max-width和max-height。无情无义的实际就是IE6及以下不撑持max-width和max-height。以上用于修复IE6中max-height,max-width的表达式_width和_height,在运转时还存在小成绩。用分歧的图片试了一下,关于宽和高最少一个值小于或即是200的图片,可以完善地展现,可是若宽和高二者都年夜于200,则会呈现一些小成绩。
若_width和_height二者一同利用,x>200,y>200,且x>y的图片,会显现幻想的形态。x>200,y>200,且x<y的图片,会显现为200*200的巨细,可是没有按比例缩放:(。
若_width、_height独自利用,则可以使对应的图片显现为幻想形态。如仅利用_width,能对横图起感化,对竖图不起感化。
反之,如仅利用_height,能对竖图起感化,对横图不起感化。
结论是,_width和_height都写上,如许做有95%完善了。别的对CSSExpression的功能做优化,猫哥做了细致的剖析供人人参考。针对IE6加上_width:expression(function(el){el.style.width=el.offsetWidth>200?’200px’:el.offsetWidth+‘px’;counter(’2′);}(this));这句。
</p>
现在YAHOO,MSN等国际门户网站,网易,新浪等国内门户网站,和主流的WEB2.0网站,均采用DIV+CSS的框架模式,更加印证了DIV+CSS是大势所趋。 |
|