Inline-Block

读Cross-Browser Inline-Block后的笔记
看到一篇很讲解inline-block的文章,相当不错,能在所有浏览器上使用,记录下。

比如有以下的HTML结构,想让其平行的显示:

<ul>
<li>
<img src="http://studynote.cn/blog/wp-content/themes/Asinsimple/images/logo.png" alt="简单其实不简单" />
<h4>This is awesome</h4>
</li>
<li>
<img src="http://studynote.cn/blog/wp-content/themes/Asinsimple/images/logo.png" alt="简单其实不简单" />
<h4>This is awesome</h4>
</li>
……
</ul>一般说来,这种类型的布局是小菜一桩。固定宽度,固定高度,向左浮动就解决了,理想中的CSS代码如下:

li {
width: 200px;
min-height: 250px;
border: 1px solid #000;
display: inline-block;
margin: 5px;
vertical-align: top;
}事实上上面的代码在 Firefox 3, Safari 3 和 opera 中的效果没有问题,就算

中的文字发生变化也能有很好的效果。但IE6、IE7、Firefox2 就没那么好了,全都乱七八糟的。

原文中介绍了如何解决这些问题,涉及到了很多CSS的知识点,其原文的HTML结构以及CSS如下:

<ul>
<li><div>
<img src="http://studynote.cn/blog/wp-content/themes/Asinsimple/images/logo.png" alt="简单其实不简单" />
<h4>This is awesome</h4>
</div></li>
<li><div>
<img src="http://studynote.cn/blog/wp-content/themes/Asinsimple/images/logo.png" alt="简单其实不简单" />
<h4>This is awesome</h4>
</div></li>
……
</ul>li {
width: 200px;
min-height: 250px;
border: 1px solid #000;
display: -moz-inline-stack;
display: inline-block;
vertical-align: top;
margin: 5px;
zoom: 1;
*display: inline;
_height: 250px;
}这段CSS解决了IE6、IE7、 Firefox2不支持inline-block的问题。做下笔记吧!自己的学习还是不到家啊!

1、使用display: -moz-inline-stack;属性解决 Firefox2 不支持inline-block的问题,但又带来了新的问题(所有FF对于所有的属性为stack(包括-moz-inline-stack)的元素,它的第一级子元素会继承该元素的宽度和高度,但是子元素的子元素不会再继承)。解决的办法是在

内加入个新的标签,但就我个人而言完全没有这个必要,99.9%的使用Firefox用户都是勤于更新版本的。

2、使用zoom:1;激发IE的 hasLayout 属性, 再加上*display:inline;之后,在 IE7 中它们就可以像 inline-block 一样显示了(其实我对这方面的了解也不多,还没有理解,所以写不出达多的文字)。还使用了*display: inline;这一属性,display前面加个星号(*)的写法是用来区分于其它浏览器的,*displayp这种写法只有IE7以下的浏览器才能支持。

3、使用 _height: 250px; 解决IE6不支持min-height属性的问题,因为IE6 对 height 属性的不正确处理(即当内容的高度超过了容器设置的高度后,IE6会自动改变窗口的高度),使得我们可以这样使用。_height这种法写只有IE7以下的浏览器才能支持。

综上我认为比较好的写法是不考虑Firefox2的问题,

<ul>
<li>
<img src="http://studynote.cn/blog/wp-content/themes/Asinsimple/images/logo.png" alt="简单其实不简单" />
<h4>This is awesome</h4>
</li>
<li>
<img src="http://studynote.cn/blog/wp-content/themes/Asinsimple/images/logo.png" alt="简单其实不简单" />
<h4>This is awesome</h4>
</li>
……
</ul>li {
width: 200px;
min-height: 250px;
border: 1px solid #000;
display: inline-block;
vertical-align: top;
margin: 5px;
zoom: 1;
*display: inline;
_height: 250px;
}原文地址:http://blog.mozilla.com/webdev/2009/02/20/cross-browser-inline-block/
译文地址:http://www.qianduan.net/cross-browser-inline-block.html

有些涉及到的知识点可以阅读以下文章:

区分浏览器的 hack:http://www.ejeliot.com/blog/63
IE hasLayout:http://adamghost.com/2008/12/ie-haslayout-详解/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值