html/css解决inline-block内联元素间隙的多种方法总汇

站长手记 作者: 2024-08-28 14:20:01
inline-blcok元素中间的空白符引起的间隙,处理方法总结包括:改变书写结构、使用font-size:0、使用margin负值、使用letter-spacing或word-spacing、丢失结束标签、W3C推荐 导航方法(兼容IE6等)、YUI的inline-block间隙处理等...

display:inline-block;*dsiplay:inline;*zoom:1;

为什么会有间隙

解决方案

1、改变书写结构

<ul>
    <li>item1</li><li>item2</li><li>item3</li><li>item4</li><li>item5</li>
</ul>
<ul>
	<li>
		item1</li><li>
		item2</li><li>
		item3</li><li>
		item4</li><li>
		item5</li>
</ul>
<ul>
	<li>item1</li
	><li>item2</li
	><li>item3</li
	><li>item4</li
	><li>item5</li>
</ul>
<ul>
	<li>item1</li><!--
  --><li>item2</li><!--
  --><li>item3</li><!--
  --><li>item4</li><!--
  --><li>item5</li>
</ul>

2、使用font-size:0

.space {
    font-size: 0;
   -webkit-text-size-adjust:none;//兼容Chrome
}
.space a {
    font-size: 12px;
}

3、使用margin负值

@media screen and (-webkit-min-device-pixel-ratio:0) { div { margin-right: -8px; } }/*谷歌 HACK 方法*/

4、使用letter-spacing或word-spacing

.space {
    letter-spacing: -3px;
}
.space a {
    letter-spacing: 0;
}
.space {
    word-spacing: -6px;
   display: inline-table;/*兼容Chrome*/
}
.space a {
    word-spacing: 0;
}

5、丢失结束标签

<ul>
	<li>item1
	<li>item2
	<li>item3
	<li>item4
	<li>item5
</ul>

6、W3C推荐 导航方法(兼容IE6等)

<style type="text/css">
        body,div,h1,ul,li{margin:0; padding:0;}
        ul,li{list-style:none;}
        a{text-decoration: none;}
        .nav a{background: red;color:#fff;padding: 10px 20px;margin-right: -4px;line-height: 40px;*margin-right: -8px;/* ie 下面也是 -8px*/}
        @media screen and (-webkit-min-device-pixel-ratio:0) { .nav a { margin-right: -8px; } }/*谷歌 HACK 方法*/
        .nav ul li{display:inline;}
        .nav a:hover{text-decoration: underline;}
</style>
<div class="nav">
        <ul>
            <li><a href="#">首页</a></li>
            <li><a href="#">服装城</a></li>
            <li><a href="#">食品</a></li>
            <li><a href="#">团购</a></li>
            <li><a href="#">夺宝岛</a></li>
            <li><a href="#">闪购</a></li>
            <li><a href="#">金融</a></li>
        </ul>
</div>

7、YUI 3 CSS Grids的处理

.yui3-g {
    letter-spacing: -0.31em; /* webkit */
    *letter-spacing: normal; /* IE < 8 重置 */
    word-spacing: -0.43em; /* IE < 8 && gecko */
}
.yui3-u {
    display: inline-block;
    zoom: 1; *display: inline; /* IE < 8: 伪造 inline-block */
    letter-spacing: normal;
    word-spacing: normal;
    vertical-align: top;
}

8、其他方法

li {
    display:inline-block;
    background: orange;
    padding:10px;
    word-spacing:0;
    }
ul {
    width:100%;
    display:table;  /* 调教webkit*/
    word-spacing:-1em;
}

.nav li { *display:inline;}

结语

原创声明
本站部分文章基于互联网的整理,我们会把真正“有用/优质”的文章整理提供给各位开发者。本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
本文链接:http://www.jiecseo.com/news/show_70166.html
html css inline-block 内联元素