HTML图片概述

“HTML 图片”更正确的称呼应该为“Web 图片”,它可以增强 Web 的表现力,能更直观地表示网页信息和展现文字不能表现的内容。Web可用的图像格式非常的多,但从图片的图像质量、传输体积、浏览器支持等情况考虑,通常选用的有以下几种格式(其中 PNG、JPG/JPEG 和 GIF 为最为常用的 Web 图片格式):

PNG
基本描述:便携式网络图形(Portable Network Graphics)。是一种无损压缩的位图片形格式,其设计目的是试图替代GIF和TIFF文件格式,同时增加一些GIF文件格式所不具备的特性。
优点:图像本身体积优化得比较不错,是一种无损的图像格式,所以图像质量比较高。支持透明通道,可以呈现不规则形状的图像。
缺点:这种格式真的没有什么缺点,但是通过对比JPG/JPEG和GIF来说,它的传输体积要大一些,而且它是不能被常规手段压缩的,只能通过图形制作软件来减少颜色数来到达压缩的效果。
应用:主要用于呈现一些网页内对清晰度要求较高的图标、彩色图形按钮、网站Logo等。
JPG/JPEG
基本描述:联合照片专家组(Joint Photographic Expert Group)。名称虽然奇怪,但它却是互联网发展至今最常见的一种图像格式。是一种有损压缩格式,能够将图像压缩在很小的储存空间,图像中重复或不重要的资料会被丢失。大家在网页中看到的照片、相机拍摄基本上都是这种格式的图片。
优点:市面上的浏览器100%支持,可高度压缩。一张10MB的图片可以轻松压缩到几百KB的大小。
缺点:相对于PNG图片来说,未经压缩的JPG/JPEG原图体积会更大。高度压缩后图像会比较模糊。不支持透明通道,只能呈现为规则的矩形图片。
应用:网页中的非图标内容基本都可以用这种格式来呈现,包括各类商品图片、人像、设计图、软件截图等。
GIF
基本描述:图形交换格式(Graphics Interchange Format)。谈到这种格式,大家第一个想到的一定是“动态图片”,但是需要弄清楚的是可以作为动态图片的不止GIF这种格式,很多图形格式都能生成动态图,之所以这种格式出现的动态图最多纯粹是因为这种图像格式的体积小,归结到底是因为这种图像格式的色彩少,它最多可以呈现256种颜色。GIF文件的数据,是一种基于LZW算法的连续色调的无损压缩格式。其压缩率一般在50%左右,它不属于任何应用程序。几乎所有相关软件都支持它,公共领域有大量的软件在使用gif图像文件。
优点:体积小。内部采用“隔行存放”的方式渲染,在页面上成像速度更快,通过这种方式也能模拟出透明通道的效果。
缺点:色彩数较少,图像质量通常不会太高,在表现复杂图像时效果不理想。
应用:用于呈现单双色图标或一些色彩数较少的图形,可用于制作动态图。
ICO
基本描述:Windows 的图标文件格式(icon)。图标文件可以存储单个图案、多尺寸、多色板的图标文件。一个图标实际上是多张不同格式的图片的集合体,并且还包含了一定的透明区域。
优点:体积小,能模拟透明通道效果。可以自定义 Windows 操作系统的文件夹图标,增加文件的可辨识度。
缺点:应用范围较小,一般只作为文件夹图标、浏览器标签页或收藏夹图标使用,在其它系统上需要借助第三方软件才能查看。
应用:ico 可以作为浏览器标签页的图标,还可以在收藏夹内收藏内容的前段显示小图标。
SVG
基本描述:可缩放矢量图形(Scalable Vector Graphics)。它不能被普通的图像软件打开,因为它是基于XML的(Extensible Markup Language,可扩展标记语言)。一种开放标准的矢量图形语言,可任意放大图形显示,边缘异常清晰,文字在SVG图像中保留可编辑和可搜寻的状态,没有字体的限制,生成的文件很小,下载很快,十分适合用于设计高分辨率的Web图形页面。可以用一些主流的代码编辑器打开,并修改内部的代码从而生成不一样的图像。
优点:体积很小,简单图案的图像的传输体积甚至可以无视,而且它还可以作为HTML代码的一部分并不需要引用外部文件。由于是“矢量图”,所以图形的缩放并不会影响其清晰度,16*16和1600*1600在成像质量上没有区别。可以通过修改XML代码对图像进行编辑,不依赖图像制作软件。
缺点:只支持版本较新的主流浏览器。SVG是基于XML代码生成的,制作图案丰富的图像成本巨大,需要相关专业的知识,不能被常规的图像编辑软件打开和编辑(包括Photoshop)。
应用:由于传输体积很小、矢量特性和可被编辑的特点,现已被世界各知名网站大量的使用,用于呈现一些简单图案的背景,精致的图标按钮等。
WebP
基本描述:WebP是一种同时提供了有损压缩与无损压缩(可逆压缩)的图片文件格式。它是Google新推出的影像技术,它可让网页图档有效进行压缩,同时又不影响图片格式兼容与实际清晰度,进而让整体网页下载速度加快。
优点:WebP的压缩率要高于PNG原图压缩率,同样支持有损与无损压缩。也就是说PNG的优点WebP都具有,而且不存在PNG在颜色位数为8bit的时候出现锯齿的问题。
缺点:由于是一种比较新的技术,老版本浏览器是不支持的,就是该图像的制作商Google也是在其浏览器Chrome v32之后才开始全面支持的,而苹果公司的桌面浏览器和手机浏览器到目前为止仍然全不支持(因为存在竞争关系)。
应用:这种格式应该是除比较特殊的SVG以外最好的格式了,它的应用范围基本没有限制。这种格式在很多定制化开发的网站中都已经在大量使用了。
BMP
基本描述:位图(Bit MaP)。它是一种与硬件设备无关的图像文件格式,使用非常广。它采用位映射存储格式,除了图像深度可选以外,不采用其他任何压缩,因此,BMP文件所占用的空间很大。由于BMP文件格式是Windows环境中交换与图有关的数据的一种标准,因此在Windows环境中运行的图形图像软件都支持BMP图像格式
优点:BMP颜色深度范围大,支持1位到24位颜色深度。设备无关,不存在兼容性问题。
缺点:体积过于庞大,一张电脑壁纸图片的体积通常都是好几MB,在10MB以上的也不在少数,非常不合适网络传播。
应用:用于呈现一些精度要求较高的工程图、设计稿、电脑壁纸等。

当然,这些并不是所有的图片格式,除此之外还有 TIF、PCX、TGA、EXIF、FPX、PSD、CDR、PCD、DXF、UFO、EPS、AI、RAW、WMF 等图片或图形文稿格式,但从 Web 图片应用角度来说,我们只需要能识别并运用上文列表中所示格式即可。

HTML图片显示

要在HTML显示图片是通过<img>引入外部图片实现的,“src”是图片的必要属性,通过将该属性的值设置为硬盘或服务器地址上图片的绝对路径或HTML页面和图片间的相对路径即可显示指定图片。

运行效果:

<img>的“alt”和“title”属性

由于网络的不稳定、部分用户的带宽较小或图片体积较大等原因,有的时候网页上的图片不能马上显示出来(路径错误会导致图片不能显示),这个时候一个比较稳妥的做法,就是给予一定的文字说明,这个时候就需要用到<img>标签内的“alt”属性,只需将“alt”的属性值设为需要提示的文本信息即可。

运行效果:

在对于需要进行说明的图片,或者单纯是为了提升用户体验,我有的时候需要为图片进行一定的简单描述,在特定的条件下,在图片旁边写上一串文本,既影响了布局,又显得突兀,这个时候我们就需要用到<img>标签内的“title”属性.

运行效果:

在这里需要说明的是,“title”这个属性,最常用的地方虽然是<img>标签,但它在其它几乎任何标签上都可以使用,包括文本标签<span>。现代的网页设计风格趋势是简洁化,导致很多按钮也由以前的文本按钮变成了图标按钮,但图标按钮有时由于个体理解差异,并不能直观的表示该按钮的真实作用,这个时候为它加上一个“title”属性用于说明按钮的功能是个提升用户体验的好办法。

<img>标签的类型

在上一节的课程中,我们讲到过“行内标签”和“块标签”,明白了多个“行内标签”在限定的屏幕宽度内是不会换行的,而“块标签”则不然,每个“块标签”之间都会自动进行换行。除此之外,他们间还有一个比较显著的区别,就是“行内标签”是不能进行大小(宽高)设置的,它的大小是由它里面的内容多少决定的。而“块标签”的大小是可以设置的,我们通过行内样式(文本标签不支持宽和高标签样式的设置)对一个“<span>”和一个“<p>”标签设置宽和高进行测试(为了看清效果,我给它们加上了边框,在这里大家暂时可以不予理会):

运行效果:

<img>标签和<span>标签这类标签不同,虽然它是个“行内标签(又称:内联元素、行内元素)”,但是它具有“行内块标签(又称:内联块元素、行内块元素)”的一些特性,这样类型的标签,既不会在限定宽度(浏览器宽度或父级元素设置的宽度)内产生换行,又能调整大小,而且<img>标签还有个特殊的地方,就是它能够通过“标签属性”来设置的自己的大小,即不需通过“行内样式”或其它方式的样式设置来调整大小(但后面CSS学习后,还是需要通过CSS来设置样式的)。

我们通过运行下面一段代码来观察显示的效果。

运行效果:

虽然图片的大小是可以调整的,但为了浏览器性能考虑,现在很多Web前端优化工程师针对提升Web性能的建议都是:一开始就使用已经在图像软件里裁切或调整好大小的图片,尽量避免在HTML或CSS代码中对图片的大小进行缩放调整。原因是,位图是按对应浏览器分辨率像素进行渲染的,一旦图像进行了缩放,那图像将不再是按照对应关系去进行渲染了,而是要在渲染的过程中不断地进行运算后再进行渲染,这对浏览器性能有一定程度地消耗,特别是在页面内图片数量非常多的时候。

思考

通过以上的代码示例,我们发现“width”和“height”的设置有什么样的关系?

<章节练习>

新建一个HTML文件,在页面内显示出五张同样路径的图片:

  1. 必须要具有“alt”和“title”属性
  2. 第一张图宽度大于高度,第二张图高度大于宽度,第三张图高度等于宽度,第四张图只设置宽度,第五张图只设置高度
  3. 第二张图和第四张图后进行换行
  4. 图片的宽度和高度均需要控制在“200~600”之间