在什么情况下,与IMG
CSS相对,使用HTML 标签显示图像更合适,background-image
反之亦然?
因素可能包括可访问性,浏览器支持,动态内容或任何类型的技术限制或可用性原则。
在什么情况下,与IMG
CSS相对,使用HTML 标签显示图像更合适,background-image
反之亦然?
因素可能包括可访问性,浏览器支持,动态内容或任何类型的技术限制或可用性原则。
Answers:
IMG
,如果你打算让人们打印您的网页,你想被默认包含在图像。— JayTeeIMG
(带有alt
文本)。这确保了可以在所有用户代理(包括屏幕阅读器)中传达图像的含义。IMG
如果图像是徽标,图表或人物(真实人物,而不是摄影人物)等内容的一部分,请使用加号alt属性。— sanchothefatIMG
,如果你依赖于浏览器的缩放比例,以文字的大小呈现图像。IMG
了在IE6多的重叠影像。IMG
与a配合使用z-index
以拉伸背景图像以填充其整个窗口。img
代替background-image
可大大提高背景动画的性能。background-image
,如果你打算让人们打印您的网页,你不想被默认包含的图像。— JayTeebackground-image
,如果你需要提高下载时间,与CSS的精灵。background-image
,如果你需要对图像的仅一部分是可见的,与CSS的精灵。background-image
与background-size:cover
拉伸背景图像以填充其整个窗口。<div class="my-css-page-styles" style="background-image:url(blah.png);"></div>
这样,您就可以在CSS样式表中对其进行样式设置,但是如果背景图像比样式更多地是内容问题,那么您仍在从HTML方面进行编辑。
对我来说这是一个黑白决定。如果图像是徽标,图表或人物(真实人物,而不是摄影人物)之类内容的一部分,请使用<img />
标签加alt属性。对于其他所有内容,都有CSS背景图片。
另一个使用CSS背景图片的时间是在对文本进行图片替换时,例如 段落/标题。
我很惊讶还没有人提到:CSS过渡。
您可以本地转换div
的背景图片:
#some_div {
background-image:url(image_1.jpg);
-webkit-transition:background-image 0.5s;
/* Other vendor-prefixed transition properties */
transition:background-image 0.5s;
}
#some_div:hover {
background-image:url(image_2.jpg);
}
这样可以保存任何一种JavaScript或jQuery动画来淡化<img/>
的src
。
有关MDN过渡的更多信息。
#some_div { transition: opacity 0.5s; }
、 #some_div:hover #top_img { opacity: 0; }
默认情况下,浏览器并非总是设置为打印背景图像。如果您打算让人们打印您的页面:)
如果您将CSS放在外部文件中,那么将背景上经常使用的图像(例如标头图像)显示为背景图像通常会很方便,因为这样您以后便可以灵活地更改图像。
例如,假设您具有以下HTML:
<div id="headerImage"></div>
...和CSS:
#headerImage {
width: 200px;
height: 100px;
background: url(Images/headerImage.png) no-repeat;
}
几天后,您更改图像的位置。您所要做的就是更新CSS:
#headerImage {
width: 200px;
height: 100px;
background: url(../resources/images/headerImage.png) no-repeat;
}
否则,您必须在每个HTML文件中更新src
相应<img>
标记的属性(假设您没有使用服务器端脚本语言或CMS来自动执行该过程)。
如果您不希望用户保存图像(尽管我从来不需要这样做),则背景图像也很有用。
与sanchothefat的答案大致相同,但从不同的方面来看。我总是问自己:如果我要从网站上完全删除样式表,其余元素仅属于内容吗?如果是这样,我做得很好。
我还要添加另外两个参数:
如果需要调整图像大小,则使用img标签是不错的选择。例如,如果原始图像是100px x 100 px,而您希望它是80px x 80px,则可以设置img标签的CSS宽度和高度。我不知道使用背景图像执行此操作的任何好方法。编辑:现在也可以使用CSS3属性使用背景图像来完成。background-size
当您需要在精灵之间进行动态切换时,使用背景图片非常有用。例如,如果您有一个按钮图像,并且希望在光标悬停在元素上时显示单独的图像,则可以使用同时包含普通和悬停精灵的背景图像,并动态更改背景位置。
background-size: 80px 80px;
使用<IMG>标记的另一个好处与SEO有关-即,您可以在image标记的ALT属性中提供有关图像的其他信息,而在通过CSS指定图像时无法提供此类信息,因此如果只有图像文件名可能被搜索引擎索引。相对于CSS方法,ALT属性无疑为<IMG>标签提供了SEO优势。这就是为什么我认为最好使用<IMG>标签在图像搜索结果(例如Google Image Search)中指定要排名良好的图像。
前景= img。
背景= CSS背景。
background-image
还应使用其他几种方案:
img
,则图像将从圆角漏出。img { border-radius: 10px; }
border-radius
。
如果外观或设计版本多种,请使用CSS背景图片。Javascript可用于动态更改元素的类,这将迫使它呈现不同的图像。带有IMG标签,可能会更棘手。
这是一个技术考虑:图像会动态生成吗?<img>
与尝试动态编辑CSS属性相比,用HTML 生成标签通常要容易得多。
图像的大小呢?如果使用img标签,则浏览器会缩放图像。如果我使用CSS背景,浏览器只会从较大的图像中切出一块。
IMG
首先加载src
是因为html是在html文件本身中,而在background-image
样式表中提到了源代码,因此图像在加载样式表之后加载,从而延迟了网页的加载。
background-image
在一段时间后刷新CSS :如果您打开了多个标签页,则一段时间后返回到标签页时,CSS背景会空白一段时间。
还要注意,大多数搜索引擎蜘蛛不会为CSS背景图像编制索引,因此背景图像将被忽略,您将无法从搜索引擎获得任何流量(总之没有SEO优势)。
如果使用标签定义的所有图像都被索引(除非手动排除),并且如果它们的标题/替代属性和文件名得到了适当的优化(可以输入某些关键词),则可以带来来自搜索引擎的访问量。