浏览器自动去html空格,关于html:为什么浏览器将换行符呈现为空格?

最长的时间,我想了解为什么浏览器在呈现的HTML元素之间存在换行符时在它们之间添加空白区域,例如:

HelloWorld

上面的html将输出" HelloWorld"字符串,在" Hello"和" World"之间没有空格,但是在以下示例中:

Hello

World

上面的html将输出" Hello World"字符串,在" Hello"和" World"之间有一个空格。

现在,我毫无疑问地接受到这只是它的工作方式,但令我有些烦恼的是,我总是觉得html元素之间的空格(或换行符)在那时是无关紧要的。 浏览器将html呈现给用户。

所以我的问题是,是否有人知道这种行为背后的哲学或技术原因。

谢谢。

呈现时,浏览器将多个空格字符(包括换行符)压缩为一个空格。唯一的例外是元素内,或者CSS属性white-space设置为pre或pre-wrap的元素。 (或在XHTML中,xml:space="preserve"属性。)

或white-space: pre-line;

@AndrewEvt据我所知,pre-line仍然会折叠多个空格,但换行符除外。 尽管您的评论确实使我找到了pre-wrap。

块元素之间的空白将被忽略。但是,内联元素之间的空白将转换为一个空间。原因是内联元素可能散布在父元素的常规内部文本中。

考虑以下示例:

This is my colored Hello World example

在理想情况下,您希望用户看到

This is my colored Hello World example

但是,删除两个跨度之间的空格将导致:

This is my colored HelloWorld example

但是该示例可以由作者(使用OCD编写有关HTML格式的:-)重写为:

This is my colored

Hello

World

example

如果将它与前面的示例保持一致会更好。

我遇到了同样的问题,我遇到了这个问题。 好的,解释性的答案。 如果浏览器在上例中的跨度之间需要一个空格,而不考虑新行,那就太好了。 我知道诸如Sublime之类的文本编辑器可能会出现问题,可以将其剪裁成空白,但这对我来说更有意义。 难道这不取决于文档类型(过渡,字符串等)吗? 我的意思是我们托管了许多使用相同标记的网站,但是我发现某些网站上的空白比其他网站上的空白更多。 万一doctype是原因,我会密切注意这一点。

HTML被指定为这样做:

Line breaks are also white space characters

http://www.w3.org/TR/REC-html40/struct/text.html#h-9.1

如果在两个标签之间有字符" a",则希望它被渲染。在这种情况下,两个标签之间有一个字符" n";行为类似且一致(' n'呈现为单个空格)。

浏览器在这里犯了一个错误:

http://www.w3.org/TR/html4/appendix/notes.html#h-B.3.1

SGML(请参见[ISO8879],第7.6.1节)指定必须忽略紧接在开始标签之后的换行符,也必须忽略紧接在结束标签之前的换行符。这毫无例外地适用于所有HTML元素。

不,您在这里犯了一个错误:OP实例中的换行符在结束标记之后!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值