即使我們使用了類似 *{margin: 0;padding: 0;} 這樣的代碼重置了瀏覽器默認樣式,也會發現類似<a>標簽這種inline-block元素,它們之間也還存在着間距。
demo:默認情況
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=0">
<title>怎么去除a標簽的默認間距</title>
<style type="text/css">
*{margin: 0;padding: 0;}
.demo{padding: 14px;text-align: center;}
.demo p{margin-bottom: 6px;}
.demo a{padding:3px 5px; text-decoration: none;color: #ffffff;}
.demo a:first-child{background-color: #2eacff;}
.demo a:last-child{background-color: orange;}
</style>
</head>
<body>
<p>默認情況</p>
<div class="demo">
<a href="#">底部鏈接1</a>
<a href="#">底部鏈接2</a>
</div>
</body>
</html>
運行效果:

我們會發現默認間距的存在,這種間距也被成為元素間留白間距。
之前也曾遇到過,但是沒太注意,最近因為和同事整理公司的UI框架,遇到類似的情況比較多,所以,查找了相關資料以及實踐驗證之后,發現了如下四種清除這種間距的方法:
方法一:font-size:0
<div class="demo demo1"> <a href="#">底部鏈接1</a> <a href="#">底部鏈接2</a> </div>
.demo1{
font-size: 0;
}
.demo1 a{
font-size: 14px;/*這里一定要設置,不然文本內容將不顯示*/
}
這種方法,也是微信UI框架weui采用的方法,推薦使用。

運行效果:

方法二:a標簽內容寫在一行
因為這種間距是由於元素留白引起的,所以,當我們把代碼寫在同一行的時候,間距也可消除。
但是考慮到代碼的可讀性,這種方法建議謹慎使用!
<div class="demo"> <a href="#">底部鏈接1</a><a href="#">底部鏈接2</a> </div>
運行效果:

方法三:float浮動
<div class="demo demo2"> <a href="#">底部鏈接1</a> <a href="#">底部鏈接2</a> </div>
/*float(浮動)*/
.demo2{
display: -webkit-box;
display: -webkit-flex;
display: flex;
justify-content: center;
}
.demo2 a{
float: left;
}
*注: .demo2樣式只是為了案例顯示效果,非必需。
我們可以從多出來的代碼就可以看到,這種方法會對原來的布局造成影響,所以,如果要采用這種方法,要考慮到對布局的影響。
運行結果:

方法四:letter-spacing
<div class="demo demo3"> <a href="#">底部鏈接1</a> <a href="#">底部鏈接2</a> </div>
/*letter-spacing*/
.demo3{
letter-spacing: -999px;
}
.demo3 a{
letter-spacing: 0;
}
注:該方法兼容性良好可以使用。
運行結果:

在線演示DEMO:
http://codepen.io/kevinInsight/pen/wgLqXO
