读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-详解/
分享到:
相关推荐
本篇文章将深入探讨`display:inline`、`display:block`以及`display:inline-block`这三种主要的显示模式之间的区别,帮助你更好地理解它们在实际开发中的应用。 首先,我们来看`display:inline`。这种模式使得元素...
在网页布局设计中,`display:inline-block` 是一个非常常用且强大的CSS属性,它允许元素在保持块级元素特性的同时,像内联元素一样并排显示。然而,在不同浏览器之间,尤其是在Firefox(FF)上,可能会遇到一些显示...
在web设计中,"inline-block"是一种常用的CSS显示属性,它兼具内联元素和块级元素的特点。内联元素如,块级元素如,分别有其独特的布局特性。内联元素不会以新行开始,而是按照它们在文档中出现的顺序排列,而块级...
CSS 块状元素、内联元素和 inline-block elementos CSS 中的块状元素(Block Elements)和内联元素(Inline Elements)是两种基本的元素类型,它们在网页布局和样式设计中扮演着非常重要的角色。块状元素和内联元素...
【标题】:“inline-block 前世今生1” 【描述】:“同时我们知道 IE6、7 中 display:inline-block 是可以触发 hasLayout 的,触发了 hasLayout的元素表现出来的特征就是一” 【标签】:“软件/插件” 【正文】:...
`display:inline-block` 是 `display` 的一个值,它结合了块级元素(block-level element)和内联元素(inline element)的一些特性,为网页布局提供了更灵活的选择。在本篇文章中,我们将深入探讨 `display:inline-...
在网页布局中,`inline-block` 是一种常用的CSS布局方式,它允许元素保持内联特性的同时,具有块级元素的宽度和高度可调整性。然而,`inline-block` 在不同浏览器间存在兼容性问题,特别是在Firefox中有一个知名的...
display:inline-block 将对象呈递为内联对象,但是对象的内容作为块对象呈递。旁边的内联对象会被呈递在同一行内,允许空格。 但对于这个属性不是所有浏览器都识别。 支持的浏览器有:Opera、Safari。 但很遗憾,最...
`display:inline-block`是其中一种特殊的值,它结合了`inline`和`block`两种显示特性的优点,使得元素既能像内联元素一样并排显示,又能像块级元素一样控制内容的宽度和高度。下面我们将深入探讨`display:inline-...
1、display:inline-block 让一个元素具有“区块元素”的属性(可以设置width和height),又具有“内联元素”的属性(不产生换行)。 2、IE中的inline-block IE6不支持这个属性,但IE8开始支持这个属性。 让IE6...
在这个详解中,我们将深入讨论`display`属性中的`inline`、`block`以及`inline-block`值,以及它们在实际布局中的应用。 1. **`display: inline`** `inline`值使得元素作为行内元素显示,这意味着元素会与其他...
`display:inline-block` 是 CSS 中的一个重要属性,用于控制元素的布局方式。这个属性结合了 `display:inline` 和 `display:block` 的特性,使得元素既能像内联元素一样在一行内排列,又能像块级元素一样拥有宽度、...
有关于使用inline-block来代替float的讨论也蛮多的,最常说的就是使用inline-block来代替float进行布局,或者使用inline-block来实现元素的居中效果。前面《CSS3制作的分页导航》一文中就是使用的inline-block制作的...
本文主要关注`inline-block`元素的间距问题及其解决方案,同时也会对比`block`和`inline`的特性。 首先,`display: inline-block` 是一种混合型布局模式,它结合了`inline`元素的并排显示特性与`block`元素的宽高...
《CSS教程:深入理解inline-block在各浏览器的显示差异》 CSS中的display属性是一个非常重要的样式规则,它决定了元素如何在页面上呈现。在众多的display值中,`inline-block`是一个特别有用的值,它结合了`inline`...
在网页布局设计中,`display:inline-block` 是一个非常实用的CSS属性,它允许元素以行内元素的方式显示,但同时保留着块级元素的特性,如设置宽度、高度以及垂直对齐等。这个属性在处理多列布局,尤其是需要在有限的...