(2)《Head First HTML与CSS》学习笔记---img与基于标准的HTML5

1.浏览器处理图像的过程:

    1.服务器获取文件,显示出文本结构,以及预留默认的大小给<img>(如果该<img>有width-1值和height-1值,则根据这个值提前设好页面——也就是留下一个符合该值的图片位置);

    2.获取一个图像的所有信息,包括内容、大小、及其分辨率:width-2值和height-2值(如果获取图像信息失败,则每个浏览器有每个浏览器的不同处理办法,比如加载一个破损的图片示意——但无论是什么浏览器,此时如果<img>中有alt值,则加载该值替代图片,然后对这个图像的加载操作终止)。

    3.把图片按width-2、height-2的值加载到页面相应位置(如果提前设了值,就按width-1、height-1加载该图片到相应位置);

    4.如果页面布局符合图片分辨率,直接加载。否则改变页面布局使其符合图片分辨率,再加载。

    5.重复2、3、4,直到全部加载完毕。

一般浏览器会同时请求多个图像,网速快的我们是看不到那种“一个图一个图地出现”的情况的(网速慢的时候,我们会看到又一个加载中的黑色框框,那就是为图片预留的位置,由width和height决定其大小);有时候我们会看到一些页面是没这种框框的,这回导致用户看文字的时候突然加载上一个图片后文字被挤下去了,体验很不好,这种就是没写width和height的了。

不管你有没有在代码中说明图像有多大(用width、height),浏览器在获取图像的时候就需要获取图像的大小了,之后再根据你设的width、height来调整图片大小放入页面,此时页面布局如果不符合就要重设,符合就直接放(这也是为什么建议图片放缩略图,然后再设置一个指向该图片的高清图片链接的原因——这样可以既让用户更快看到图像(虽然质量差点),又可以给用户选择看高清图的方式(想看就点改图片的高清链接,通常是链接就是缩略图本身))。

 

 

2.JPEG、PNG、GIF

JPEG:

1.适合连续色调图像——因为可以表达多达1600万种不同颜色的图像。

2.不适合有透明需求的图像——因为不支持透明度。

3.不适合需要高画质的情况——因为这是一种“有损”格式,这种有损压缩会使图像数据质量下降,并且在编辑和重新保存JPG格式图像时,这种下降损失会累积。

4.适合Web页面的普通图片——因为文件小,可以高效显示。

5.不适合动画——因为不支持动画。

PNG

1.适合单色图像、logo、图像里的小文本、线条构成的图像——原因不知道,下面GIF的第一点也有这个问题,其中一点可能是因为可以表达的颜色只有上百万种。按需求的颜色种类多与少又可分为:PNG-8、PNG-24和PNG-32。

2.适合有透明需求的图像——允许图像设置为透明(以此使图像下面的东西可以显示出来),且可以同时有多种透明颜色。

3.适合高清的情况——其会压缩文件来缩小大小,但却是一种无损的压缩。

4.适合Web页面的logo、单色图等(详见1)——表现的效果在某些图片上强于JPEG。

4.不适合动画——因为不支持动画。

GIF

1.适合单色图像、logo、图像里的小文本、线条构成的图像——看起来和PNG一样,但是其能表示的颜色最多只有256种。

2.适合部分需求透明的图像——只允许设置一种颜色为透明。

3.适合高清的情况——也是一种无损的压缩。

4.适合Web页面的logo、单色图等(详见1)——表现的效果在某些图片上强于JPEG。

5.适合动画——因为支持动画。

 

JPEG是最小的,PNG的大小根据颜色数的多少有时大于GIF,有时小于GIF。

总结:

1.以文件小为目标时:

    1.当表达的颜色很多时(超过几百万),用JPEG。

    2.当表达的颜色不是很多时(百万左右)——需要透明,用PNG。

                                                        ——不需要透明,用JPEG。

    3.当表达的颜色很少时(比如单色图、logo、几何图形等颜色只需要几种、十几种、上百种即可的图):

       ——不需要透明——需要高画质——Photoshop测试PNG和GIF哪个加载时间短用哪个。

                           ——不需要高画质,用JPEG

       ——需要透明——需要很多颜色透明,用PNG。

                        ——只需要一种颜色透明,Photoshop测试PNG和GIF哪个加载时间短用哪个。

    4.当需要动画时——GIF。

2.以表达效果为目标:

    1.单色图、logo、线条图用PNG。

    2.动画用GIF。

    3.多色图用JPEG。

3.均衡的考虑时:

利用photoshop测试各种格式下的加载时间,然后根据需求优先级决定。

 

3.关于logo等图片的透明度和ps中的蒙版、杂边。

“因为我允许将多种颜色设为透明,所以透明区的边缘是平滑的”这句话是什么意思呢?我的理解是,边缘是否平滑和可变透明的颜色多少有关,于是百度了一下,找到了这篇文章:关于gif图片(或png8)杂边锯齿的问题,这篇文章中很好的回答了透明颜色的多少与边缘是否平滑有关、以及与ps中的蒙版(或者说杂色)的关系——因为边缘平滑过渡的效果就是依靠透明颜色来实现的。在文字或图片周围用接近背景(指图片或文字要放的区域的背景)的半透明颜色填充,从而达到整体视觉的颜色平滑过度。由于GIF是只允许一种颜色设为透明,所以如果你的边缘过度效果是通过多种透明色在ps中构造的,却保存成只允许一种透明色的格式,多余的透明色就会被保存成白色,就照成了整体视觉上的杂边锯齿。从这点看,GIF的表达效果是逊于PNG的。(这是自己简化后的解释,详细的就在上面提到的文章里。)

为什么不直接设置图像的背景色为某种颜色,让其与web页面的颜色一致,而要大费周章用ps的蒙版(杂色)去修改图片的锯齿问题呢?

可以这么做,但有一个缺点:如果web页面还有其它东西要透过logo的透明背景显示出来,你设为单色就看不到了(比如有字,你用绿色就把那一块都变成绿色了,不管是什么色的字都看不到了。)

 

4.<img>的作用是,浏览器显示页面时,图像会取代该元素——由于HTML页面是纯文本,所以图像绝对无法直接作为页面的一部分,它是单独存在的。这种“替换”的效果,到后面与一种被称为替换元素的称呼有关联,以后再说

 

5.<img>的width、height属性看上去像是用来表现效果?

这取决于你如何使用这些属性。如果你把图像宽度和高度设置为正确的尺寸,那么她只是提供了信息——如果你是用来让浏览器提前布局,那就是表现了(详见本文的1)。

 

6.《Head First HTML与CSS》的排版有点问题,比如P200页的Internet Explorer这两个单词之间的距离太大了...一开始我还以为有什么特别意思。

 

 

基于标准的HTML5

 

1.建立“工业标准”级别的HTML,会使页面加载更快、更好的结合CSS(CSS能更好的工作意味着在不同的浏览器中显示的差异会更小)、能随着标准发展稳步走向未来:

如果能确保我们的页面与最新标准保持一致,在标准发展的过程中我们就不用做那么多修改;

有太多不同的浏览器以及浏览器版本,所以如果HTML中有错误,我们的页面在不同浏览器上显示时肯定会不一样。用CSS为HTML增加表现效果时,如果HTML有问题,则这些差别甚至会更严重。

 

2.对于HTML5来说,语言的新版本确实会带来成长的烦恼,因为所有人都得跟上最新的标准。不过HTML5有所简化,你能更容易地告诉我你在使用哪个版本的HTML。HTML5还明确指出了Web页面中可能出现的很多错误,所以浏览器能更一致地处理这些错误,就不会出现这种尴尬的情况:你的页面在一个浏览器上看起来很棒,但在另一个浏览器上可就不怎么样了。

 

3.<a>这是一个正常的HTML元素,而<!..>多了一个感叹号,说明了这是个与众不同的东西,不是元素了,比如注释的<!--.....-->和<!doctype html>

 

4.<meta>中声明的utf-8和保存文件时选的utf-8是不一样的作用,详见(1)《Head First HTML与CSS》学习笔记---HTML基本概念的“HTML的基本概念”的5.

 

5.HTML5与HTML4.01相比有哪些大的改进?

 

   1.提供了一些新元素和属性,可以帮你编写更好、更酷(比如<video>)的页面。

 

   2.有很多新特性,允许开发人员用HTML5创建web应用,而不止于之前的静态页面。

 

   3.规范性更强,更健壮了。现在的规范会记录开发人员常犯的错误,还会帮助浏览器了解如何处理这些错误。

 

posted on 2017-11-02 10:39  wuduojia  阅读(198)  评论(0编辑  收藏  举报

导航