首页 > 如何解决html中 大小不同的兼容性问题?

如何解决html中 大小不同的兼容性问题?

例如:

<!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>&nbsp;&nbsp;<a href="#" style="color:red;">免费注册</a>
</body>
</html>

在火狐上空格&nbsp;显示的比较大(感觉是个全角字符),在ie和chrome上显示的比较小(感觉是个半角字符)。

如果把DTD都换成html5的写法,如

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>html5空格占位试验</title>

则ff,ie,chrome显示都一样,都是比较小(感觉是个半角字符),不存在兼容性问题。

另外,如果把font-family中的‘宋体’去掉,也没有这个兼容性问题。

请问这个兼容性问题出在哪?及解决方法?


1,&nbsp的英文全称是non-breaking space,它和普通空格的区别能防止字之间出现断行,你可以使用多个&nbsp;产生多个空格的效果,但是如果直接使用空格它会自动帮你减少到只有一个空格的效果,除非你使用<pre>标签。
2,如果你想使用&nbsp;来精确控制边距的话是不正确的,一方面你很难控制 &nbsp;的宽度,另一方面也会让不符表现与结构分离的思想。
3,&nbsp;的大小取决于font-size,letter-spacing,等,就和其他字符一样,所以没有一个固定的宽度,可以被用户改变,没有可靠的方式来了解。同时就像你说的又有浏览器兼容的问题。

所以我的结论是尝试其他方式来控制间距,比如letter-spacing,word-spacing,margin,padding等属性,只在简单测试环境或者对样式精确度要求不是很高的情况下使用&nbsp;这个属性


我试用了 全角空格,感觉还不错,可以看下这篇文章http://www.zhangxinxu.com/wordpress/2015/01/tips-blank-character-chinese-align/
附加:符号表 https://css-tricks.com/snippets/html/glyphs/

【热门文章】
【热门文章】