一天大家在团队中讨论“未知图片垂直居中”的问题,突发奇想用vertical-align:middle这个属性来实现,于是抽了时间做了下面这个不成熟的例子:
CSS:
div{ width:140px; height:140px; text-indent:-8px; text-align:center; line-height:138px; background:red; font-size:12px; *font-size:120px; *text-indent:-60px; } img{ width:100px; height:100px; vertical-align:middle; }
HTML:
< div>& nbsp;<img src="ipodclassics.jpg" alt="iPod classic" />
初衷是不想用position来做,毕竟 大量的图片显示浏览器在渲染的时候会消耗 较多的资源。
缺点是 输出了 无意义的nbsp;, 而且font-size和font-indentd的计算公式不是很简单(所以以上的数字都是凑的^_^).
后来小马见了这个思路,用了点时间升级了代码,用:after输出代替了无趣nbsp ,代码见下。
CSS:
.tb-p-c{ display: block; width:140px; height:140px; line-height:140px; text-align:center; *font-size:123px; } .tb-p-c img{ vertical-align:middle; } .tb-p-c:after { content: "."; visibility: hidden; font-size: 12px; margin-left: -5px; }
HTML:
<a class="tb-p-c"><img src="jishi070912_2.jpg" /></a>
这样子,恼人的nbsp消失了。大家对vertical-align:middle的渲染方式有了更进一步的了解了。还让很多同志发现了after这个伪类还可以用来hack.
结果圆心又给CSS升了次级:
CSS:
.tb-p-c{ display: table-cell; vertical-align:middle; width:140px; height:140px; text-align:center; *display: block; *font-size: 122px; background:red; } .tb-p-c img { vertical-align:middle; }
这是第三次的升级,由于时间关系,没有测试上面的代码,原因是利用了display来渲染,感觉上还是会让浏览器多次渲染,所以偶没测试 。 这次探讨给了我们很多很多的收获,相信如果有大家的参与,会有更多方式和我们没发现的观点。大伙别小气,多发表回复,一起提高。
本文链接:http://www.blueidea.com/tech/web/2007/5008.asp
出处:Taobao.com UI Team
责任编辑:moby
上一页 段正淳的css笔记 [4] 下一页
◎进入论坛网页制作、WEB标准化版块参加讨论,我还想发表评论。
|