【问题标题】:how to prevent displaying spaces in html code如何防止在html代码中显示空格
【发布时间】:2016-08-23 12:54:16
【问题描述】:

假设我们有相同的 2 个输入标签,在 html 代码中有以下区别:

示例 1

<input type="text" id="v1" value="value 1"><input type="text" id="v2" value="value 2">

示例 2

<input type="text" id="v1" value="value 1">

<input type="text" id="v2" value="value 2">

这两个示例产生不同的输出,至少在我的 PC 和 Chrome 浏览器 [版本 52.0.2743.116 m(64 位)] 上。这两个输入之间有某种空间!似乎浏览器将新行转换为空格。但即使这样也不是真的,因为如果你在 source 中的输入之间创建不止一个新行,那么空格仍然只是一个空格!

有谁知道为什么会这样???

如果是,请说明您使用的浏览器(和版本)。哦,是的,john_h 很乐意在小提琴上制作this 代码

谢谢...

【问题讨论】:

    标签: html input spaces


    【解决方案1】:

    问题在于两个输入之间的空白正在被渲染。输入之间的任何空格(换行符、制表符、空格)都将被浏览器呈现为单个空格。要解决此问题,您可以在父元素上将 font-size 设置为 0。

    例如:

    <div class="block">
    
    <input type="text" id="v1" value="value 1"><input type="text" id="v2"value="value 2">
    <input type="text" id="v1" value="value 1">
    
    <input type="text" id="v2" value="value 2">
    </div>
    

    CSS:

     .block {
     font-size: 0;
     }
    

    这将显示您添加到父元素中的任何输入之间没有空格,因为 font-size 设置为零。希望我能够澄清你的疑问。谢谢。

    【讨论】:

    • 嗨@Sazz,谢谢你帮我解决这个问题。我已将小提琴代码更新为 jsfiddle.net/zale/dzxvzfhc/4 以反映您的评论...
    • 这是一种更简单的方法,而不是使用这么多的 div 和 css。一探究竟。 jsfiddle.net/dzxvzfhc/5.
    • 没错,整洁... ;)
    【解决方案2】:

    这些应该在浏览器中产生相同的外观,如果你有一个指向小提琴的链接,你可以发送它或者你可以看看这个:https://jsfiddle.net/john_h/0mz8afyd/1/

    您可能遇到的一件事是没有关闭标签。例如,这个:

    < input type="text" id="v1" value="value 1" >
    
    < input type="text" id="v2" value="value 2" >
    

    与此不同:

    <input type="text" id="v1" value="value 1" />
    
    <input type="text" id="v2" value="value 2" />
    

    也不包括“

    如果您希望这些在两个不同行中,只需在第一次输入后添加&lt;br/&gt;

    <input type="text" id="v1" value="value 1" />
    <br/>
    <input type="text" id="v2" value="value 2" />
    

    【讨论】:

    • 看看线条差异如何影响外观:jsfiddle.net/john_h/dzxvzfhc/1 两个输入标签之间没有任何空格会使其彼此相邻。这可能与浏览器相关,但如果您想要空间,只需将输入元素放在单独的行上。如果您不想要空间,请将它们放在同一行。这有点骇人听闻,但确实有效。
    • 不,我不想要那个空间。我正试图摆脱它,因为它会影响我编写代码的方式,这很愚蠢,对吧?但信不信由你发布的小提琴链接有所不同。我正在使用 Chrome(版本 52.0.2743.116 m(64 位))。你使用的是什么浏览器?有没有办法在这里附上一些图片?
    • 我也在使用 Chrome 版本 52.0.2743.116(64 位)
    【解决方案3】:

    我相信当浏览器呈现您的网站时,它不会将 /r/n(这会导致文件 1 中的新行)视为新行,而是将 /r/n 呈现为空格(并且您使用&lt;br /&gt; 来处理新行)。

    另外,如果您想制作多个空格,请使用&amp;nbsp; 表示一个空格。

    【讨论】:

    • 似乎显示我的问题的代码让它有点好笑,因为文件 1 和文件 2 实际上是相同的。但是您猜对了,这就是在渲染时将 /r/n 转换为空格字符。我想问的是如何防止浏览器将 /r/n 转换为空格。所以这个问题仍然没有答案。
    • @sasho 很难防止这种行为,尽管您可以尝试&lt;input /&gt;&lt;\r\n input /&gt; 或将其包装在表格单元格中
    猜你喜欢
    • 2017-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-17
    • 2017-05-20
    • 1970-01-01
    • 2019-01-30
    • 2013-04-30
    相关资源
    最近更新 更多