關于inline-block 元素之間為何會產生間隔
現象:
<body><input type="text"><input type="text"> </body>
?
在瀏覽器中的表現:
實時上不僅僅是 inline-block 會導致這種現象。 inline 也會導致。
那問題來了,為啥?
XML 經常在節點之間含有換行或空白字符。這是在使用簡單的編輯器(比如記事本)時經常出現的情況。
下面的例子(由記事本編輯)在每行之間含有 CR/LF,
<body><input type="text"><input type="text"> </body>
DOM 規范中規定,一切皆是節點,換行或者空格,會被當成文檔節點來處理。#text
所以那個空隙就是這個空的文檔節點導致。
window.onload = function() {for (var i = document.body.childNodes.length - 1; i >= 0; i--) {var node = document.body.childNodes[i];console.log(node)// if(node.nodeType==3){// document.body.removeChild(node)// } }; }
?
所以我們去除掉這個節點就可以解決這個問題。就像注釋的那段代碼那樣。其他的各種解決方案也有很多。這里不就介紹了。
當然,如果我們工程化項目時會壓縮代碼這時候會去除一些換行和空格,這種問題也可以避免。