面试时面试官问了我一个问题,就是做一个菜单的时候,菜单项中间空出的空白是怎么引起的,如何去除?自己一下就蒙了,没遇到过这种情况,后来上网搜了搜,发现确实有这个问题,于是总结了一番。
下面是根据张鑫旭博客的整理
方法一: 移除空格
1 | <div class="menu"> |
或1
2
3
4
5
6
7<div class="menu">
<a href="#">menuitem1</a
><a href="#">menuitem2</a
><a href="#">menuitem3</a
><a href="#">menuitem4</a
><a href="#">menuitem5</a>
</div>
或1
2
3
4
5
6
7<div class="menu">
<a href="#">menuitem1</a><!--
--><a href="#">menuitem2</a><!--
--><a href="#">menuitem3</a><!--
--><a href="#">menuitem4</a><!--
--><a href="#">menuitem5</a>
</div>
方法二:省略闭合标签或只写最后一个闭合标签
兼容性写法:
1 | <div class="menu"> |
HTML5写法:
1 | <div class="menu"> |
方法三:font-size:0
1 | <style> |
方法四:letter-spacing 或 word-spacing
1 | <!--display: inline-table or table;处理Chrome兼容性问题--> |
其他方法
1.使用浮动:不推荐,会造成一些奇怪问题
2.使用flex布局
3.other
YUI:1
2
3
4
5
6
7
8
9
10
11
12
13.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;
}
or
1 | li { |
参考
-去除inline-block元素间间距的N种方法
-Fighting the Space Between Inline Block Elements