请考虑以下代码:
<u> test </u>
这只是测试+测试后的空间而不是之前的空间。为什么这样,我怎样才能让它在第一个空间下划线?
答案 0 :(得分:8)
答案 1 :(得分:2)
这是因为所有空格都会折叠成一个空格。尝试删除<u>
标记前面的任何空格。像这样:
Some<span style='text-decoration: underline;'> underlined </span>text<br>
和示范:http://jsfiddle.net/8J2ZE/
你应该使用css来实现样式,而不是标记
答案 2 :(得分:1)
行为取决于浏览器(Chrome在单词后面加下划线)并且似乎没有在规范中规定。元素内容被解析并存储到包含空格的DOM中,但它可能不会参与下划线等。
使用无间隔空格而不是空格往往会导致下划线,但它会改变内容并产生副作用(例如,不间断空格会阻止前后的换行)。
设置white-space: pre
似乎会导致下划线,但在未来的浏览器中,它没有合理的理由,也不能保证它会出现。 (请注意,将空格折叠到单个空间与渲染单个空格的问题完全不同。)
结论取决于背景和想要这种强调的原因。也许您可以使用底部边框(具有明确定义的渲染规则)而不是下划线 - 请注意边框位于较低位置,这可能适合也可能不适合(另一方面,您可以设置颜色,厚度和边框的样式)。如,
<span style="border-bottom: solid 1px"> test </span>