浏览器不兼容原因及解决办法

浏览器的不兼容,大家肯定都是深恶痛绝的,往往我们只是去做修补,却忘了更重要的事情,那就是追溯根源,避免类似的不兼容再次出现。在下不才,归纳几点html编码要素,望能指点各位:

1.文字本身的大小不兼容。同样是font-size:14px的宋体文字,在不同浏览器下占的空间是不一样的,ie下实际占高16px,下留白3px,ff下实际占高17px,上留白1px,下留白3px,opera下就更不一样了。解决方案:给文字设定 line-height 。确保所有文字都有默认的 line-height 值。这点很重要,在高度上我们不能容忍1px 的差异。

2.ff下容器高度限定,即容器定义了height之后,容器边框的外形就确定了,不会被内容撑大,而ie下是会被内容撑大,高度限定失效。所以不要轻易给容器定义height。

3.还讨论内容撑破容器问题,横向上的。如果float 容器未定义宽度,ff下内容会尽可能撑开容器宽度,ie下则会优先考虑内容折行。故,内容可能撑破的浮动容器需要定义width。

小实验:有兴趣大家可以看看这段实验。在不同浏览器下分别测试以下各项代码。
   a.<div style=”border:1px solid red;height:10px”></div>  b.<div style=”border:1px solid red;width:10px”></div>

   c.<div style=”border:1px solid red;float:left”></div>        d.<div style=”border:1px solid red;overflow:hidden”></div>

上面的代码在不同浏览器中是不一样的,实验起源于对小height 值div 的运用,<div style=”height:10px;overflow:hidden”></div>,小height 值要配合overflow:hidden一起使用。实验好玩而已,想说明的是,浏览器对容器的边界解释是大不相同的,容器内容的影响结果各不相同。

4.浮动的清除,ff下不清除浮动是不行的。

纠正大家一个误区,遇到不兼容就说ff烂是不对的,其实更多时候是ie的奇怪表现让我们无所适从。以下列出ie6的种种劣迹。

5.最被痛恨的,double-margin bug。ie6下给浮动容器定义margin-left 或者margin-right 实际效果是数值的2倍。解决方案,给浮动容器定义display:inline。

6.mirrormargin bug,当外层元素内有float元素时,外层元素如定义margin-top:14px,将自动生成margin-bottom:14px。padding也会出现类似问题,都是ie6下的特产,该类bug 出现的情况较为复杂,远不只这一种出现条件,还没系统整理。解决方案:外层元素设定border 或 设定float。

引申:ff 和ie 下对容器的margin-bottom,padding-bottom的解释有时不一致,似乎与之相关。

7.吞吃现象,限于篇幅,我就不展开了。还是ie6,上下两个div,上面的div设置背景,却发现下面没有设置背景的div 也有了背景,这就是吞吃现象。对应上面的背景吞吃现象,还有滚动下边框缺失的现象。解决方案:使用zoom:1。这个zoom好象是专门为解决ie6 bug而生的。

8.注释也能产生bug~~~“多出来的一只猪。”这是前人总结这个bug使用的文案,ie6的这个bug 下,大家会在页面看到猪字出现两遍,重复的内容量因注释的多少而变。解决方案:用“<!–[if !IE]> picRotate start <![endif]–>”方法写注释。

9.<li/>里加 float <div/>,这是一个典型的,棘手的兼容问题,希望引起大家正视 ,给li 不同的属性会有不同的解释效果,ff下的解释稍可理解,ie6下的解释会让你摸不着头脑,由于问题的复杂性,将另起一文专门讨论该问题。在《ul使用心得》一文里有相关成果,却没给出问题解决的过程。

10.使用了“float:left;display:inline”的ul的奇怪表现。可以看出这句css是针对ie6下的double margin bug 而加上的display:inline,这也是我的css体系里的重要一环,在《ul使用心得》一文中有相关阐述。而这句css用在ul上会让你痛苦不堪。点到为止,这里不能多说哈。

11.img下的留白,大家看这段代码有啥问题:

<div>
<img src=”” mce_src=”” />
</div>

把div的border打开,你发现图片底部不是紧贴着容器底部的,是img后面的空白字符造成,要消除必须这样写

<div>
<img src=”” mce_src=”” /></div>

后面两个标签要紧挨着。ie7下这个bug 依然存在。解决方案:给img设定 display:block。

12.失去line-height。<div style=”line-height:20px”><img />文字</div>,很遗憾,在ie6下单行文字 line-height 效果消失了。。。,原因是<img />这个inline-block元素和inline元素写在一起了。解决方案:让img 和文字都 float起来。

引申:大家知道img 的align 有 text-top,middle,absmiddle啊什么的,你可以尝试去调整img 和文字让他们在ie和ff下能一致,你会发现怎么调都不会让你满意。索性让img 和文字都 float起来,用margin 调整。

13.链接的hover状态。a:hover img{width:300px} 我们想让鼠标hover时,链接里包含的图片宽度变化,可惜在ie6下无效,ie7、ff下有效。

14.非链接的hover状态。div:hover{} 这样的样式ie6是不认的,在ie7、ff下才有效果。

15.block化的a链接,其内套absolute层,absolute层内放置img,ie下,鼠标点击img不会有链接效果,ff、op下正常。

想不出来了,以后想到再加吧。上面的诸多问题如果你掌握了其中奥妙,90%的不兼容问题不需要另起css hack的。

16.无法彻底清除的float。如果让ul下的li具有了float属性,如何clear浮动的li呢?<ul><li class=”c”></li></ul> 或者 <ul><li><div>class=”c”></div></li></ul> 或者 <ul><li></li><div>class=”c”></div></ul> 或者 <ul><li></li></ul><div>class=”c”></div> 或者上述的组合?这个问题,我无法给出解答。下面有个例子与此相关

<!DOCTYPE html PUBLIC -//W3C//DTD XHTML 1.0 Transitional//EN http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd>

<style type=text/css>
.c{clear:both;overflow:hidden;+overflow:visible}
.bd{border:1px solid red}

ul.ex{list-style:none;}
ul.ex li{float:left;border:1px solid green;}
</style>
<ul class=ex>
<li>sfsdfsfdf</li>
<li>sfsdfsfdf</li>
</ul>
<div class=c></div>
<div class=bd style=margin-top:19px>sfsdfsfdf</div>

请在ie下 测试,仅仅将 margin-top:19px 改为margin-top:20px 你发现什么了?要素:doctype必须有,ie6、ie7下margin-top:19px还好好的,margin-top:20px 就出问题了,无法解释。。。大家还可以将 clear 层换不同的位置测试。

解决方案:给ul 属性zoom:1 (给li 加zoom:1 没用)

引申:clear层应该单独使用。也许你为了节省代码把clear属性直接放到下面的一个内容层,这样有问题,不仅仅是ff和op下失去margin效果,ie下某些margin值也会失效
<div style=”background:red;float:left;”>dd</div>
<div style=”clear:both;margin-top:18px;background:green”>ff</div>

17.ie下overflow:hidden对其下的绝对层position:absolute或者相对层position:relative无效。解决方案:给overflow:hidden加position:relative或者position:absolute。另,ie6支持overflow-x或者overflow-y的特性,ie7、ff不支持。

18.ie6下严重的bug,float元素如没定义宽度,内部如有div定义了height或zoom:1,这个div就会占满一整行,即使你给了宽度。float元素如果作为布局用或复杂的容器,都要给个宽度的。

19.ie6下的bug,绝对定位的div下包含相对定位的div,如果给内层相对定位的div高度height具体值,内层相对层将具有100%的width值,外层绝对层将被撑大。解决方案给内层相对层float属性。

20.ie6下的bug,<head></head>内有<base target=”_blank”/>的情况下,position:relative层下的float层内文字无法选中。这个bug迫使我修公用样式库。

21.终于来了个ff的缺点。width:100%这个东西在ie里用很方便,会向上逐层搜索width值,忽视浮动层的影响,ff下搜索至浮动层结束,如此,只能给中间的所有浮动层加width:100%才行,累啊。opera这点倒学乖了跟了ie。

探讨链接打开方式

一.链接打开方式
1、新窗口打开
优点:用户点链接的时候,当前浏览的内容不会被替换,不需要通过前进、后退去看自己看过的内容;
缺点:访问一会,就会产生大量窗口,占用资源。每个窗口都需要手动关闭;
2、当前窗口打开
优点:可以一直在一个窗口内看内容,不会打开很多窗口、占用太多资源。窗口只有一个,关闭容易;
缺点:当用户需要看几个页面的内容,或者需要对比着看的时候,就很麻烦。或者必须按住SHIFT点击链接,但很少人知道和使用该操作;
3、有选择的使用新窗口和当前窗口
优点:可以比较人性化的解决以上两种方式所带来的不便。不会大量增加窗口数量,同时用户也可以在多个窗口切换阅读;
缺点:用户在点某个链接时的需求未必与设计人员的想法完全一样。用户无法确定到底现在这个链接是在新窗口还是当前窗口打开,给用户造成一定的心理“压力”。 Read the rest of this entry »

【译】在网页设计中,如何使用图标来支持内容?

在做视觉设计时,如何高效地使用图标是一门学问:该使用什么样的图标?图标该放在哪里?大小如何?图标的使用是否帮助用户更好更快的理解内容,亦或是增加了他们的理解负担甚至产生误导?今天恰好看到了一篇很好的文章,可以帮助我们了解该如何使用图标来支持内容,故翻译如下:

为什么使用图标?设计就是传达信息:如果你的网站不能吸引用户,这个问题不在于你分享的信息有多重要、有多刺激。在访问一个网站的最初,大多数用户首先扫描页面来寻找视觉上看着有趣的内容,只有某些事物引起了他们的注意力,他们才真正开始阅读。图标是一个简单、有效的方式吸引用户阅读你网站上的内容。

图标起着与分段一样的心理效果:在视觉上,图标打破了内容,使之不那么让人生却。通过图标将内容划分成几个容易理解的段落和重点,这样的页面很容易阅读,在视觉上也足够有趣以维持用户的注意。因此,不要再浪费时间写那么多无人阅读的内容了,开始使用图标吧!

在本文中,我们将展示很好的例子和网页设计中使用图标来支持内容的最佳做法。

1.如何使用图标

使用图标的首要目标应该是帮助用户更有效地吸收和处理信息。一般的做法是使用大量的空白和那些能增强内容的图标。图标通过给予内容更多的实质和有效的传达,能很好地丰富内容。图标应该用来吸引用户注意信息内容,而不是削弱或取代它。

*让功能清单更有趣

 列出服务清单是有效的市场推中实用、必要的一部分,但本质上来说,清单是乏味和无聊的。在您的功能清单中使用图标将使其更具有吸引力。

280 Slides

* 吸引用户关注Web应用程序的新功能

 图标是一个视觉邀请,吸引用户去试用Web应用程序的最新、最强大的功能。图标应该捕捉用户的注意力,并引导他们到新的功能上。一旦抓住了他们的注意力,告诉他们是什么使得新功能如此伟大。

Coda

*罗列不同的应用和产品

在这种情况下,把图标想成是logo,记住logo的目标是在产品和特定的图像建立精神联系。图标应该独特而简单的:大部分的图标只有128*128像素的,因此要用最低限度的方法,用少表达更多的信息。

intridea

 

*列出您的服务并增加可读性

图标应与内容相关且设计很简单。考虑您试图表达的内容是什么并在此基础上创建图标。网站或文章的主题是什么?使用什么颜色?是什么风格?现代?经典?在视觉上,图标应与网站整体的内容和个性所传达的思想相统一。

j.Alexander Woodworking

 

2.目的和放置的位置

图标的使用让你的网站显得友好、吸引人和专业,这些表明了你注重细节,哪怕这个细节很小很小。让你的图标发挥创意:标题、工具条、功能清单都是放置图标的好地方。

一个很简单的图标能增加网站的魅力和个性。

Coffeenatic

*让用户参与到拥有超长内容的网页中

使用能概括段落大意的图标,这将更便于读者理解文章。

Rackspace

 

在文章的不同章节间使用图标,可以提供视觉注意点来划分这些章节。

Defined Clarity

*大小并不重要,即使是小图标也是有效果的

小图标提供的视觉趣味与大图标的相差无异,却不会让用户分心。确保图标容易辨识并和内容紧密相关。

Morgan Hayes

 

*把图标放置在段落的右侧

图标的放置不要局限于常规用法,把图标放在右侧比较少见,因此会更有视觉效果。但是请注意,把图标放置在右侧有时候看起来会显得凌乱。

South Creative

*改变图标的大小和位置

发挥创意!改变图标的大小和位置可以让内容更具活力和趣味。

Media Temple

 

3.选择你的风格

说到风格,它的目的是让人有深刻印象。如果你期望设计是独特的,那么可以使用新颖的图标,但图标的有效性至关重要。请记住,使用图标是为了增强内容和设计。不要简单地在iStockPhoto上购买看起来很酷的图标,而是要考虑你的网站风格。

同时,图标的匹配性同样重要。把不相匹配的图标放在一起,无论他们单个看起来有多酷,都是个明显的设计错误,非常不专业。以下是一些图标有效地结合于各自网站风格的例子。

使用浅色和很酷的3D设计的图标,提升了网站的外观和感觉。

GoodBarry

 

正如下面例子所示的,简洁是有吸引力和实用的。

CrowdSPRING

在2D图标上实用粗糙低劣的风格可以增加很多深度:

Take the walk

选择一个独特和一致的风格,可以使页面有活力且专业:

Squarespace

 

单色的图标可以帮助突出内容而不会分散注意力:

Studio 7Designs

Gist

不要仅仅因为图标看起来很酷而使用它们,选择哪些与你的风格和品牌相符合的图标:

Treemo

 

除此之外,还有很多很好的例子,限于篇幅,这里就不一一列举了。如果大家有兴趣,可以查看原文How to use icons to support content in Web design 的第四部分-Additional Examples ^_^

报告:中美用户搜索习惯对比

UCD翻译小组的三位同学齐心协力,将Enquiro Research的这篇报告有选择性地翻译了一部分,我将其整理成一份PDF文档,共分成四个部分,与大家共享。

第一部分:背景

• 50个中国学生
• 5个任务的随机分配
• 年龄介于18和26之间
• 狂热的互联网用户
• 主要语言是汉语
• 英语口语水平最高的是ESL二年级
• 对北美文化的接触有限。

第二部分:现象

• 谷歌用户的视线多数集中在头3条结果,而且超过70%的点击是在头2条结果。
• 百度用户的点击和视线都更加分散,少于45%的点击是在头3条结果上,用户似乎更倾向于扫描整个结果页面。
• 在后续访谈中,用户100%表示,百度给他们更好的体验。
• 百度用户更显著地频繁地来往于搜索结果页和搜索结果中的网页,用户似乎在利用该搜索结果页评估相关性,而非去看各条结果的内容。

第三部分:推论

• 中国消费者可能比美国消费者更细致……他们可能更愿意花时间比较一下其他他们认可的网站的搜索结果。
• 中国用户从多个SERP链接打开多个窗口,然后把所有候选项都下载到桌面,并对这些页面进行比较。

第四部分:交互习惯比较

• 在中文中,其最大的难度在于中文单字的含义受周围的单字影响,并且一个单字可以代表一个概念、一个单词,或者单词的一部分。
• 中国用户在一个页面上看到的更多。
• 中国搜索用户在最开始的交互过程中观察的是一个页面的更多空间,而北美用户是集中于左上角。
• 很多用户只输入开始几个汉字而不是更长的短语。然后他们使用页面下面给出的推荐关键词来提炼他们的查询条件。这种方式比传统键盘方式快很多。

中美用户搜索习惯对比

网页一屏有多大?

网站设计时,有一个最常用的指导性原则:页面长度原则上不超过3屏,宽度不超过1屏。这个原则明显是从用户的体验出发,特别是宽度不超过一屏,其最基本的表现是浏览器不出现横向滚动条,这几乎是目前的设计准则。那么这里的一屏到底是多大呢?

普通用户通常浏览网页时,其浏览网页的有效面积会受到下面几个方面的影响:

  1. 显示器的分辨率这个由科技发展和用户购买力及喜好决定,其数据取决于统计。
  2. 操作系统毫无疑问目前是Windows的天下,其中WindowsXP占绝大多数。
  3. 网页浏览器IE依旧份额最高,但是Firefox、Opera和Safari等也有一定市场。
  4. 个人定制主要是用户定制操作系统的样式、操作系统任务栏是否隐藏和浏览器的样式,但是总体上这部分应该属于高级用户,绝大部分用户依旧会使用操作系统和浏览器的默认样式。

下面是关于浏览器和屏幕分辨率的统计数据:
1
      W3Counter于2006.11.12发布的全球统计数据

2
    国内某知名站点2006年10月份的数据

由上面的数据可以得出:

  1. 基本上用户分辨率都在800×600以上,绝大部分都在1024×768以上,从全球情况来看,800×600的分辨率会越来越少。
  2. 国内浏览器依旧是IE6的天下,这将会持续较长的时间。从全球市场来看,国内的Firefox2.0和IE7会逐步增长,特别当IE7的中文版推出和Windows自动更新的推广开始以及随Vista上市,IE7增长会更快。

所以计算一屏大小应基于以下原则:

  1. 一屏指绝大部分用户的浏览器显示网页的有效可视区域。
  2. 一屏的计算环境是Windows XP和浏览器均处于默认样式。
  3. 由于IE无论是否超过一屏都存在纵向滚动条的位置,Firefox和Opera是在页面超过一屏的时候出现纵向滚动条,且浏览绝大部分网页都有纵向滚动条的存在,所以一屏大小的计算都基于浏览器有纵向滚动条的状态下。
  4. 由于Firefox2.0在只浏览一个网页时不出现多窗口的控制栏,而其它的多窗口浏览器都出现多窗口控制栏且使用时都会同时浏览多个网页,所以一屏大小在Firefox中指多窗口的控制栏存在时。

下面是基于上面的原则得到常用浏览器和分辨率下的的数据结果:

有效可视区域(单位:px)
屏幕
800 600 1024 768 1280 1024
IE6.0 779(+21) 432(+168) 1003(+21) 600(+168) 1259(+21) 856(+168)
IE7.0 779(+21) 452(+148) 1003(+21) 620(+148) 1259(+21) 876(+148)
Firefox2.0 783(+17) 417(+183) 1007(+17) 585(+183) 1263(+17) 841(+183)
Opera9.0 781(+19) 461(+139) 1005(+19) 629(+139) 1261(+19) 885(+139)

关于上面数据的解释和一些其他事实:

  1. 在800×600分辨率和Windows XP下定制Windows的经典样式IE6的有效可视区域是780×445,Windows98、Windows 2000和Windows2003均采用经典样式切IE5.0、IE5.5、IE6.0的布局上相似,所以相同分辨率下应该比Windows XP默认的样式要大。
  2. 知道浏览器型号和屏幕的分辨率能够很容易的推算出可视区域面积,比如1024×768下IE7.0的可视面积是(1024-21)×(1024-148)

综合上面所有的数据,结论如下:

  1. 最保守而最有兼容性的一屏大小是:779×432
  2. 最广泛的一屏大小是:1003×600
  3. 适合目前国内的情况,一屏大小是779×600

谷歌到底是谷歌,惊诧于Google宣传创意!







/ M- G; Q” ?0 R5 F

About Me

一个11年网龄的25岁小伙子。
2010终成夙愿
因为地震(5.12)未念完大学.
误打误撞进入了游戏圈。
关注范围包括:互联网产品,市场,运营,广告。
至今还一事无成。

搜索