标准化显示运行在 Firefox3 和 Internet Explorer 7 上的 Web 门户

本文探讨了在Firefox和Internet Explorer中Web门户显示不一致的问题,并介绍了如何使用em值来标准化显示,确保跨浏览器的一致性。文章还提供了实用技巧,帮助开发者更好地利用em值进行内容开发。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Firefox3 和 Internet Explorer 7看上去有什么不同吗?如何能够最好地使这些浏览器表现出一致的行为?应该使用像素还是 em 值?developerWorks 专栏作家Judith M. Myerson 向您展示了如何标准化显示运行在 Firefox 和 IE 中的 Web门户。她提供了一些技巧和提示,可以帮助您使用 em 值简化门户内容的开发,包括 Asynchronous JavaScript + XML(Ajax) 应用程序。

简介

在早期的 developerWorks 文章(从 参考资料获得链接)中,我讨论了如何监视网络冗余和故障转移,并创建程序解决网络问题;在开发 Ajax应用程序时应避开哪些陷阱,包括一些优化浏览器差异的有用解决方案;提供了一些可以加速 Ajax应用程序的解决方案;此外,还展示了一些可以加强应用程序的工具,从而改进 Ajax 应用程序中的安全问题。

在本文中,我将讨论在 IE 7 和 Firefox 中运行 Web 门户为何显示不同的结果。IE 7 提供了可以调整大小的默认字体,而 Firefox 3可以让您设置默认字体而不需要进行重新调整。要使门户在两个浏览器中使用相同的方式显示字体和表,需要使用 em调整它们的大小。在本文中,我将展示根据对象在屏幕上的可见显示,为何 em 对于可设置的基本字体是相对的,而 px 对于基本字体是绝对的。我还提供了一些技巧和提示,可以帮助您使用 em 值简化 Web 门户内容的开发,包括 Ajax 应用程序。

问题:像素

人们查看文本段落的时间要多于查看图像的时间。人的眼睛需要随这些段落移动,但只有在美术馆观看图像时才需要认真注视图像。由于人眼需要随着文本移动,那么如果浏览器使用像素定义字体的绝对大小,人们将注意到 IE 7 和 Firefox 中运行的 Web页面在显示文本时是不一样的。如果这种差异十分明显,就会造成问题。

此外,如果放大像素页面,但文本大小不能够相应地变大,就会造成各个文本字段彼此覆盖。因此整体布局变得一团糟!所有这一切的罪魁祸首就是像素(也就是圆点)。它们不能够进行扩展并且是固定大小的。

答案:M 相对性

要处理大小问题,我将使用 em 方法,它始终相对地调整大小和进行扩展。我使用 em 作为父元素字体大小的百分比。

如清单 1 所示,最上面的 <div> 层使用计算过的字体大小 16px 作为父元素。第二个 <div> 层显示子字体大小被修改为 0.75em。通过将 16 乘以 0.75,将得到计算后的子字体大小 12px。在第三个 <dev> 层中,第二层的子字体大小变为新的父字体大小。将这个父字体乘以 0.75 得到一个较小的字体大小 9px。


清单 1. 父字体和子字体大小

				<body>

<div style="font-size:16px;" >  
    <div style="font-size:0.75 em;"> 
        <div style="font-size:0.75 em;">  
       </div>
    </div>
</div>

</body>

除了字体外,可以在填充、空白、边框以及任何可以设置大小的地方使用 em 值。

什么是字体大小?

IE 7 和 Firefox 3 中的默认字体大小是 16px,它等于 1 em。IE 将这种字体大小表示为 “中等大小” 的文本。通过为正文选择器(body selector,也称为块级元素)的 font-size 属性分配 62.5% 的值可以减小这个字体大小,如清单 2 所示。


清单 2. 减小字体大小

				<style type="text/css">
body {font-size: 62.5%}
</style>

这种分配将 16px 减小到 10px。减小了的字体大小仍然是 1 em。在 Firefox3 中,您可以在更高的分辨率屏幕上将默认大小修改为更大的值。表 1 展示了三种屏幕分辨率使用的推荐字体大小。


表 1. 更高屏幕分辨率使用的字体大小

字体大小屏幕分辨率
20px1280x960
22px1400x1050
28px1792x1344

所有设置可以转换为几乎相同的物理大小,即 1024x758 分辨率下的 16px 字体大小。如果使用的是该表以外的屏幕分辨率,那么使用下面的等式计算适合您的字体大小:

屏幕分辨率的宽度/64 = 字体大小

例如,

1280/64 = 20px

设计文档

考虑包含两列的文档布局 — 主要内容和一个侧边栏。文档补充了一个导航菜单作为页眉,使用公司信息作为页脚。


清单 3. 文档布局

				<body>
<div id="navigation"> ... </div>
<div id="main_content"< ... </div>
<div id="side_bar""< ... </div>
<div id="footer"< ... </div>
</body>

假设正文选择器的默认基本字体 16px 变为原来的 62.5%,如清单 4 所示。


清单 4. 文档样式

				<style>

body {font-size: 62.5%}

#navigation {font-size:1em}
#main_content {font-size:1.2em}
#side_bar {font-size:1em}
#footer {font-size:0.9em}
</style>
                        

在产生的文档中,导航和侧边栏中的文本使用 10px 显示,正文使用 12px 显示,而页脚使用 9px 显示。

计算 em 等效值

表 2 中的 em 值假设浏览器默认字体大小是 16px。它还假设在正文选择器中,字体大小属性的值被设置为 1em。


表 2. Em 等效值>

字体大小em 等效值使用 em 表示的 1px
11px0.6890.091
12px0.7500.083
13px0.8140.077
14px0.8750.071
15px0.9380.067
16px1.0000.063
17px1.0640.059
18px1.1250.056
19px1.1880.053
20px1.2500.050

要获得一个 em 等效值,执行下面的操作:

(子字体大小/父字体大小)= 子 em

例如,12px/16px = .75em

要获得 1 像素的等量 em,执行下面的计算:

(1/字体大小) x 所需像素 = em 等效值

例如,(1/14px) x 1px = .071 em

770px 的 em 等效值是多少?

清单 5 显示正文选择器的字体大小属性为 1 em。假设该值与浏览器默认字体大小 16px 是等效的。因此,要计算 770px 的 em 等效值,使用以下等式:

(1px/16px)x 770px = 48.125em

将结果应用到 div 选择器的宽度属性。


清单 5. 使用 em 为单位设置宽度

				body{
font-size:1em;
text-align:center;
}

div{
width:48.125em;
margin:0 auto;
}

这些代码表明 div 选择器继承了一个属性,以将文本居中。该元素将根据文本的计算宽度的大小,自动将相等的 em 值分配给左边和右边的空白。

使用 Wrap

现在,我将使用 “wrap” 作为 ID 的名称,用以识别最高的 <div> 层上的控制层,如清单 6 所示。


清单 6. 识别控制层

				<body>
<div id="wrap">
. . .
</div>
</body>

我希望使用 1000px 的宽度,以便轻松地应用到更高分辨率的屏幕中。1000px 的 em 表示是多少?让我们看一看。

我知道父 (<body>) 有一个默认字体大小 16px。子层 (<div id="wrap">) 将继承该值。我可以使用下面的数学等式计算 1px 的 em 表示:

(1 / 父字体大小) x 所需的像素值 = em 值

在这个式子中代入值,得到:

(1/16px) x 1000 = .0625em x 1000 = 62.50em

现在,看一下清单 7 的三个选择器。它们是 div#wrapph1


清单 7. 三个选择器

				<style>

body {font-size: 1 em}

div#wrap{
width: 62.50em;
margin: 1.5em auto;
border: 0.063em solid #ccc;
background: #fff;

}

p{
font-size: 0.750em;
line-height: 1.5em;
margin: 1.5em;
}

h1{
font-size: 1.125em;
}

</style>

该清单表示,具有相同 em 值的字体大小差异是由于不同子选择器中的分层布局造成的。其中一个选择器中的子字体大小,将成为处于选择器集合中较低层次的另一个选择器的父字体大小。这与清单 2 不同,后者显示了具有相同 em 值的字体大小差异。

div#wrap 选择器

div#wrap 选择器中,我将宽度设为 62.50 ems(1000px)并自动填充左右空白把层置于正中。我使用 .063(1px)的灰色边框和白色背景,并将文本设为左对齐。

p 选择器

该段落从其父 <div id="wrap"> 继承了 1em(16px)的字体大小。我已经知道 1px 是 0.0625em。我将使用相同的算法获得 12 px 的 em 值:

(1/16px) x 12px = 0.750em

接下来,将把结果应用到 p 选择器的 font-size 属性中,如清单 8 所示。


清单 8. 应用 font-size 属性

				p{
font-size: 0.750em;
}

要计算出基本行距所需的行高和 18px 的空白,执行下面的计算:

(18px /12px) = 1.5em

这个等式表明行高和空白为字体大小的 1.5 倍。

行距

在旧式印刷中,行距表示在文本行下面插入一些引导行。它被表示为 line-height,它增加了每行文本上方和下方的空间,而不是在下面添加空间。

h1 选择器

<h1> 从其父 <div id="wrap"> 继承了一个 1em(16px)字体大小。因此,我已经从前面知道了 1px 的 em 值:0.0625em。要将 <h1> 设置为 18px 的字体大小,执行下面的操作:

(1/ 16) x 18 = .0625 x 18 = 1.125em

使用 em 计算图像大小

在调整文本大小时,假设图像的大小是基本行距倍数。清单 9 展示了高度和宽度为 90px(18px x 5)的图像。


清单 9. 调整图像的大小

				<body>
<p>
<img src="90.jpg" width="90px", height ="90x"alt="Colorado Pier" /> 
. . .
</p>
</body>

该清单表示图像是段落(父元素)的子元素,因此图像继承了 12px 的字体大小。因此,要使用 em 计算图像的宽度和高度,我使用下面的等式:

(1/12) x 90 = 7.5em

该图像在右边和底部分别有 18px 的空白,并且浮动在段落文本的左侧。我知道 12px/18px 对于父段落是 1.5 em,如清单 10 所示。


清单 10. 图像大小属性

				<style>
p img{
width: 7.5em;
height: 7.5em;
margin: 0 1.5em 1.5em 0;
float: left;
}

</style>

避免继承缩小

假设父字体大小为 12px,如果这样的话,10px 的 em 值为 0.833。然后将这个结果添加到字体大小属性,如清单 11 所示。


清单 11. 继承缩小示例

				<style>

#main_content LI {font-size:0.833em}

</style>
                        

这表示所有正文列表项应当使用 10px 显示。我使用同一个等式实现这一点:

10 / 12 = 0.833

如果列表之间互相包含会发生什么情况?它将变小。这是因为 #main_content div 中的列表项应当是其父字体大小的 0.833 倍。要防止出现继承缩小现象,使用下面的选择器集:

LI LI {font-size:1em}

这表示在另一个列表项中的的任何列表项应当和其父元素(另一个列表项)保持一致。您应当使用完整的子选择集合,以防止在开发期间造成混乱:LI LI, LI P, TD P, BLOCKQUOTE P {font-size:1em}

对表单和表格需要执行类似的工作,以使表单控件和表单元格继承合适的大小:INPUT, SELECT, TH, TD {font-size:1em}

重新查看 p 选择器

现在,我将修改清单 2 中的元素,避免在父列表包含一个子列表时段落和列表的字体大小缩小。首先,从清单 2 的 p 选择器中去除 font-size 属性。然后,对 p li li 的子选择器集使用相同的字体大小,如清单 12 所示。


清单 12. 继承缩小示例

				<style>


body {font-size: 1 em}

div#wrap{
width: 62.50em;
margin: 1.5em auto;
border: 0.063em solid #ccc;
background: #fff;

}

p li li {font size: 0.750 em}

p{
line-height: 1.5em;
margin: 1.5em;
}

h1{
font-size: 1.125em;
}


</style>

结束语

您需要让由开发人员、测试人员和潜在用户组成的团队标准化 Web 门户在 IE 7 和 Firefox3上的显示,这里提供的方法是在所有设计中使用 em 代替像素。要使浏览器表现出一致的行为,必须使用 em 值提前计划 Web门户的创建、测试和显示。在计划中包括一个 em 计算器,并对它进行开发,以将其集成到浏览器甚至 Web设计应用程序中。解决了这些问题后,就可以更加轻松地标准化在 Ajax 应用程序上的显示。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值