CSS图像替换技术的几种方案介绍

所属分类: 网页制作 / CSS 阅读数: 318
收藏 0 赞 0 分享

图像替换技术非常强大且很快开始流行——若是没有它,我们甚至都无法建立禅意花园。该技术可以说是实现复杂、灵活CSS布局的一块最为重要基石。
由此可以见图像替换的重要。

也许你会说直接放一副图片或加上背景不行吗?为什么要写上文本有把文本隐藏呢?这不是多此一举吗?这样做确实能达到一样的视觉效果,但对搜索引擎是不利的。因为搜索引擎不能从这块地方的到任何内容,它就不知道这块地方要表达什么意思。而使用图像替换技术对搜索引擎就很友好。在引用《CSS禅意花园》中的一段:

图像替换技术使用display:none的本意并不只是想要替换文本,这样做还有一些更深层次的理由。实际上,若是没有任何提示或帮助,计算机就无法认出或读取图像中包含的文字。例如HTML中img元素,若是没有了alt属性,那么对于google等搜索引擎,以及辅助浏览设备(例如,屏幕阅读器即可阅读页面内容,并以声音的形式告诉浏览者)之类无法呈现图像的客户端来说,将变的豪无意义。而图像替换技术则保留了被替换元素中的原有文本,因此无论对任何客户而言,理解页面内容都不成问题。
直接使用图像或背景是传统表格布局使用的方法,而图像替换是CSS布局使用的方法。这又一次证明了CSS布局的网站更有优点。

Levin的方案:
Levin Alexander想出了一个绝妙的注意:不再将文本置放于span中,而是将其从span中移出来,将文本和span一起放在父元素中,然后使用这个空白的span覆盖文本,并将背景图像应用到span之上。如果一切顺利的话,屏幕阅读器即可正常访问这段文本,切也充分考虑并解决了浏览器禁用图像后空白页面的可访问性问题了。但新的问题也随之出现,那就是图像不能是透明的,否则用户将会看到下面的文本。切这种方案所需要的CSS代码极为冗长,让人难以理解。

HTML代码:

XML/HTML Code复制内容到剪贴板
  1. <h3 class="replace" id="myh1">And a dash of Thyme.<span></span></h3>  


CSS代码:

CSS Code复制内容到剪贴板
  1. .replace{   
  2. position:relative;   
  3. margin:0;   
  4. padding:0;   
  5. }   
  6. .replace span{   
  7. display:block;   
  8. position:absolute;   
  9. top:0;   
  10. left:0;   
  11. z-index:1;   
  12. }   
  13. #myh1,#myh1 span{   
  14. height:25px;   
  15. width:300px;   
  16. background:url(thyme.png);   
  17. }  

优点:屏幕阅读器可正常访问;解决浏览器禁用图片后空白页面的可访问性问题。

缺点:无法使用透明图像;CSS代码较为冗长。

Leahy和Langridge的方案:
Seamus Leahy和Stuart Langridge均独立地发现了这种方法。该方法让我们不必再添加那些多余的<span>标签,且在保证屏幕阅读器可以正常阅读文本的同时,也能在页面中隐藏元素中的内容。

HTML代码:

XML/HTML Code复制内容到剪贴板
  1. <h3 id="header">I like cola.</h3>  

CSS代码:

CSS Code复制内容到剪贴板
  1. #header{   
  2. padding:25px 0 0 0;   
  3. overflow:hidden;   
  4. background:url(cola.gif) no-repeat;   
  5. height:0;   
  6. }  


优点:屏幕阅读器可正常访问,没有多余的<span>。

缺点:并没有解决浏览器禁用图象后空白页面的可访问性问题。

Fahrner的方案:
2003年3月,Douglas Bowman在他的网站Stopdesign上发布了一个技巧(www.stopdesign.com/articles/replace_text),让设计师能够用一张背景图像替代某元素中的文字,以期显出更美观的字体。为了表示对发明者Todd Fahrner的尊重,这个技巧随后也被叫做“Fahrner图像替换(Fahrner Image Replacement,FIR)”。该技巧实现非常简单:用span将元素中的文本包围起来,然后通过应用CSS样式隐藏这个span中的文本,最后将背景图像应用到该元素之上即可。例如,对于下面的这一段HTML标记:

XML/HTML Code复制内容到剪贴板
  1. <h1 id="pageHeader"><span>css Zen Garden</span></h1>  


我们可以使用下面的这段CSS容易地实现图像替换:

CSS Code复制内容到剪贴板
  1. #pageHeader{   
  2. background:url(lemonfresh.gif) top left no-repeat;   
  3. width:400px;   
  4. height:20px;   
  5. }   
  6. #pageHeader span{   
  7. display:none;   
  8. }  

通过使用CSS的display:none或visibility:hidden,所有在#pageHeader元素中的span元素都被隐藏起来。Hellsing同时使用了上述两种CSS设定——但它们的效果确实一致的。图像替换技术非常强大且很快开始流行——若是没有它,我们甚至都无法建立禅意花园。该技术可以说是实现复杂、灵活CSS布局的一块最为重要基石。

Rundle的方案:
设计师Mike Rundle提出了一中使用负text-indent属性值的方法,将文本推到屏幕的左边缘之外,代码简洁优雅。

HTML代码:

XML/HTML Code复制内容到剪贴板
  1. <h3 id="header">Apple pie with cheddar?!</h3>  


CSS代码:

CSS Code复制内容到剪贴板
  1. #header{   
  2. text-indent:-5000px;   
  3. background:url(sample-image.gif) no-repeat;   
  4. height:25px;   
  5. }  

优点:屏幕阅读器可正常访问;没有多余的<span>;简洁优雅的CSS。

缺点:并没有解决浏览器禁用图像后空白页面的可访问性问题。

更多精彩内容其他人还在看

CSS3实现背景透明文字不透明的示例代码

这篇文章主要介绍了CSS3实现背景透明文字不透明的示例代码的相关资料,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

浅谈CSS中的尺寸单位

这篇文章主要介绍了浅谈CSS中的尺寸单位的相关资料,浏览器的兼容性越来越好,移动端基本是清一色的webkit,经常会用到css的不同尺寸/长度单位,这里做个整理。感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

CSS中有些属性的前面会加上“*”或“_”所代表的意思

这篇文章主要介绍了CSS中有些属性的前面会加上“*”或“_”所代表的意思,需要的朋友可以参考下
收藏 0 赞 0 分享

CSS 设置滚动条样式的实例代码

这篇文章主要介绍了CSS 设置滚动条样式的实例代码,非常不错,具有一定的参考借鉴价值,需要的朋友参考下吧
收藏 0 赞 0 分享

纯CSS制作各种各样的网页图标(三角形、暂停按钮、下载箭头、加号等)

这篇文章主要介绍了纯CSS制作各种各样的网页图标(三角形、暂停按钮、下载箭头、加号等)的相关资料,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

纯css实现多级折叠菜单折叠树效果

这篇文章主要介绍了纯css实现多级折叠菜单折叠树效果,运用checkbox的checked值来判断下级栏目是否展开,通过css3选择器提供的checked伪类来实现此效果,感兴趣的朋友参考下吧
收藏 0 赞 0 分享

CSS Grid 网格布局全解析

这篇文章主要介绍了CSS Grid 网格布局全解析的相关资料,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

css flex 弹性布局详解

这篇文章主要介绍了css flex 弹性布局详解的相关资料,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

CSS3 二级导航菜单的制作的示例

这篇文章主要介绍了CSS3 二级导航的制作的示例的相关资料,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

使用css禁用input、checkbox、select等html控件实现disable效果

这篇文章主要介绍了使用css禁用input、checkbox、select等html控件实现disable效果,需要的朋友可以参考下
收藏 0 赞 0 分享
查看更多