inline-block去掉空白距离方法

自己写的测试案例刚开始发现居然没有空白的距离,后来请教才发现原来是因为没有换行的原因。注意只有inline-block换行了才会出现空白距离的问题。而且任何元素和标签只要在html里面进行了换行,显示在浏览器的会后就都会有间距。

原型是:

ul.test1{width:700px;text-align:center;list-style: none outside none;background:#eee;padding:0 10px;}
ul.test1 li{display:inline-block;*display:inline;zoom:1;background:#f60;padding:5px;}
<ul class="test1">
    <li>关于我们</li>
    <li>客户服务</li>
    <li>招聘信息</li>
    <li>隐私声明</li>
</ul>

有空白距离的效果:

解决方法有:

第一种方法:加上 font-size:0; 和  font-size:12px; 不兼容safari浏览器,用行内元素李欢li,ie6下面中间有右间距1像素。

ul.test1{width:700px;text-align:center;list-style: none outside none;background:#eee;padding:0 10px;font-size:0;}
ul.test1 li{display:inline-block;*display:inline;zoom:1;background:#f60;padding:5px;font-size:12px;}

第二种方法:改变html结构,都兼容

<ul class="test1">
    <li>
    关于我们</li><li>
    客户服务</li><li>
    招聘信息</li><li>
    隐私声明
    </li>
</ul>

或者

<ul class="test1">
    <li>关于我们</li
    ><li>客户服务</li
    ><li>招聘信息</li
    ><li>隐私声明</li>
</ul>

第三种,父元素中设置font-size:0,用来兼容chrome,firefox等浏览器,而使用letter-space:-N px来兼容safari:都兼容

ul.test1{width:700px;text-align:center;list-style: none outside none;background:#eee;padding:0 10px;letter-spacing: -4px;/*根据不同字体字号或许需要做一定的调整*/
  word-spacing: -4px;
  font-size: 0;}
ul.test1 li{display:inline-block;*display:inline;zoom:1;background:#f60;padding:5px;letter-spacing: normal;word-spacing:normal;font-size:12px;}

 

ps:注意:列表显示这些元素如果用块元素、行内元素,在除去了边距之后,在ie6显示下面会有1像素的差别,且是在使用font-size:0;和font-size:12px;这种方法的时候出现,用第二种和第三种都不出现这种差异。

以下是行内元素的时候的代码:

p.test3{width:700px;text-align:center;list-style: none outside none;background:#eee;padding:0 10px;font-size:0;}
p.test3 span{display:inline-block;*display:inline;zoom:1;background:#f60;padding:5px;font-size:12px;}
<p class="test3">
  <span>关于我们</span>
  <span>客户服务</span>
  <span>招聘信息</span>
  <span>隐私声明</span>
</p>

so,总结下来,

1、可以不换行的时候就不要换行

2、万一要换行,能改结构的时候就不要用css

3、用css的时候建议用第三种办法,并且注意要用块元素,不要用行内元素。

 

 

 

 

posted @ 2012-12-26 17:55  sheena的世界  阅读(6468)  评论(0编辑  收藏  举报