例如:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>xhtml空格占位试验</title>
<style>
body{
font-size:12px;
font-family: Arial,Verdana,'宋体';
}
a{
color:black;
text-decoration: none;
}
a:hover{
color:red;
}
</style>
</head>
<body>
<a href="#">您好,请登录</a> <a href="#" style="color:red;">免费注册</a>
</body>
</html>
在火狐上空格 ;显示的比较大(感觉是个全角字符),在ie和chrome上显示的比较小(感觉是个半角字符)。
如果把DTD都换成html5的写法,如
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>html5空格占位试验</title>
则ff,ie,chrome显示都一样,都是比较小(感觉是个半角字符),不存在兼容性问题。
另外,如果把font-family中的‘宋体’去掉,也没有这个兼容性问题。
请问这个兼容性问题出在哪?及解决方法?
1, 
的英文全称是non-breaking space
,它和普通空格的区别能防止字之间出现断行,你可以使用多个
产生多个空格的效果,但是如果直接使用空格它会自动帮你减少到只有一个空格的效果,除非你使用<pre>
标签。
2,如果你想使用
来精确控制边距的话是不正确的,一方面你很难控制
的宽度,另一方面也会让不符表现与结构分离的思想。
3,
的大小取决于font-size
,letter-spacing
,等,就和其他字符一样,所以没有一个固定的宽度,可以被用户改变,没有可靠的方式来了解。同时就像你说的又有浏览器兼容的问题。
所以我的结论是尝试其他方式来控制间距,比如letter-spacing
,word-spacing
,margin
,padding
等属性,只在简单测试环境或者对样式精确度要求不是很高的情况下使用
这个属性
我试用了 全角空格,感觉还不错,可以看下这篇文章http://www.zhangxinxu.com/wordpress/2015/01/tips-blank-character-chinese-align/
附加:符号表 https://css-tricks.com/snippets/html/glyphs/