╋艺 镇╋╋网站网络|程序语言|Flash╋┣◇网站建设&Web语言 → inline-block


  共有21463人关注过本帖树形打印复制链接

主题:inline-block

美女呀,离线,留言给我吧!
admin
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 司令 亲民勋章
等级:管理员 帖子:3027 积分:27521 威望:0 精华:7 注册:2003/12/30 16:34:32
inline-block  发帖心情 Post By:2011/2/11 16:43:22 [显示全部帖子]

简单来说就是将对象呈递为内联对象,但是对象的内容作为块对象呈递。

  在css中,inline-block:将对象呈递为内联对象,但是对象的内容作为块对象呈递。旁边的内联对象会被呈递在同一行内。display:inline-block
  旁边的内联对象会被呈递在同一行内,允许空格。但是这个属性目前不是所有的浏览器都支持,只有Opera和Safari支持,FireFox3和IE8据说将会支持,Firefox2和IE使用特殊办法可以实现这种效果,下面就来探讨一下
  在Firefox2中有-moz-inline-stack和-moz-inline-box实现,但是这两个私有属性在某些情况下都会有异常,具体如下:
  1、display:-moz-inline-stack
  “当它所应用的外包装器(wrapper)的display为inline的时候,它所包含的a或button将无法点击或无法选取,需要通过position:relative还hack掉这个bug”--乌龙茶
  2、display:-moz-inline-box
  使用这一属性后,text-align就会出问题,必须使用Firefox的私有属性 -moz-box-align来解决
  所以,建议不要使用-moz-inline-box,还是使用-moz-inline-stack
  在IE(以下IE8除外)下,如果对内联元素,比如a或span元素,使用inline-block属性是有效的,似乎IE是支持的,其实是触发了IE的layout,从而拥有了inline-block属性的表症。这样我们就有了一种在IE下实现display:inline-block效果的两种方法:
  1、先用display:inline-block属性触发块元素,然后再定义display:inline,让块元素呈递为内联对象(原理:这是IE的一个经典bug,如果先定义了display:inline-block,然后再设置display回inline或block,layout不会消失),代码如下:
  div {display:inline-block;}
  div {display:inline;}
  2、直接让块元素设置为内联对象(display:inline),然后通过zoom:1触发块元素的layout,代码如下:
  div {display:inline; zoom:1;}
  那么为了能够让所有浏览器支持display:inline-block,综合一下,最终的实现代码如下(参考怿飞:模拟兼容性的 inline-block 属性):
  display:inline-block; /*一方面Firefox3 beta、IE8 beta、Opera、Safari 支持,另一方面下触发IE下inline 元素的 hasLayout*/
  display:-moz-inline-stack; /* Firefox 的私有属性,需要时还必须用到position:relative解决上面提到的bug */
  zoom:1; /*同样是IE 下触发 hasLayout*/
  *display:inline; /*一旦IE 下触发了 hasLayout,设置 block 元素为 inline 会使 display:inline 效果与 display:inline-block 相似*/
  /*扩展一下一些其他可能用到的属性*/
  text-indent:-9999px;
  *text-indent:0;
  font-size:0;
  line-height:0; /* 如需隐藏文字,可用这四个属性 */
  /*另外上面隐藏文字,还可以用更简化的方法:line-height:超级大值;font-size:0; */
  overflow:hidden; /* 隐藏溢出的内容 */
  vertical-align:middle; /* 行内垂直居中,针对 Opera 比较大的偏离 */
  width:?px; /*?为任意非auto值*/
  height:?px; /*?为任意非auto值*/

简单来说就是将对象呈递为内联对象,但是对象的内容作为块对象呈递。

  在css中,inline-block:将对象呈递为内联对象,但是对象的内容作为块对象呈递。旁边的内联对象会被呈递在同一行内。display:inline-block
  旁边的内联对象会被呈递在同一行内,允许空格。但是这个属性目前不是所有的浏览器都支持,只有Opera和Safari支持,FireFox3和IE8据说将会支持,Firefox2和IE使用特殊办法可以实现这种效果,下面就来探讨一下
  在Firefox2中有-moz-inline-stack和-moz-inline-box实现,但是这两个私有属性在某些情况下都会有异常,具体如下:
  1、display:-moz-inline-stack
  “当它所应用的外包装器(wrapper)的display为inline的时候,它所包含的a或button将无法点击或无法选取,需要通过position:relative还hack掉这个bug”--乌龙茶
  2、display:-moz-inline-box
  使用这一属性后,text-align就会出问题,必须使用Firefox的私有属性 -moz-box-align来解决
  所以,建议不要使用-moz-inline-box,还是使用-moz-inline-stack
  在IE(以下IE8除外)下,如果对内联元素,比如a或span元素,使用inline-block属性是有效的,似乎IE是支持的,其实是触发了IE的layout,从而拥有了inline-block属性的表症。这样我们就有了一种在IE下实现display:inline-block效果的两种方法:
  1、先用display:inline-block属性触发块元素,然后再定义display:inline,让块元素呈递为内联对象(原理:这是IE的一个经典bug,如果先定义了display:inline-block,然后再设置display回inline或block,layout不会消失),代码如下:
  div {display:inline-block;}
  div {display:inline;}
  2、直接让块元素设置为内联对象(display:inline),然后通过zoom:1触发块元素的layout,代码如下:
  div {display:inline; zoom:1;}
  那么为了能够让所有浏览器支持display:inline-block,综合一下,最终的实现代码如下(参考怿飞:模拟兼容性的 inline-block 属性):
  display:inline-block; /*一方面Firefox3 beta、IE8 beta、Opera、Safari 支持,另一方面下触发IE下inline 元素的 hasLayout*/
  display:-moz-inline-stack; /* Firefox 的私有属性,需要时还必须用到position:relative解决上面提到的bug */
  zoom:1; /*同样是IE 下触发 hasLayout*/
  *display:inline; /*一旦IE 下触发了 hasLayout,设置 block 元素为 inline 会使 display:inline 效果与 display:inline-block 相似*/
  /*扩展一下一些其他可能用到的属性*/
  text-indent:-9999px;
  *text-indent:0;
  font-size:0;
  line-height:0; /* 如需隐藏文字,可用这四个属性 */
  /*另外上面隐藏文字,还可以用更简化的方法:line-height:超级大值;font-size:0; */
  overflow:hidden; /* 隐藏溢出的内容 */
  vertical-align:middle; /* 行内垂直居中,针对 Opera 比较大的偏离 */
  width:?px; /*?为任意非auto值*/
  height:?px; /*?为任意非auto值*/



来源:

http://baike.baidu.com/view/4056169.htm


  
平面设计、网站建设、三维动画、视频制作 联系QQ:114103945  回到顶部
美女呀,离线,留言给我吧!
admin
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 司令 亲民勋章
等级:管理员 帖子:3027 积分:27521 威望:0 精华:7 注册:2003/12/30 16:34:32
  发帖心情 Post By:2011/12/20 13:36:47 [显示全部帖子]

 display:inline-block在IE6/Ie7和IE8中的区别:

在IE6、IE7中不识别display:inline-block属性,但使用inline-block属性在IE下会触发layout,从而使内联元素拥有了display:inline-block属性的表症。从上面的分析也不难理解为什么IE6、IE7下对块元素设置display:inline-block属性无法实现inline-block的效果。这时块元素仅仅是被inline-block触发了layout,而它本就是行布局,所以触发后,块元素依然是行布局。IE8识别display:inline-block;

在IE6、IE7中实现块元素的inline-block效果有以下两种方法:1先使用display:inline-block属性触发layout,然后再定义display:inline让块元素呈现内联对象(两个display要先后放在两个CSS声明中才有效果,这是IE的一个经典BUG)。2直接将块元素设置为display:inline呈现为内联对象,然后触发layout(如zoom:1)。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="
http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" c />
<title>无标题文档</title>
<style type="text/css">
body{text-align:center;}
.inlineBlock{width:100px;height:100px;border:1px solid #FF7900;margin:8px;display:inline-block;text-align:center;}
.inline{*display:inline;}
.layout{zoom:1;display:inline-block;}
</style>
</head>

<body>
<div class="inlineBlock inline">1</div>
<div class="inlineBlock inline">2</div>
<div class="inlineBlock inline">3</div>
</body>
</html>

这样可以解决了嘿嘿……希望有更好的方法大家可以写出来共同分享


http://apps.hi.baidu.com/share/detail/48361343 



----------------

这样好像也行:
.in_block li{
    display:inline-block;
    }
.in_block li{
    *display:inline;
    }


<ul style="width:440px; border-top:4px solid #a0b3d6; border-bottom:4px solid #34538b;" class="in_block">
    <li style="border:1px solid #ff6633; background:#ffffc0;width:100px;height:100px;"></li><li style="border:1px solid #ff6633; background:#ffffc0;width:100px;height:100px;"></li>
</ul>
[此贴子已经被作者于2011-12-20 13:39:36编辑过]


  
平面设计、网站建设、三维动画、视频制作 联系QQ:114103945  回到顶部