我正在使用PHP回显一系列HTML元素。我使用\n
导致代码换行符使源代码更有条理和清晰。
出于某种原因,在特定位置使用\n
会导致HTML元素之间出现神秘的差距。在萤火虫中,这个差距并没有显示为边距或填充,而只是差距。
以下是有问题的PHP:
注意:正如您所看到的,我已经删除了标记内的所有PHP,因为我很确定它与此问题无关。
echo '<ul ... >'."\n";
while($row = mysql_fetch_assoc($result_pag_data)) {
echo '<li><a ... >'."\n".
'<img ... >'."\n".
'</a></li>'."\n"; <---- THIS IS THE \n THAT SEEMS TO BE CAUSING THE GAP
}
echo '</ul>'."\n";
你以前见过这样的事吗,与PHP换行相关的演示间隙? 如果是这样,那是什么原因?
我在代码中使用\n
真的那么重要吗?
答案 0 :(得分:3)
这是正常的。 \n
换行符在HTML中没有意义,因此它被解释为空格字符。如果你不想要这个差距,那么删除\n
,或者重写html,这样就不相关了:
<li><a ...><img ...></a></li>
作为一般规则,由于这个原因,可以包含文本的标签本身不应该在一行上关闭标签。
跟进你的“放置\ n”问题。这归结为个人偏好,但我倾向于格式化我的html:
<table>
<tr>
<td><a href="some big long ugly url">
<img ....></a></td>
</tr>
由于<tr>
不能自己包含任何文本(在有效的html中),所以可以单独使用它。但是</a>
和</td>
都是可以包含文字的标签,因此我将它们放在“文本”的末尾(本例中为img标签),以便Phantom Linebreak Menance (即将到达你附近的星球大战)不能发动。
注意,当然,我的示例在开头<a>
和<img>
标记之间确实有换行符和缩进,因此这是另一个“必须紧挨着每个”的地方布局会造成差距。如果你需要一系列相互排列的东西,那么你基本上不能在页面的那一部分的任何地方使用换行符。
答案 1 :(得分:1)
将空格转换为(空)HTML文本节点,占用一些空间(您可以通过遍历DOM来测试)。除了首先从HTML中删除空格外,没有任何解决方案可以使这些消失。
当然,不只是\n
会导致这种行为;空格或制表符也可以完全相同。
答案 2 :(得分:1)
在这种特殊情况下,换行符用于美化html源,通过view-source保持可读性。实际上这很常见。 (但多余。)
正如其他答案所说,它通常没有意义。虽然这可以通过CSS和属性覆盖(我们可以假设这不是这里的情况):
white-space: pre-line;
答案 3 :(得分:0)
您应该只输出一个新行,其中您实际上需要输出中的换行符。在HTML中,换行符是空格,就像空格字符一样。